arm+linu开发平台软件需求规格说明书

上传人:s9****2 文档编号:487407588 上传时间:2023-05-06 格式:DOCX 页数:17 大小:60.33KB
返回 下载 相关 举报
arm+linu开发平台软件需求规格说明书_第1页
第1页 / 共17页
arm+linu开发平台软件需求规格说明书_第2页
第2页 / 共17页
arm+linu开发平台软件需求规格说明书_第3页
第3页 / 共17页
arm+linu开发平台软件需求规格说明书_第4页
第4页 / 共17页
arm+linu开发平台软件需求规格说明书_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《arm+linu开发平台软件需求规格说明书》由会员分享,可在线阅读,更多相关《arm+linu开发平台软件需求规格说明书(17页珍藏版)》请在金锄头文库上搜索。

1、文档编号:Arm+Linux 开发平台软件需求规格书单位:编制人:日期:校对:日期:审核:日期:批准:日期:修改记录目录1. 引言41.1. 编写目的41.2. 名词解析41.3. 参考资料42. 运行环境42.1. 硬件环境42.2. 软件环境43. 功能需求 43.1. 功能划分53.2. 功能描述53.2.153.2.264. 接口需求 114.1. 接口划分 114.2. 接口描述124.2.1124.2.2135. 性能需求 155.1. 稳定性155.2. 实时性155.3. 可扩展性155.4. 可维护性156. 运行需求156.1. 开机界面156.2. 即插即用157. 其他

2、需求161. 引言1.1. 编写目的为了能够使 arm+linux 平台外协合作方了解我们公司软件需求规格,按照计划完成该 arm+linux 平台的外协开发,为了能够协调好外协工作的顺利进行和需求规格的交流,特制 定并编写本平台软件需求规格书。1.2. 名词解析1.3. 参考资料arm+linux 平台研制要求2011 年 4 月 12 日2. 运行环境2.1. 硬件环境CPU: S3C2440,主频 400MHzRam: 64MByteNandFlash: 256MByte2.2. 软件环境Bootloader: UbootLinux 内核: Linux-2.6.32.2NandFlash

3、 文件系统: Yaffs2Rootfs 文件系统:3. 功能需求3.1. 功能划分该软件功能可以细分为以下4部分:A/D数据采集处理和D/A模拟量输出,外围接口 通信,数据存储,界面显示和操作,3.2. 功能描述3.2.1. A/D数据采集处理和D/A模拟量输出S3C2440与FPGA高速采集卡之间的接口为:CPCI接口。FPGA高速采集卡的功能是把输 入的-5V+5V模拟电平信号以200KSPS1MSPS的采样速率输入到A/D转换电路中。A/D转 换电路通过量化和编码把模拟信号转换成数字信号,然后S3C2440处理器把数字信号传送给 上层应用程序。所以首先要编写合理的符合业务需要的A/D驱动

4、程序。A/D驱动程序的主要功能是:打开和关闭A/D转换器以及对A/D转换器的转换结果进行 读取操作。打开、关闭、读取A/D转换器对应的底层操作函数依次为:static int adc_enable(int ch);static int adc_disbale();static int adc_read(int ch);A/D 驱动程序通过 I/O 控制函数顺序调用 adc_enable()、adc_read()、adc_disable() 这3个函数实现对模拟信号的采集、转换和输出。I/O控制函数的声明如下:ssize_t adc_ioctl( struct inode* inode, str

5、uct file* file, unsigned int cmd, unsigned ling arg)接着完善A/D驱动程序的文件操作结构,其文件操作结构如下:static struct file_operations adc_opsread:adc_read,write: adc_write,ioctl: adc_ioctl,open:adc_open,release:adc_release,然后编写 A/D 转换器驱动程序的初始化函数 ,其函数声明如下: static int _init HW_AD_init(void);函数内部调用了内核函数devfs_register_chardev

6、()来注册A/D转换 设备和devfs_register()来获得A/D转换设备的操作句柄。然后编写A/D驱动程序的模块加载和卸载函数。Static int _init AD_ini t(void);/内部调用初始化函数来完成模块加载Static void _exit cleanup_AD(void) ; /内部调用 devfs_unregister_chrdev()和 devfs_unregis ter()来完成模块卸载。上层用户应用程序在接收到A/D转换结果后,要进行以下操作:1.2.3.3.2.2. 外围接口通信该平台的外围接口包括:串口、网口、USB 口、按键接口、LVDS触摸屏显示接

7、口、GPI0 口、CPCI接口、CAN 口和I2C 口。目前,linux内核选用的是linux-2.6.32,而这个版本的 内核所有的驱动程序都支持热插拔。所以要求该平台所有的外围接口设备都应该支持热插 拔,以方便用户的使用。一个外围设备的hot plug调用过程如下:(1)用户插入或者安装上外围设备(2)总线报告新设备插入和读取PID信息(3)自动加载对应的驱动程序(4)调用/sbin/ho tplug脚本,传递环境变量(5)调用外围设备代理脚本/e tc/h ot plug/*.agen t(6)代理脚本/etc/hotplug/*.agent加载模块对应的驱动程序 下面依次介绍各个外围接

8、口的需求。串口串口类型包括3种:2路RS232接口,1路RS422或者RS485接口,所属种类为:异步传 输串行接口(UART)。这3种串口的波特率可设,设置范围为:2400bps115200bps。其中 1路RS232用于调试和下载,另一路和1路RS422或者RS485用于串口通信。RS485采用差分线传输数字信号时,两线间的电压差为+2V+6V时,认为是“1”,-2V -6V时,认为是“0”。RS485的实际传输距离为3000米,而RS232通常不能超过50米。异步串口的传输原理如下:其传输的数据都是以帧方式传输的,常用的帧结构为:1位 起始位,8位数据位,无奇偶校验位,1位停止位。在传输

9、开始前,传输线处于空闲状态, 连续送出“1”。当发送“0”时,表示传输开始,之后出现在总线上的都是二进制编码的数 据,传输完成后,利用1个停止位(逻辑1),使传输线回到空闲状态,然后发送方才可以 发送下一帧数据。在linux中,串口常被看做成中断设备(tty),终端设备的驱动程序分为3层, tty_core,tty_line_discipline,tty_driver。编写串口驱动程序的步骤如下:1. 定义各种宏,把实际的物理地址转化成虚拟地址。2. 实现串口的操作函数结构体(struet uart_ops;)中的各种函数。比如包括:阻 止发送函数、发送使能函数、阻止接收函数、发送缓冲判空函数

10、、获取控制信息函 数、发送中断信号函数、接收中断函数、发送中断函数、出错中断函数、初始化函 数、关闭串口函数、波特率改变函数、返回端口类型函数、设置端口类型函数等。3. 注册串口驱动程序,一个端口对应的数据结构就是uart_port,其中有串口所有的物 理特性,所以,驱动程序向系统注册一个端口的过程就是注册uart_port数据结构 的过程。网口网口类型为:以太网接口,传输速率为10M/100M,工作模式为点对点连接的全双工传 输模式。共两路,一路用于调试和下载,另一路用于网络通信。以太网不是一种具体的网络,而只是一种技术规范,它采用的技术是:CSMA/CD,即载 波监听多路访问及冲突检测技术

11、。两包数据发送间隔最小为9.6ms(以lOMbit/s运行)。以太网的帧结构包括4种不同的格式,不过都具有8字节的前导字符,前导字符的作用 是使接收节点进行同步并做好接收数据帧的准备,其中前7 个字节称为前同步码,内容为 OxAA,最后一个字节称为帧起始标志服,内容为OxAB。以太网接口控制器包括MAC媒体访问层和PHY物理层芯片两部分,MAC集成在嵌入式CPU 芯片中,而PHY就是网络芯片,比如RTL8201BL。而如果嵌入式CPU芯片中没有集成,我们 可以通过使用Host Bus接口的以太网芯片来扩展网络接口,这样的芯片有:RTL8019。网络驱动程序的结构如下:网络协议接口层网络设备接口

12、层设备驱动功能层网络媒介层在设计网络驱动程序时,最主要的工作就是完成设备驱动功能层。网络设备初始化的工作流程:首先通过检测物理设备的硬件特征来判断网络物理设备是 否存在,如果存在,再对设备进行资源配置。当检测设备和资源配置的工作完成之后,就构 造设备的device数据结构,用检测到的数值来对device中的变量初始化,最后向linux 内核注册该设备并申请内存空间,这个注册函数函数定义为:int register_netdevice( struct net_device *dev ),其中,dev 是指向网络设备的指针。所 谓向内核注册的过程就是把 dev 所指向的设备的指针添加到 linux

13、 系统中网络设备链表(dev_base)的最后,在设备注册成功后,程序调用device结构体中的init()函数,初始 化该网络设备。数据包发送的工作流程:在设备初始化成功后,通过device结构体中的open()函数指 针调用网络设备的打开函数打开设备,接着通过device结构体中的建立硬件包头函数指针 hard_header来建立硬件帧头信息,最后通过协议接口层函数 dev_queue_xmit()来调用 device结构体中的hard_s tar t_ xmi t()函数指针,完成数据包的发送。函数 hard_s tart_ xmi t()将把存放在套接字缓冲区中的数据发送到物理设备上。

14、数据包接收的工作流程:当网络物理设备上有数据到达时,就触发硬件中断,产生中断 信号,网络设备驱功能层就能够在中断向量表中根据中断号调用相应的中断处理程序,即数 据包接收程序来处理数据包的接收。然后,网络协议接口层调用netif_rx函数,把接收到 的数据包传输到网络协议的上层进行处理。比如 NE2000 网卡的数据接收过程为:先由ne_probe ()函数完成网络接口的初始化,利用在这个函数中的ne_probel()函数或者ne_probe_isapnp()函数得到中断号,根据中断号进入中断服务处理函数ei_interrupt(), 通过ei_interrupt()函数从8390的接收缓冲区中

15、获得数据,并组合成sk_buff结构,再通 过netif_rx ()函数将接收到的数据存放在系统的接收队列之中。嵌入式linux网络各层之间的数据传输都是通过sk_buff。每个sk_buff包括一些控制 方法和一块数据缓冲区,多个sk_buff组成双向链表。USB 口USB接口类型为:USB1.1,传输速率为1.5Mbit/s12Mbit/s。2路USB主机,用于USB 接口通信,1路USB从机,用于调试。这两路hostusb, 路用于连接usb鼠标,一路用于 连接u盘。所以一路要编写usb鼠标驱动程序,遵循HID协议标准,一路要编写u盘驱动程 序,遵循usb mass storage协议规范。Usb驱动程序共分为3种:主机端设备驱动程序、 主机控制器驱动程序和设备端驱动程序。主机端设备驱动程序:嵌入式内核已经为这部分驱动程序提供了很好的编程接口,驱动 开发工程师只需要按照要求建立程序框架,通过调用操作系统提供的API函数就可以完成对 USB外设的特定访问。主机控制器驱动程序:如果想让设备具有USB host功能,那么在设备中就需要选

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号