摘要: TinyOS的编译系统采用GNUMake,位于support/make文件中,包含各个平台的配置文件“*.target”和在这个平台上建立应用程序的“*.rules”文件。可以分为两个部分:使用nesc编译的公用部分和针对具体平台部分。简略步骤如下(0)TinyOS应用程序由nesC预编译器编译译形成一个“*.c”文件。(中间都会生成preHandler.pl文件)nesC预编译器由ncc和nescc两个工具组成(都有PERL语言编写)。(1)将这个文件传递给合适的编译器或者工具,也就是针对具体硬件平台的编译器接受。通常有GCC,它适合于telos,mica,intlmote2系列。但是有一些 阅读全文
posted @ 2012-09-07 16:45 dudu1990 阅读(976) 评论(0) 推荐(0) 编辑
摘要: dATa: 固定指前面0x00-0x7f的128个RAM,可以用acc直接读写的,速度最快,生成的代码也最小。idATa:固定指前面0x00-0xff的256个RAM,其中前128和dATa的128完全相同,只是因为访问的方式不同。idATa是用类似C中的指针方式访问的。汇编中的语句为:mox ACC,@Rx.(不重要的补充:c中idATa做指针式的访问效果很好)xdATa: 外部扩展RAM,一般指外部0x0000-0xffff空间,用DPTR访问。pdATa: 外部扩展RAM的低256个字节,地址出现在A0-A7的上时读写,用movxACC,@Rx读写。这个比较特殊,而且C51好象有对此BU 阅读全文
posted @ 2012-09-07 16:25 dudu1990 阅读(345) 评论(0) 推荐(0) 编辑
摘要: 在CC2530S上移植TinyOS,遇到的首个问题应当是存储器映射。如果从CC2430的基础上修改移植到CC2530,那么必定要考虑存储器的映射问题。图2-1为CC2530 XDATA存储空间。如果直接使用原startup.a51作为CC2530的启动文件,虽然程序可以运行,但是,不可避免的会出现错误,造成这些错误原因绝大多数是因为内存区域没有清零。下面给出两个已知的错误。问题1:移植CC2420(其实已经移植到了CC2520上,只是名字没有改)协议栈,当全部移植工作结束后,运行,会发现程序在AMQueueImplP.nc文件判断语句if (queue[clientId].msg != NUL 阅读全文
posted @ 2012-09-07 15:09 dudu1990 阅读(552) 评论(0) 推荐(0) 编辑
摘要: 网上关于TinyOS在CC2430上移植的文章到处都是,http://www.tinyos8051wg.net 8051工作组提供了最新版本的TinyOS8051wg-0.1pre4.tgz 软件包。但是,我个人觉得,这个资源包仅仅是实现了TinyOS能够运行于CC2430这样的以8051为内核的SOC上,只是告诉世人TinyOS能够 支持当前最流行的无线单片机。。。比如,USART,只是在HalCC2530SimpleUartP.nc文件中实现了最简单的串口收发功能,不知道这 样的系统能够应用于哪些场合。想要真正意义上的实现TinyOS对CC2530的完全支持,那么,就应当充分体现TinyO 阅读全文
posted @ 2012-09-07 08:57 dudu1990 阅读(259) 评论(0) 推荐(0) 编辑
摘要: 0问:为什么选择ARM处理器作为嵌入式处理器?答:原因之一是,ARM芯片具有大量的寄存器。由于ARM芯片采用RISC体系结构,其指令长度固定、格式规整、基本寻址方式简单。1移植操作系统或者其它开发时,不能为达到目的而不论它的应用价值。例如,我们将tinyos这一个专门为传感器网络而做的操作系统移植到CC2430芯片后,这只能说明TinyOS能够应用在一款比较成熟的芯片上,不能说明其它任何问题也不知道能应用在什么场合下,只有我们在写应用程序的时候去改变以往的顺序结构编程思想,采用TinyOS本身的特点写,然后去分析,这样才有意义。2xdata 指单片机里的Flash存取器,Flash相对单片机里 阅读全文
posted @ 2012-09-07 08:52 dudu1990 阅读(351) 评论(0) 推荐(0) 编辑
摘要: zigbee的低功耗包括两个方面:物理层和MAC层1)物理层首先是IEEE802.15.4的目标是为在个人操作空间,内相互通信的无线通信设备提供通信标准,POS一般是指用户附近10米左右的空间范围,在这个范围内用户可以是固定的,也可以是移动的。正因为它的工作范围小,所以需要的发射功率就很小。注意,发射功率是随着距离的增长呈指数级增长,而发射功率是整个无线节点耗电量最大的。而发射功率从根本上决定了这是一个低功耗的协议。2)MAC层MAC层控制着节点接入无线信道的方法,发起网络,关联等一些核心操作都是MAC层完成的,而且正是因为有个IEEE802.15.4的MAC层,才更决定了它是一个功耗协议。 阅读全文
posted @ 2012-09-07 08:45 dudu1990 阅读(656) 评论(0) 推荐(0) 编辑
摘要: 电池的电量不同,其端电压是不一样的,电量越少,电压越低。所以电池的电压都有一个范围,即充满电到可以使该用电器正常工作的下限。比如手机用的锂电池,工作电压范围是3.7-4.2V假设手机电量分三格:测到的电池电压为4.1-4.2V显示满格测到的电池电压为3.9-4.1V时显示两格。电池电压3.8-3.9V时,一格满。电池电压3.7-3.8V时,空的,电量报警。检测电路的话有2种方法:1)用分立无件自己搭 2)电池管理IC。后者的优点是工作稳定、精度高,缺点是成本高。方法1)自己搭最简单的就是先用串联电阻网络分压,形成比较的电压值,其后是运放构成的电压比较电路,这样在不同的电压范围,各个运放的输.. 阅读全文
posted @ 2012-09-07 08:41 dudu1990 阅读(906) 评论(0) 推荐(0) 编辑