摘要: 任合芯片、处理器,只有将程序烧录进去才会正常工作,FPGA也不例外,只不过我们通常称之为“配置”,不同的下载方式就有不同的对应的配置模式。从不同的角度分析,可以得到不同的划分形式,如从主从关系上分,则有主模式、从模式。如果从一次传输数据的位宽上分析,则有串行模式、和并行模式。(另外还有JTAG模式),模式的选择是由FPGA上的M0、M1、M2完成。因此,可以组合出多种不同的模式,如主串行模式、主并模式、从串模式、从并模式。其中,区分主与从的关键在于FPGA的时钟来源。(1) 主串模式(2) 从串模式(3) 主并模式(4) 从并模式(5) JTAG模式当然,随着工艺水平的不断发展,下载模式也有了 阅读全文
posted @ 2013-10-03 20:52 dudu1990 阅读(1954) 评论(0) 推荐(0) 编辑
摘要: u-boot启动内核,内核启动应用程序。第1个应用程序就是init。BusyBox就是许多命令的集合如ls、cd等。你可以使用如下命令方式来验证还有init也是busybox的链接init程序: 0) 打开/dev/console。标准输入标准输出标准错误 1)执行第一个应用程序init(要么是命令行参数指定uboot参数init = linuxrc 要么是/sbin/init) 2)读取配置文件-inittab(指定后续运行的应用程序) 3)解析配置文件 4)根据配置文件启动执行用户的程序配置文件inittab文件(/etc/inittab)格式:::id=>/dev/id:用作终端, 阅读全文
posted @ 2013-03-10 22:29 dudu1990 阅读(183) 评论(0) 推荐(0) 编辑
摘要: 首先,需要明白驱动程序的工作流程。 正常我们在操作设备时的顺序是这样的。(1)在应用层,直接通过open、read、或者说是write等函数。(2)这些函数都是在C库中实现的,可以肯定的是C库中对其反应是发生异常SWI,触发异常swi val。根据val的不同进入不同的异常处理。(3)进入驱动函数,内核空间() 然后,需要明白设备如何告知linux内核?即驱动程序的工作流程:1)定义一个file_operation结构体 2)注册(主设备号,名字,file_operation)。就是将file_operation放到file_operation字符数组的主设备号项中。注册函数有regi... 阅读全文
posted @ 2013-03-10 22:24 dudu1990 阅读(307) 评论(0) 推荐(0) 编辑
摘要: 第三章 文件操作3.1.1 目录文件,除了本身包含的内容以外,它还会有一个名字和一些属性,即“管理信息”,包括文件创建/修改日期和它的访问权限。这些属性被保存在文件inode(节点)中,它是一文件系统中的一个特殊的数据块,它同时还包含文件长度和文件在磁盘上的存放位置。目录是用于保存其他文件的节点编号和名字的文件。目录文件中的每个数据项都是指向某个文件节点的链接,删除文件名就等于删除与之对应的链接。删除一个文件时,实质旧删除了该文件对应的目录项,同时指向该文件的链接数减1。该文件 中的数据可能仍然能够通过其他指向同一个文件的链接访问到。如果指向某个文件的链接数(即ls-l命令的输出中跟在访问权限 阅读全文
posted @ 2012-12-21 22:10 dudu1990 阅读(173) 评论(0) 推荐(0) 编辑
摘要: 数据帧发送时,CC2420自动在数据包的开始处加上前导码和帧起始分隔符在数据包末尾加上CRC检验。CC2420处于接收状态下,它开始接收新的一帧数据当它检测到SFD和前导码时。从这张图可以看到,CC2420并没有完全实现IEEE802.15.4协议,只是完成了802.15.4的无线收发模块。 阅读全文
posted @ 2012-12-17 16:55 dudu1990 阅读(199) 评论(0) 推荐(0) 编辑
摘要: 写在前面:本实验所有代码都是基于一个已经移植好的平台代码,本人只是做了一些分析和研究罢了。基础实验一 LED 实验首先APP层组件即BlinkM.nc代码中使用的Leds接口,然后通过观察相应的配件组件BlinkC.nc可以看到它将Leds接口链接到了一个LedsC组件中(位于/opt/tinyos-2.x/tos/system中,通过后缀C可以知道这是个配件)。 /********************************************************************** 从这里可以看出来,无论你移植到什么系统中,为了减少你的代码量,在写makefile脚本时 阅读全文
posted @ 2012-12-15 10:02 dudu1990 阅读(1265) 评论(1) 推荐(0) 编辑
摘要: 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 阅读(974) 评论(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 阅读(321) 评论(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 阅读(547) 评论(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 阅读(250) 评论(0) 推荐(0) 编辑