ImageVerifierCode 换一换
格式:DOC , 页数:16 ,大小:157KB ,
资源ID:2783291      下载积分:20 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-2783291.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(arm linux开发平台软件需求规格说明书.doc)为本站会员(dzzj200808)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

arm linux开发平台软件需求规格说明书.doc

1、Arm+Linux 开发平台软件需求规格书第 1 页 共 16 页文档编号:Arm+Linux 开发平台软件需求规格书单 位: 编制人: 日期:校 对: 日期:审 核: 日期:批 准: 日期:Arm+Linux 开发平台软件需求规格书第 2 页 共 16 页修改记录日期 版本 描述 修改人Arm+Linux 开发平台软件需求规格书第 3 页 共 16 页目录1. 引言 41.1. 编写目的 41.2. 名词解析 41.3. 参考资料 42. 运行环境 42.1. 硬件环境 42.2. 软件环境 43. 功能需求 43.1. 功能划分 53.2. 功能描述 53.2.1.53.2.2.54. 接

2、口需求 54.1. 接口划分 54.2. 接口描述 54.2.1.54.2.2.55. 性能需求 55.1. 稳定性 55.2. 实时性 55.3. 可扩展性 55.4. 可维护性 56. 运行需求 56.1. 开机界面 66.2. 即插即用 67. 其他需求 6Arm+Linux 开发平台软件需求规格书第 4 页 共 16 页1. 引言1.1.编写目的为了能够使 arm+linux 平台外协合作方了解我们公司软件需求规格,按照计划完成该arm+linux 平台的外协开发,为了能够协调好外协工作的顺利进行和需求规格的交流,特制定并编写本平台软件需求规格书。1.2.名词解析名词 解析1.3.参考

3、资料arm+linux 平台研制要求 2011 年 4 月 12 日2. 运行环境2.1.硬件环境CPU:S3C2440,主频 400MHzRam:64MByteNandFlash:256MByte2.2.软件环境Bootloader:UbootLinux 内核:Linux-2.6.32.2NandFlash 文件系统:Yaffs2Rootfs 文件系统:3. 功能需求Arm+Linux 开发平台软件需求规格书第 5 页 共 16 页3.1.功能划分该软件功能可以细分为以下 4 部分:A/D 数据采集处理和 D/A 模拟量输出,外围接口通信,数据存储,界面显示和操作,3.2.功能描述3.2.1

4、. A/D 数据采集处理和 D/A 模拟量输出S3C2440 与 FPGA 高速采集卡之间的接口为:CPCI 接口。FPGA 高速采集卡的功能是把输入的-5V+5V 模拟电平信号以 200KSPS1MSPS 的采样速率输入到 A/D 转换电路中。A/D转换电路通过量化和编码把模拟信号转换成数字信号,然后 S3C2440 处理器把数字信号传送给上层应用程序。所以首先要编写合理的符合业务需要的 A/D 驱动程序。A/D 驱动程序的主要功能是:打开和关闭 A/D 转换器以及对 A/D 转换器的转换结果进行读取操作。打开、关闭、读取 A/D 转换器对应的底层操作函数依次为:static int adc

5、_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, struct file* file, unsigned int cmd, unsigned ling arg)接着完善 A/D 驱动程序的文件操作结构,其文件操作结构如下:static

6、 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()来注册 A/D 转换设备和 devfs_register()来获得 A/D 转换设备的操作句柄。Arm+Linux 开发平台软件需求规格书第 6 页 共 16 页然后编

7、写 A/D 驱动程序的模块加载和卸载函数。Static int _init AD_init(void);/内部调用初始化函数来完成模块加载Static void _exit cleanup_AD(void);/内部调用 devfs_unregister_chrdev()和devfs_unregister()来完成模块卸载。上层用户应用程序在接收到 A/D 转换结果后,要进行以下操作:1.2.3.3.2.2. 外围接口通信该平台的外围接口包括:串口、网口、USB 口、按键接口、LVDS 触摸屏显示接口、GPIO 口、CPCI 接口、CAN 口和 I2C 口。目前,linux 内核选用的是 lin

8、ux-2.6.32,而这个版本的内核所有的驱动程序都支持热插拔。所以要求该平台所有的外围接口设备都应该支持热插拔,以方便用户的使用。一个外围设备的 hotplug 调用过程如下:(1) 用户插入或者安装上外围设备(2) 总线报告新设备插入和读取 PID 信息(3) 自动加载对应的驱动程序(4) 调用/sbin/hotplug 脚本,传递环境变量(5) 调用外围设备代理脚本/etc/hotplug/*.agent(6) 代理脚本/etc/hotplug/*.agent 加载模块对应的驱动程序下面依次介绍各个外围接口的需求。 串口串口类型包括 3 种:2 路 RS232 接口,1 路 RS422

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

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

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

12、MA/CD,即载波监听多路访问及冲突检测技术。两包数据发送间隔最小为 9.6ms(以 10Mbit/s 运行)。以太网的帧结构包括 4 种不同的格式,不过都具有 8 字节的前导字符,前导字符的作用是使接收节点进行同步并做好接收数据帧的准备,其中前 7 个字节称为前同步码,内容为 0xAA,最后一个字节称为帧起始标志服,内容为 0xAB。以太网接口控制器包括 MAC 媒体访问层和 PHY 物理层芯片两部分,MAC 集成在嵌入式CPU 芯片中,而 PHY 就是网络芯片,比如 RTL8201BL。而如果嵌入式 CPU 芯片中没有集成,我们可以通过使用 Host Bus 接口的以太网芯片来扩展网络接口

13、,这样的芯片有:RTL8019。网络驱动程序的结构如下:Arm+Linux 开发平台软件需求规格书第 8 页 共 16 页发送数据包d e v _ q u e u e _ x m i t ( )接收数据包队列N e t i f _ r x ( )网络协议接口层主要结构体 d e v i c e ( ) , 包括 : 初始化 i n i t i a l i z e ( ) 、 中断i n t e r r u p t ( ) 等网络设备接口层从硬件接收数据包( 中断处理函数 )发送数据包给硬件h a r d _ s t a r t _ x m i t ( )设备驱动功能层网络设备媒介 , 比如以太

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

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

16、收的工作流程:当网络物理设备上有数据到达时,就触发硬件中断,产生中断信号,网络设备驱功能层就能够在中断向量表中根据中断号调用相应的中断处理程序,即数据包接收程序来处理数据包的接收。然后,网络协议接口层调用 netif_rx 函数,把接收到的数据包传输到网络协议的上层进行处理。比如 NE2000 网卡的数据接收过程为:先由Arm+Linux 开发平台软件需求规格书第 9 页 共 16 页ne_probe()函数完成网络接口的初始化,利用在这个函数中的 ne_probe1()函数或者ne_probe_isapnp()函数得到中断号,根据中断号进入中断服务处理函数 ei_interrupt(),通过

17、 ei_interrupt()函数从 8390 的接收缓冲区中获得数据,并组合成 sk_buff 结构,再通过 netif_rx()函数将接收到的数据存放在系统的接收队列之中。嵌入式 linux 网络各层之间的数据传输都是通过 sk_buff。每个 sk_buff 包括一些控制方法和一块数据缓冲区,多个 sk_buff 组成双向链表。 USB 口USB 接口类型为:USB1.1,传输速率为 1.5Mbit/s12Mbit/s。2 路 USB 主机,用于USB 接口通信,1 路 USB 从机,用于调试。这两路 host usb,一路用于连接 usb 鼠标,一路用于连接 u 盘。所以一路要编写 u

18、sb 鼠标驱动程序,遵循 HID 协议标准,一路要编写 u盘驱动程序,遵循 usb mass storage 协议规范。Usb 驱动程序共分为 3 种:主机端设备驱动程序、主机控制器驱动程序和设备端驱动程序。主机端设备驱动程序:嵌入式内核已经为这部分驱动程序提供了很好的编程接口,驱动开发工程师只需要按照要求建立程序框架,通过调用操作系统提供的 API 函数就可以完成对 USB 外设的特定访问。主机控制器驱动程序:如果想让设备具有 USB host 功能,那么在设备中就需要选用一个带有主机控制器的 USB 接口芯片。比如:philips 公司的 ISP1161、ISP1362。并且由驱动开发工程

19、师自行编写实现该控制器的驱动程序。usb 主机设备驱动程序的框架如下:1. 向内核注册该驱动程序。注册操作在驱动程序的初始化函数 static int _init usb_skel_init(void)里。主要调用的是 usb_register()函数。即usb_register(设置串口。包括波特率设置,检验位设置,停止位设置和模式设置(如果串口只是用来传输数据,那么使用原始模式 Raw Mode 来进行通信)。写串口。如:int nByte = write( int fd, char buffer1024, int length);读串口。如:int nByre = read( int f

20、d, char buff1024, int length);不过最常用的还是以下的操作方式:Fd_set rfds;struct timeval tv;int retval;FD_ZERO(FD_SET( portsportNo.handle, tv.tv_sec = Timeout / 1000;tv.tv_usec = Timeout % 1000 * 1000;retval = select(portsportNo.handle +, if( retval = -1 )printf(“select error!n”);break;else if(retval)int actualRead

21、 = read( portsportNo.handle, char buff1024, int maxCnt);关闭串口。如:close( fd );串口的主函数如下:#define DEVICE_TTYS “/dev/ttyS0”Arm+Linux 开发平台软件需求规格书第 13 页 共 16 页int main (int argc, char argv)int fd;printf(“n RS232 main start! nn”);fd = open( DEVICE_TTYS, O_RDWR);if( fd = -1)printf(“ open device %s failed”, DEV

22、ICE_TTYS);elseinit_ttyS(fd);rs232_transfer(fd);close(fd);return 0;其中,init_ttyS(fd)是端口初始化函数,主要完成的功能有:清除原有设置,设置波特率,设置标志位。rs232_transfer(fd) 是通信功能函数,主要完成的功能有:清空接收buffer,while(1)循环先把发送 buffer 中的 data 发送到串口 fd,接着从串口 fd 中读取 data 到接收 buffer 中。4.2.2. 网口对网络设备进行操作,必须提供一组函数接口以供系统访问。1. 打开操作 open()该函数在网络设备状态由 do

23、wn-up 时被调用。当网络设备驱动程序以 module 方式被装入时,在 open()函数里要调用 MOD_INC_USE_COUNT 宏。2. 关闭操作 close()该函数在网络设备状态由 up-down 时被调用。当网络设备驱动程序以 module 方式被装入时,在 close()函数里要调用 MOD_DEC_USE_COUNT 宏。3. 发送操作 hard_start_xmit()Arm+Linux 开发平台软件需求规格书第 14 页 共 16 页所有的网络设备驱动程序都必须有这个发送方法,在系统调用驱动程序的 xmit 时,发送的数据放在一个叫 sk_buff 的结构体中。如果发送

24、成功,hard_start_xmit 方法里释放 sk_buff,返回 0,否则,返回 1。4. 接收操作 reception()网络设备有数据收到时,应该是驱动程序来通知系统的。这个通知方法就是产生一个中断,中断处理程序申请一块 sk_buff,从硬件读出的数据放置在申请好的缓冲区里面。5. 硬件帧头 hard_header硬件一般都会在上层数据发送之前加上自己的硬件帧头,比如以太网卡就有 14 个字节的帧头。这个帧头是加在上层协议(ip,ipx,arp)等数据包的前面的。网络设备驱动程序必须提供这个 hard_header 方法。6. 地址解析 xarp地址解析的功能是对有硬件地址的网络设

25、备之间进行通信时,完成硬件地址和上层协议地址(ip,ipx)之间的对应。7. 参数设置和统计数据网络设备驱动程序还必须提供一些方法供系统对设备的参数进行设置和读取操作。4.2.3. USB 口任何用户态程序操作 USB 设备都可以通过调用 file_opereations 结构体中的文件操作函数来实现。1. 打开设备 skel_open()static int skel_open( struct inode * inode, struct file *file )。在这个函数中,宏MOD_INC_USE_COUNT 起着计数的作用,每当有一个用户态程序打开一个设备时,计数器数值就自增 1。2.

26、 读取设备 skel_read()Arm+Linux 开发平台软件需求规格书第 15 页 共 16 页3. 向设备写 skel_write()4. 关闭设备 skel_disconnect()4.2.4. 键盘接口每个按键的键值该如何安排和定义?5. 性能需求5.1.稳定性5.2.实时性5.3.可扩展性5.4.可维护性要求本软件的维护文档齐全,便于维护。6. 运行需求6.1.开机界面开机界面示意图如下:该示意图仅仅是一个示意,底图颜色,字体颜色、类型、大小均可改变,但是开机界面必须包含我们公司的图标和“xxxx”四字。6.2.应用程序界面应用程序界面根据业务需求的不同而设计出不同的用户操作界面。这将在以后的应用中加以关注。6.3.即插即用要求网口、串口、USB 口即插即用。Arm+Linux 开发平台软件需求规格书第 16 页 共 16 页7. 其他需求类别 要求 备注软件调试方式 支持串口、网口调试软件升级方式 支持通过串口、USB 口升级

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报