- 3
- 0
- 约4.86千字
- 约 10页
- 2018-09-11 发布于福建
- 举报
无线抄表PDA射频模块驱动程序设计与实现
无线抄表PDA射频模块驱动程序设计与实现
摘要:文章基于arm9TDMI 微处理器,Linux 2.4 内核无线抄表PDA,根据嵌入式系统驱动程序的开发步骤并结合Linux下中断驱动程序的开发模型,实现了无线抄表PDA(personal digital assistant)上射频芯片CC2420驱动程序的设计,成功得完成了无线抄表PDA与无线传感器网络(WSN)中节点信息的交互。
关键词:Linux内核;个人数字助理(PDA);CC2420;无线传感器网络(WSN)
中图分类号:TP311.11文献标识码:A文章编号:1006-8937(2010)12-0009-02
1相关硬件
1.1 CC2420无线通讯模块
CC2420是TI-Chipcon公司推出的首款符合2.4 GHz IEEE 802.15.4 标准的射频收发器。它是第一款适用于无线传感器网络产品的RF器件。CC2420的选择性和敏感性指数超过了IEEE 802.15.4标准的要求,可确保短距离通讯的有效性和可靠性。利用此芯片开发的无线通讯设备支持数据传输率达到250 kb/s, 可以实现多点对多点的快速组网。其MAC层和物理层协议都符合802.15.4规范,工作于免授权的2.4 GHz频段。利用此芯片开发的短距离射频传输系统成本低,功耗小,适用于电池长期供电。
1.2CC2420基本结构和接口介绍
CC2420内部含有368字节的RAM,被分为3个bank,其中,bank0大小为128个字节的,用于存放待发送的数据,bank1小为128个字节,用于存放CC2420接收到的数据,bank2大小为112个字节,用于存储CC2420的16位网络地址、64位IEEE地址及密钥等一些信息。
CC2420内部还有50个寄存器,其中状态和配置寄存器33个,用于设置CC2420的工作模式,命令寄存器15个,对不同的命令寄存器写入特定格式的命令字,就会执行相应的动作,其余2个是用来访问TXFIFO和RXFIFO的8位数据寄存器,可以通过这两个寄存器读写TXFIFO和RXFIFO中的数据。
CC2420的CSn、SCLK、SI和SO分别与ARM处理器一路SPI接口对应引脚相连,SFD、CCA和FIFO与ARM 处理器的通用I/O口相连。对于FIFOP引脚,将FIFOP连接到ARM处理器的一个外部中断引脚上,当CC2420接收到一个完整的数据包或者接收的数据大小超出门限值时,CC2420会触发ARM处理器的中断,在中断处理程序中对接收到的数据作进一步的处理。采用这种连接方式,CC2420的驱动程序实现相对繁琐,但是效率高,且比较稳定可靠,节省CPU资源。
1.3PDA的硬件体系
首先介绍一下,整个PDA的硬件体系结构。PDA主要包括五大部分:中央处理器,用户接口,调试显示接口,存储模块,无线通信模块CC2420部分。其中,无线通信模块cc2420则是无线抄表PDA与众不同的部分。由于CC2420芯片是Chipcon公司刚刚针对无线传感器业务推出不久的芯片,尤其在Linux下的驱动程序就需要我们自己开发,而这正是文章的主要内容。
2Linux下驱动程序模型
为了在中断执行时间尽可能短和中断处理需完成大量工作之间找到一个平衡点,Linux将中断处理程序分解为两个半部:顶半部(上半部,top half)和底半部(下半部,bottom half)。顶半部完成尽可能少的比较紧急的功能,它往往只是比较简单地读取寄存器中的中断状态并清除中断标志后就进行“登记中断”的工作。
现在,中断处理工作的重心就落在了底半部的头上,它来完成中断事件的绝大多数任务。底半部几乎做了中断处理程序所有的事情,而且可以被新的中断打断,这也是底半部和顶半部最大的不同,因为顶半部往往被设计成不可中断。
2.1字符设备驱动模块加载
CC2420_init主要完成CC2420的初始化工作。但是在对硬件进行初始化之前,必须解决如何操作ARM CPU I/O端口的问题。在ARM9体系结构下,存在MMU,并且I/O端口地址和物理内存地址统一管理,所以除了系统启动时内存管理单元被启动之前执行的一段代码之外,Linux内核和应用程序都是运行在虚拟内存模式下的,所以对I/O端口的访问必须通过虚拟地址。这里主要用到一个系统函数ioremap(),这是一个宏定义,通过这个函数实现物理地址到虚拟地址的映射。
static int __init cc2420_init(void)。而在该函数中,有几个关键的子函数如下:
register_chrdev (SPI_MAJOR, DEVICE_NAME, cc2420_fops);
原创力文档

文档评论(0)