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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

本文(嵌入式系统软件开发技术BSP和驱动.ppt)为本站会员(b****1)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

嵌入式系统软件开发技术BSP和驱动.ppt

1、 嵌入式系统软件开发技术,嵌入式系统,主要内容,版级支持包 BSP嵌入式系统初始化以及BSP的设计Linux系统驱动程序开发嵌入式联网,BSP的概念,BSP全称“板级支持包”(Board Support Packages),说的简单一点,就是一段启动代码,和计算机主板的BIOS差不多,但提供的功能区别就相差很大在Windows CE中,BSP是驱动程序、OEM适应层(OEM Adaptation Layers,OAL)、硬件抽象层(HAL)以及启动设备和使外设正常工作所需BIOS文件的集合。,BSP和BIOS区别,BIOS主要是负责在电脑开启时检测、初始化系统设备(设置栈指针,中断分配,内存初

2、始化.)、装入操作系统并调度操作系统向硬件发出的指令。BSP是和操作系统绑在一起运行,尽管BSP的开始部分和BIOS所做的工作类似,但是 BSP还包含和系统有关的基本驱动 BIOS程序是用户不能更改,编译编程的,只能对参数进行修改设置,但是程序员还可以编程修改BSP,在BSP中任意添加一些和系统无关的驱动或程序,甚至可以把上层开发的统统放到BSP中,不同系统中的BSP,一个嵌入式操作系统针对不同的CPU,会有不同的BSP即使同一种CPU,由于外设的一点差别BSP相应的部分也不一样,BSP的特点与功能,硬件相关性因为嵌入式实时系统的硬件环境具有应用相关性,所以,作为高层软件与硬件之间的接口,BS

3、P必须为操作系统提供操作和控制具体硬件的方法。操作系统相关性不同的操作系统具有各自的软件层次结构,因此,不同的操作系统具有特定的硬件接口形式,BSP的设计与实现,为实现上述两部分功能,设计一个完整的BSP需要完成两部分工作:设计初始化过程,完成嵌入式系统的初始化;设计硬件相关的设备驱动,完成操作系统及应用程序对具体硬件的操作。,嵌入式系统初始化以及BSP的功能,嵌入式系统的初始化过程是一个同时包括硬件初始化和软件初始化的过程;而操作系统启动以前的初始化操作是BSP的主要功能之一 初始化过程总可以抽象为三个主要环境,按照自底向上、从硬件到软件的次序依次为:片级初始化板级初始化系统级初始化,初始化

4、过程,片级初始化:主要完成CPU的初始化设置CPU的核心寄存器和控制寄存器CPU核心工作模式CPU的局部总线模式等片级初始化把CPU从上电时的缺省状态逐步设置成为系统所要求的工作状态这是一个纯硬件的初始化过程,初始化过程(续1),板级初始化:完成CPU以外的其他硬件设备的初始化同时还要设置某些软件的数据结构和参数,为随后的系统级初始化和应用程序的运行建立硬件和软件环境这是一个同时包含软硬件两部分在内的初始化过程,初始化过程(续2),系统级初始化:这是一个以软件初始化为主的过程,主要进行操作系统初始化BSP将控制转交给操作系统,由操作系统进行余下的初始化操作:包括加载和初始化与硬件无关的设备驱动

5、程序建立系统内存区加载并初始化其他系统软件模块(如网络系统、文件系统等)最后,操作系统创建应用程序环境并将控制转交给应用程序的入口,硬件相关的设备驱动程序,BSP另一个主要功能是硬件相关的设备驱动与初始化过程相反,硬件相关的设备驱动程序的初始化和使用通常是一个从高层到底层的过程尽管BSP中包含硬件相关的设备驱动程序,但是这些设备驱动程序通常不直接由BSP使用而是在系统初始化过程中由BSP把它们与操作系统中通用的设备驱动程序关联起来,并在随后的应用中由通用的设备驱动程序调用,实现对硬件设备的操作。,BSP开发的前提和步骤,开发的前提:熟悉硬件方面:使用CPU等熟悉工具方面:电表,示波器,逻辑分析

6、仪,硬件仿真器,仿真调试环境等语言方面:汇编语言,C语言BSP开发的一般步骤如下:硬件主板研制,测试操作系统的选定,BSP编程上层应用程序的开发,编写BSP函数,BSP对板卡中每个芯片的操作都通过多个函数来完成 如果应用程序对板卡的操作都直接通过调用BSP中的函数来完成,那将很不利于源程序的调试,并降低了程序的可移植性把能完成某个特定功能的函数封装在一个库文件中,并放在应用程序与BSP之间 对每个芯片来说,都应当有初始化函数和状态读取函数,设计实现BSP的一般方法,BSP的开发需要具备一定的硬件知识 要求掌握操作系统所定义的BSP接口两种快捷方法 以经典BSP为参考 使用操作系统提供的BSP模

7、板 设计实现BSP两部分功能时应采用以下两种不同方法“自底向上”地实现BSP中的初始化操作“自顶向下”地设计硬件相关的驱动程序,BSP设计方法的不足与改进,目前BSP的设计与实现主要是针对某些特定的文件进行修改 直接修改相关文件容易造成代码的不一致性,增加软件设计上的隐形错误,从而增加系统调试和代码维护的难度 解决这个问题的一个可行办法是:设计实现一种具有图形界面的BSP开发设计向导,由该向导指导设计者逐步完成BSP的设计和开发,并最终由向导生成相应的BSP文件,而不再由设计人员直接对源文件进行修改。,Linux设备驱动程序及开发,Linux设备驱动程序概述,Linux设备驱动程序是处理或操作

8、硬件控制器的软件,被集成在内核中,是常驻内存的低级硬件处理程序的共享库,设备驱动程序是系统对设备的抽象管理与控制。Linux允许设备驱动程序作为内核可加载模块实现,即除了可以在系统启动时进行注册外,还可以在启动后进行加载注册。,Linux驱动程序开发,建立嵌入式Linux平台,移植和编写驱动程序往往是最具挑战的工作驱动程序的开发周期一般较长,对产品的面世时间有着重要影响驱动程序质量的好坏,直接关系到系统工作效能和稳定性,对项目的成败起着关键作用,设备驱动程序主要功能,设备驱动程序主要完成如下功能:检测设备和初始化设备使设备投入运行和退出服务从设备接收数据并提交给内核从内核接收数据送到设备检测和

9、处理设备错误,Linux设备驱动程序分类,Linux中所有设备被抽象出来,都看成文件 设备的读写和普通文件一样 Linux系统的设备分为如下三类:字符设备(char device)块设备(block device)网络设备(network device)字符设备是指存取时没有缓存的设备块设备的读写都有缓存来支持,且块设备必须能够随机存取(random access)网络设备在Linux里做专门的处理,Linux设备驱动程序分类,网络设备在Linux里做专门的处理Linux的网络系统主要是基于BSD unix的socket 机制。在系统和驱动程序之间定义有专门的数据结构(sk_buff)进行数据

10、的传递系统里支持对发送数据和接收数据的缓存,提供流量控制机制,提供对多协议的支持,Linux设备驱动程序分类,典型的字符设备包括鼠标,键盘,串行口等块设备主要包括硬盘、软盘设备、CD-ROM等一个文件系统要安装进入操作系统必须在块设备上,Linux驱动程序介绍,嵌入式Linux驱动已经支持的设备门类齐全,已成为其相对其他嵌入式操作系统的一大优势工业控制常用的串口,并口人机输入设备如鼠标、键盘,触摸屏彩色、黑白液晶显示输出网络的完善支持,包括tcp/ip,udp,firewall,WLAN,ip forwarding,ipsec,vpnUsb的全面支持,包括usb硬盘、u盘,usb摄像头支持丰富

11、的文件系统,包括FAT32,NTFS,嵌入式设备框图,驱动程序的功用,1、驱动程序直接操控硬件收发通讯数据读写存储介质,比如flash或硬盘操作输出设备和执行机构,例如打印,开关门禁等,驱动程序的功用(续),2、驱动程序提供软件访问硬件的机制应用软件通过驱动程序安全高效的访问硬件驱动程序文件可以方便的提供访问权限控制驱动程序作为一个隔离的中间层软件,将底 层细节隐藏起来,提高了软件的可移植性,访问Linux设备驱动的方法,设备提供dev文件系统节点和proc文 件系统节点应用程序通过dev文件节点访问驱动 程序应用程序通过proc文件节点可以查 询设备驱动的信息,驱动程序位置,驱动程序位于dr

12、ivers目录下通常驱动程序占kernel代码的50%Linux设备驱动程序在Linux的内核源代码中占有很大的比例,源代码的长度日益增加,主要是驱动程序的增加。在Linux内核的不断升级过程中,驱动程序的结构还是相对稳定。在2.0.xx到2.2.xx的变动里,驱动程序的编写做了一些改变,但是从2.0.xx的驱动到2.2.xx的移植只需做少量的工作。,Linux驱动程序的特点,嵌入式Linux驱动程序需求多样嵌入式设备硬件各异嵌入式计算平台往往资源有限,比如处理速度、存储器容量、总线带宽、电池容量等通常要求短的开发周期、压力大开发驱动程序需要丰富的专业知识,包括 硬件和软件知识,嵌入式Linu

13、x驱动程序特点,嵌入式系统硬件更新速度加快国际上大的嵌入式芯片提供商如Intel、Samsung、Freescale、TI、ST每年都有大量新品推出新的芯片功能总是需要相应的驱动程序支持,Linux驱动开发流程,熟悉设备的特性 确定设备驱动程序类别 编写测试用例 搜集可重用的代码 编写自己的驱动程序代码 编码、调试、测试,Linux驱动程序的开发环境,本机编译调试开发环境配置简单无需网络环境适用于配置较高的x86机器主机+目标机主机可以自由选择Linux或Windows+Cygwin主机和目标机通过网络共享文件系统内核崩溃不会影响主机,Linux驱动程序的开发环境(续),主机+目标机环境包括主

14、机运行的工具链cross gcc+glibc+gdb,如果是windows主机还要有cygwin仿真环境主机运行远程服务,常用的有tftp用来传送内 核映像、initrd,NFS用来共享文件系统目标机运行ssh或telnet等远程登陆服务,用来 调试驱动程序,Linux驱动程序的加载方式,驱动程序直接编译入内核驱动程序在内核启动时就已经在内存中可以保留专用存储器空间驱动程序以模块形式存储在文件系 统里,需要时动态载入内核驱动程序按需加载,不用时节省内存驱动程序相对独立于内核,升级灵活,Linux驱动程序模块加载,Linux驱动程序开发的任务,规划硬件资源的使用分离硬件相关和硬件无关的代码划分驱

15、动程序的抽象层次移植驱动程序到新的平台,Linux驱动程序开发的任务,规划硬件资源的使用CPU时间片分配中断处理系统存储器空间映射,设备存储器的映射,Linux驱动程序开发的任务,分离硬件相关和硬件无关的代码划分驱动程序的抽象层次,Linux驱动程序开发的任务,移植驱动程序到新的平台,GPL对驱动程序开发的影响,实现非GPL授权的方法模块形 式动态加载驱动程序可以以私有产权形式进行 商业授权,设备驱动程序的代码,驱动程序的注册与注销register_chrdev()register_blkdev()设备的打开与释放open()release()设备的读写操作read()write()设备的控制

16、操作ioctl(),设备驱动的加载,使用模块的方式动态加载驱动int func_init(void)Makefile:insmod xx.olsmodrmmod xx.o将驱动静态编译到内核里面 int _init func_init(void)Makefile:启动时自动加载,Linux驱动程序模块加载,编写驱动程序的一些基本概念,无论是什么操作系统的驱动程序,都有一些通用的概念操作系统提供给驱动程序的支持也大致相同以下简单介绍网络设备驱动程序的一些基本要求,编写网络驱动程序,发送和接收 这是一个网络设备最基本的功能如一块网卡所做的无非就是收发工作。所以驱动程序里要告诉系统发送函数在哪里,系统在有数据要发送时就会调用发送程序。驱动程序由于是直接操纵硬件的,所以网络硬件有数据收到,最先能得到这个数据的也就是驱动程序,它负责把这些原始数据进行必要的处理,然后送给系统。这里,操作系统必须要提供两个机制:找到驱动程序的发送函数驱动程序把收到的数据送给系统,编写驱动程序,读写几乎所有设备都有输入和输出。每个驱动程序要负责本设备的读写操作。操作系统不需要知道对设备的具体读写操作怎样进行,这些都由

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1