CC2530的TinyOS移植之windows篇

CC2530 BasicRF点对点通信原理与实战指南 Zigbee底层通信始于物理层与MAC层的协同工作,其核心在于射频信号的可靠收发与地址匹配机制。BasicRF作为TI官方提供的轻量级封装库,精准作用于IEEE 802.15.4标准的PHY+MAC交集层,屏蔽寄存器操作复杂性的同时保留完全可调试性,成为理解无线通信时序、RSSI衰减、CSMA/CA机制和ACK应答逻辑的理想教学载体。它不依赖协调器、无需组网协议,以16位短地址和预设信道实现直连,广泛应用于嵌入式教学实验、工业传感器单跳验证及低资源节点开发。本文围绕CC2530硬件特性与BasicRF AP 阅读详情

CC2530的TinyOS移植之windows篇

转自 http://blog.youkuaiyun.com/qy8087/article/details/8759203


对于TinyOS略有使用经验的都知道,TinyOS的开发者都是在linux环境下进行开发的,用到了大量linux中的小工具程序,如perl,python,make,awk等等。 然而除了这些开发者,我们大多普通人日常使用还是以windows为主。在这种情况下,为了使用TinyOS,就不得不请出cygwin了。 cygwin就为windows提供了一个linux环境,具有绝大多数常用的linux工具。这样一来,在cygwin中开发TinyOS程序基本和在linux下一般无二。


首先,我们就先来安装cygwin: 从cygwin.com下载一个名为setup.exe的安装程序,打开,选一选安装路径,一路点下一步就会完成安装(中间要下载一堆安装包,要耐心等待)。

装完后,桌面上多出一个cygwin图标,打开即可进行cygwin的命令行,所有操作都在这个命令行中完成。 cygwin默认安装的工具比较少,连gcc4,perl,python,make,rpm都没有,所以去重新打开setup.exe,在select packages页中将gcc4,perl,python,make,rpm,libmpfr4标记为安装。然后下一步下一步...


现在,cygwin环境已经比较完整,接着就该配置tinyos环境了。 TinyOS环境的配置在官方文档中有很详细的描述,但是只针对cc2530的话可以将配置过程简化很多:

放到某个目录下,比如c盘根目录下。然后,在cygwin中切换到该目录,安装这两个包:

 cd /cygdrive/c
 rpm -ivh nesc-1.3.1-1.cygwin.i386.rpm
 rpm -ivh tinyos-tools-1.4.0-3.cygwin.i386.rpm

这样tinyos环境就配置好,比你想象中的要简单吧!

接着就去下载cc2530的tinyos移植的源代码tinyv6,开发者把cc2530的tinyos移植和一个ipv6协议栈一块发布了,所以你甚至可以在cc2530上用tinyos跑ipv6!

源代码在这里下载:http://code.google.com/p/tinyv6/

解压下载的源码包:

 tar xvf tinyv6-x.x.tar.bz2

接着执行一个脚本自动设置一些环境变量:

cd tinyv6-x.x
source tinyv6.sh

好了,到此为止,所有的环境都配置完成,可以编译TinyOS程序了。先来Blink一个尝尝鲜:

 cd apps/Blink
 make cc2530

编译成功!得到build/cc2530/app-iar.c,tinyos的任务完成,接下来就得IAR出马了。


既然给cc2530写程序,IAR总是得有的吧。我用的for 8051的7.51A,新建个空的project,找到工程属性设置对话框,

  • "General options->device选为"cc2530"
  • "General options->data model选为"large"
  • General options->Calling convetion"设为"XDATA stack reentrant"
  • "General options->Stack/Heap->XDATA" 设为0x400。
  • "C/C++ compiler->optimizations"中将level设为High

接下来编译,写入设备,这几步自然不在话下。 如果你在CC2530的P0.0,P0.1,P0.2引脚接了三个LED灯的话,你就可以看到它们欢快地闪起来了吧。

tinyos-2.1.0移植到cc2530适用教程 自己亲身试验,结果正确,非常适合初学者学习移植tinyos到cc2530! 立即下载

相关推荐

CC2530-Tinyos-code.zip

TinyOS中CC2530相关代码,适合新入坑者学习源码

Ubuntu 下TinyOS在CC2530上移植之环境搭建

09年TI推出CC2530,直到现在也没有人把TinyOS移植到这款SOC上(可能有人已经移植成功了,只是比较低调而已)。之前把TinyOS移植到了MSP430F2618+CC2520+CC2591平台上,为了使我们项目组设计的平台能够相互兼容,顺便把TinyOS移植到CC2530上。 首先要做的工作就是编译环境的搭建,如果之前你已经使用了CC2430,那么环境搭建这块可以跳过。Ti...

云计算? 284

zigbeeCC2530官网的完整协议栈

zigbeeCC2530官网的完整协议栈 官方未改的,可以用于开发移植

CC2530平台上P2P通信的TinyOS编程

开发一个新的应用,发送节点能够通过两个不同类型的消息分别控制接收节点中LED灯的开和关,并且用串口输出两个消息到串口调试助手。以下述顺序完成这个新应用的开发。 首先实现周期性发送消息控制另一个节点上的LED灯; 然后在上述基础上编程在串口调试助手上输出接收到的消息 ; 增加按键功能,即能够通过节点上的按键控制另个节点的LED灯。 第一问 模块主键 module TestP2PM {...

徐伯莱 837

TinyOS下用NESC写的点对点无线发射

主要是CC2530+TinyOS的平台下面实现无线点对点发射。上层的Nesc程序

告别手动点鼠标:用Python脚本批量跑ADS版图仿真,效率提升10倍(附完整代码)

本文详细介绍了如何利用Python脚本自动化ADS版图仿真流程,显著提升射频工程师的工作效率。通过调用ADS底层接口,实现参数化修改、批量任务调度和结果自动收集,解决了手动操作中的常见问题,如仿真不更新等。附完整代码,帮助开发者快速实现10倍效率提升。

weixin_42523543的博客 331

Zigbee Z‐STACK协议栈和TinyOS

ZigBee 和 Tinyos 关于ZigBee和TinyOS  ZigBee的基础是IEEE 802.15.4。但IEEE仅处理低级MAC层和物理层协议,因此Zigbee联盟扩展了IEEE,对其网络层协议和API进行了标准化,这就是Z‐STACK,Z‐STACK协议栈是TI公司研发,通过ZigBee联盟认证的免费协议栈,协议内部包括了WSN(无线传感器网络)的OS的模型,协议栈具有国

灵思致远Leansmall的博客 795

用Docker-Compose三节点部署生产级Doris集群:从配置文件到故障转移

本文详细介绍了如何使用Docker-Compose部署一个生产级的三节点Apache Doris集群。内容涵盖从核心架构理解、配置文件编写到集群初始化验证的全过程,并重点讲解了如何实现高可用、数据持久化、健康检查以及故障转移等生产级运维关键点,为中小团队提供了一种在容器化便利性与系统稳定性间取得平衡的可靠部署方案。

kkk56的博客 856

Zigbee Z‐STACK协议栈和TinyOS

ZigBee 和 Tinyos 关于ZigBee和TinyOS ZigBee的基础是IEEE 802.15.4。但IEEE仅处理低级MAC层和物理层协议,因此Zigbee联盟扩展了IEEE,对其网络层协议和API进行了标准化,这就是Z‐STACK,Z‐STACK协议栈是TI公司研发,通过ZigBee联盟认证的免费协议栈,协议内部包括了WSN(无线传感器网络)的O...

weixin_34080903的博客 285

SICK LMS111激光雷达数据解析实战:从原始帧到三维点云的完整流程

本文详细解析了SICK LMS111激光雷达从原始数据帧到三维点云的完整处理流程,包括数据帧结构解析、坐标转换、点云可视化及性能优化技巧。通过实战代码示例,展示了如何高效处理激光雷达数据,并应用于动态物体检测、地面分割等工业场景,为AGV和服务机器人开发者提供实用指南。

garlic的博客 769

在ZYNQMP上点亮800x480 LCD屏:从framebuffer到DRM框架的完整驱动移植实战

本文详细介绍了在ZYNQMP平台上点亮800x480 LCD屏的完整驱动移植实战,从framebuffer到DRM框架的技术实现。内容涵盖硬件配置、设备树设置、显示时序参数调试以及DRM驱动核心实现,帮助开发者快速掌握PetaLinux系统中的LCD驱动开发技巧。

weixin_33701294的博客 426

TinyOS在CC2530上移植之USART

网上关于TinyOS在CC2430上移植的文章到处都是,http://www.tinyos8051wg.net 8051工作组提供了最新版本的TinyOS8051wg-0.1pre4.tgz 软件包。但是,我个人觉得,这个资源包仅仅是实现了TinyOS能够运行于CC2430这

缤江数智技术专栏 4824

【网格生成】Gmsh快速入门教程 --1.图形化界面使用

初探 Gmsh软件的主界面如下图所示。通过点击菜单“File” -> "Open"可选择打开已经存在的几何模型或网格文件,初次使用可选择tutorial目录下的t1.geo文件。打开后效果如图所示,t1.geo描述的是一个长方体。 接下来依次尝试左侧菜单栏的功能:Geometry(几何)、Mesh(求解器)。Solver模块需依赖外置求解器,不在本文介绍范围内。 Geometry 该菜单下是与几何相关的功能,如新增一个点/面、体,移动一个体等,具体功能很多可以在后续使用中逐渐尝试学习。本文仅介绍几个

DJ_xiaoming的博客 1万+

CC2530与tinyos

http://blog.163.com/a_hui8/blog/#m=0

idea1____的博客 550

数字图像处理 基于matlab、opencv计算图像的梯度方向和梯度幅值

图像可以被视为标量场(即二维函数)。通过微分将标量场转换为矢量场。梯度是一个向量,描述了在x或y方向上移动时,图像变化的速度。我们使用导数来回答这样的问题,图像梯度的大小告诉图像变化的速度,而梯度的方向告诉图像变化最快的方向。因为梯度有方向和大小,所以将这些信息编码为向量是很自然的。该向量的长度提供了梯度的大小,而其方向提供了梯度方向。因为梯度在每个位置可能不同,所以我们在每个图像位置用不同的向量来表示它。

学以致用 知行合一 3202

揭秘LLM如何预测下一个词

Transformer结构的大语言模型(LLM)通过自回归训练学习预测下一个词汇,其核心能力源自权重矩阵的动态优化。自注意力层的Wq/Wk/Wv矩阵捕捉语义关联,前馈网络的W1/W2矩阵进行非线性特征提取,LM Head的W_{lm}矩阵将语义映射到词汇概率。训练过程中,这些矩阵通过反向传播不断调整,最终使模型能够根据上下文(如"我"→"爱")生成合理的后续词汇。这种基于矩阵变换的数学机制是LLM智能生成文本的本质原因。(150字)

ZhangJiqun&191cm&85kg 376

十二、CC2530系统时钟设置

CC2530系统时钟概述 系统时钟源:32MHz的外部晶振或16MHz内部RC振荡器。 32MHz外部晶振的启动时间对一些应用程序来说可能比较长,所以设备可以运行在16MHz的内部RC振荡器。系统上电默认是16MHZ的内部RC振荡器。 RC振荡器的功耗少于外部晶振,但是精度不如外部晶振高,因此,要使用RF收发器,必须使用32MHz晶体振荡器。 做Zigbee协议栈,做点对点BasicRF的数据传输都需要对晶振进行切换 但是已经帮我们做好了。。。。。。。 2.4G无线收发、串口通信是建议使用32MHz晶体振荡

younger_showtime的博客 6471

Win10 系统下VisualStudio2022 配置Open3D-0.18.0(C++)

Win10 系统下VisualStudio2022 配置Open3D-0.18.0

点云侠的博客 2655

在IAR中设置CC2530参数

1)General Option选项     在

sanqima的专栏 8321

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Optimizing CC2530 Z-Stack 3.0.2 Flash and RAM 翻译

点击左上角的“关注”,定期更新 Zigbee 最新资讯,总有你想要的信息! 大家的支持就是我分享技术的动力,希望大家需转载时能附上原作者的博客:https://blog.youkuaiyun.com/u012993936,谢谢。 --- End --- 你可能还想看: > 如何7天快速入门Zigbee? > 免费的Zigbee抓包神器!比Ubiqua还好用! 文章都看完了,随手点个赞吧~ ↓↓↓ ↓↓↓ ...

Jesse_嘉伟的专栏 1735

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

tinyos2.0安装指导

1) Java2jdk1.5.0(j2dsk)下载的网址:sccnc.onlinedown.net    安装完成后要设置环境变量,我安装的路径是C:\tinyos\j2sdk1.5.0,环境变量的设置如下: 右键->我的电脑->高级->环境变量:在系统变量中添加变量:JAVA_HOME,变量值:c:\tinyos\j2sdk1.5.0 变量CLASSPATH,变量值:.;C:\tinyos

gaomei2009的专栏 1622

aodv协议c语言实现,TinyOS在CC2530下的移植及AODV路由协议的实现

摘要:首先介绍了以TI的无线传感器网络芯片CC2530为核心部件的节点硬件实现,接着介绍TinyOS操作系统的运行机制及其在CC2530平台下的移植过程;并在此基础上以nesC语言实现了AODV路由协议,最后对系统进行组网测试,测试结果表明平台各功能正常运行并且实现AODV协议的基本功能。关键词:无线传感器网络;TinyOS;CC2530;AODV0 引言无线传感器网络(Wireless Sens...

weixin_29359133的博客 634

TinyOS for CC2530中startup.a51解读

在CC2530S上移植TinyOS,遇到的首个问题应当是存储器映射。如果从CC2430的基础上修改移植到CC2530,那么必定要考虑存储器的映射问题。 图2-1为CC2530 XDATA存储空间。如果直接使用原startup.a51作为CC2530的启动文件,虽然程序可以运

缤江数智技术专栏 4635
上一篇: CC2591和RFX2401C在zstack中的设置
下一篇: Z-Stack acknowledgements
獠
獠
博客等级 码龄16年 43粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值