嵌入式系统-软硬件接口【稻谷书屋】

上传人:桔**** 文档编号:567715349 上传时间:2024-07-22 格式:PPT 页数:26 大小:1.25MB
返回 下载 相关 举报
嵌入式系统-软硬件接口【稻谷书屋】_第1页
第1页 / 共26页
嵌入式系统-软硬件接口【稻谷书屋】_第2页
第2页 / 共26页
嵌入式系统-软硬件接口【稻谷书屋】_第3页
第3页 / 共26页
嵌入式系统-软硬件接口【稻谷书屋】_第4页
第4页 / 共26页
嵌入式系统-软硬件接口【稻谷书屋】_第5页
第5页 / 共26页
点击查看更多>>
资源描述

《嵌入式系统-软硬件接口【稻谷书屋】》由会员分享,可在线阅读,更多相关《嵌入式系统-软硬件接口【稻谷书屋】(26页珍藏版)》请在金锄头文库上搜索。

1、刘 健 培 嵌入式系统与网络通信研究中心北京邮电大学 计算机学院嵌入式系统嵌入式系统软硬件接口软硬件接口Bootloader、驱动、驱动、 BSP 1教育本本节内容内容硬件平台(S3C2440)BSP操作系统(UCOS)应用程序(协议)BootloaderDeviceDriverDeviceDriverDeviceDriverDeviceDriver二进制运行接口,ABIWHY?功能分化:启动控制硬件支持软件模型2教育从从软件开件开发角度看板角度看板级硬件硬件n硬件系统结构与组成的抽象n从硬件系统抽象出软硬件接口信息,便于软件开发人员开发软件n在嵌入式硬件系统中,软件表现为程序存储器中的二进进

2、制代码(即程序),不管外设的功能和硬件形式如何,对软件来说,可操作的只有:寄存器、存储器、IO接口。一般RISC处理器都是统一编址的,所以最终操作的只有地址。硬件开发板实物提炼地址软件C语言头文件3教育TQ2440硬件开硬件开发板板4教育2440addr.h5教育从从软件开件开发角度看存角度看存储器器n存储器地址空间分布图n存储芯片信息n类型、基址、大小、片选、配置参数n存储器控制寄存器nMMU6教育从从软件开件开发角度看外角度看外设n指令能访问到什么nIO管脚配置寄存器n设备寄存器组n数据、控制、状态n寄存器地址n独立编址(I/O端口方式)与统一编址(I/O内存方式)n一个地址可能对应多个寄

3、存器n有些地址可以动态配置(如PCI)n指令如何访问外设n外设操作方式与流程n规范与协议nCPU与外设交互方式n轮询、中断、DMA数字电路外部设备电电光机械转换部分控制部分控制电路控制寄存器数据寄存器状态寄存器外设接口CPU读/写7教育从从软件开件开发角度看角度看处理器理器nARM ISAn异常与中断处理方式nARM ABI(API?)8教育ARM ABInAPI与ABInAPI:ApplicationProgrammingInterface,应用程序编程接口nhttp:/zh.wikipedia.org/wiki/Application_programming_interfacenABI:A

4、pplicationBinaryInterface,应用程序二进制接口nhttp:/zh.wikipedia.org/wiki/EABInEABI:EmbeddedApplicationBinaryInterface,嵌入式应用程序二进制接口nhttp:/zh.wikipedia.org/wiki/EABICPUtoolchainAPPLIBsOSAPICompilerLinkerLoaderDebuggerABISource codeBinary codecompilerunnAPI定义了源代码和库之间的接口,因此同样的代码可以在支持这个API的任何系统中编译,nABI允许编译好的目标代码在

5、使用兼容ABI的系统中无需改动就能运行(直到现在还没有很成功的例子)。nEABI指定了文件格式、数据类型、寄存器使用、栈帧组织方式和函数参数传递等的标准约定。支持EABI的编译器创建的目标文件可以和使用类似编译器产生的代码兼容,这样允许开发者链接一个由不同编译器产生的库。EABI与关于通用计算机的ABI的主要区别是应用程序代码中允许使用特权指令,不需要动态链接(有时是禁止的),和更紧凑的堆栈帧组织用来节省内存。广泛使用EABI的有PowerPC和ARM.9教育nARMEABInhttp:/ ABI10教育系系统初始化初始化过程程n指令执行前硬件初始化n系统上电,执行内部初始固码微程序(如果有)

6、,设置处理器上电默认工作状态,最后从复位向量处开始执行n硬件初始化n片级初始化(设置微处理器执行状态)n板级初始化(配置与初始化相关外设)n软件初始化n操作系统执行前初始化n初始化OS所需内存等资源、加载OS、传递参数、跳转n操作系统组件初始化n中断、定时器、任务、内存管理等等n应用程序执行前初始化n加载应用程序,建立应用程序执行环境n跳转到应用程序入口CPU初始化目标板初始化系统初始化启动任务初始化初始化11教育Bootloader=Boot+LoadernBootn处理器复位后运行的第一个软件,严重硬件相关n早期硬件初始化(CPU及板级资源)n为操作系统运行准备软硬件环境nLoadern定

7、位OS(OS在哪儿?)n载入OS(可能要校验和解压缩。载入到哪儿?)n提供操作系统启动参数n移交控制权给OS内核n其余功能n由程序员根据需求自行控制,一般够用即可n如自检、命令行、调试支持、烧写flash、远程更新等12教育Bootloader的前世今生的前世今生n来自哪儿?n主机端的源代码n芯片厂商或者开发板厂商提供一部分,操作系统可能提供一部分n对应CPU的开发环境(编译工具链)n汇编与链接脚本n放在哪儿?nROM、EEPROM、NorFLASH、NandFLashnSD/MMC/CF卡nRAM、SDRAMn怎么放?nJTAG仿真器/BDM等n外部烧写器n固化的loader,与主机通过串口

8、/USB/网口等通信获取bootloadern怎么被执行?n固定的复位向量地址n调试时仿真器指定地址n执行完后怎么办?n不走回头路n发生异常跳回bootloader13教育Bootloader常常设计成支持成支持2种模式种模式n启动加载(Bootloading)模式n自主模式,自动从目标机上的某个固态存储设备上将OS加载到RAM中运行,无用户介入n适用于产品发布阶段n下载(Downloading)模式n从主机下载内核映像和根文件系统映像n暂存目标机RAM中,最终存在目标机的某个固态存储设备中n可烧录bootloader本身n适用于开发阶段14教育Single Stage还是是Multi-Sta

9、ge?n为更好的可移植性,启动过程通常分为stage1和stage2两部分nStage1+stage2划分原则nROM+RAMn汇编+Cn体系结构相关+体系结构无关n位置无关+位置相关15教育Bootloader设计注意注意n软件运行需要硬件和软件资源,Bootloader需要的每种资源在使用前都必须进行初始化并完成资源分配nDRAM控制器nDRAM是内存资源,DRAM芯片需要专门的硬件控制权支持读写周期nFlash与RAMnBootloader要保存在非易失性存储器中(如Flash、磁盘等),但是常又要将自身载入到RAM中运行n映像复杂n需要按照与处理器启动顺序兼容的格式组织启动代码,这需要

10、开发人员通过链接器描述文件(ld脚本)指定二进制映像n缺少执行上下文n高级语言程序需要预先建立执行环境(如:C程序调用需要用到堆栈,需要RAM存储临时变量;C库需要进行动态内存分配等)n启动时代码是放在非易失性存储器中的,也没有DRAM可用16教育2440init.sn复位入口:bResetHandlernC程序入口:BLMainn软件流程n关看门狗与中断n硬件寄存器初始化(LEDGPIO、PLL时钟、内存控制器)n初始化各个mode堆栈指针n设置IRQ中断处理ISR入口指针v数据区初始化(copydata段,清零bss段)v调用C入口函数:BLMain17教育设备驱动程序程序n设备驱动概念n

11、驱使硬件设备行动(也有没有硬件的虚拟驱动)n设备驱动与底层硬件直接打交道,按照硬件设备的具体工作方式读写设备寄存器,完成设备的轮询、中断处理、DMA通信,进行物理内存向虚拟内存的映射,最终使设备按照上层软件的要求工作,并实现上层需要的模型(如文件、流、socket、设备等)。n设备驱动连接软件和硬件,会随着软件和硬件平台的变化而变化,不同系统有不同的形态。18教育n不基于OS的设备驱动(非标准)n基于OS的设备驱动(标准)OS内核2种种类型型驱动硬件设备设备驱动应用程序硬件设备设备驱动应用程序OS API设备驱动设备驱动符合寄存器操作规范驱动 API符合寄存器操作规范19教育Linux设备驱动

12、举例例n在http:/ 将存储器和外设分为3 大类:字符设备;块设备网络设备应用程序也可以直接通过文件系统的系统调用接口open()、write()、read()、close()等函数访问字符设备和块设备,通过socket接口访问网络设备应用程序可以通过C库函数fopen()、fwrite()、fread()、fclose()等访问设备功能复杂设备(特别是总线,如PCI、USB)还有独特的驱动分层体系结构20教育设备驱动设计n区分机制(提供什么能力)和策略(如何使用这些能力)n编写驱动代码使硬件可用,但不能强加特别的策略给用户,将所有关于如何使用硬件的事情留给应用程序n阻塞与非阻塞,同步与异步

13、n安全与可靠性n与内核工作在同一地址空间n并发与竞争n中断n调试21教育并并发与与竞争争n发生时机n只要并发的多个执行单元访问共享资源,就可能发生竞争。n对称多处理器(SMP)的多个CPU,使用共同的系统总线,共享外设和储存器。n单CPU内进程/线程/任务与抢占它的进程/线程/任务n中断与进程/线程/任务之间n解决办法n保证对共享资源的互斥访问n临界区n中断屏蔽n原子操作n加锁n自旋锁n读写自旋锁n顺序锁nRCU锁(Read-CopyUpdate,读拷贝更新)n信号量22教育BSP的概念的概念nBSP(BoardSupportPackages,板级支持包)n是指针对具体的硬件平台用户编写的的启

14、动代码和部分设备驱动程序的集合。n它所实现的功能包括初始化、提供部分设备驱动。最基本的BSP仅需要支持处理机复位、初始化、串口驱动和必要时的时钟中断处理。n这词的来源最常被归于风河公司(WindRiverSystems)给它的VxWorks嵌入式操作系统(大约从1988开始),不过现在已经广泛的在业界使用。nBSP的一般组成文件nbootloadern设备驱动n配置文件23教育BSP的的设计n标准BSP和非标准BSPnBSP非Polling原则,尽量使用中断和DMAnBSP数据buffer的非拷贝原则+UncaheablenBSP的Task处理原则24教育BSPBSP的的调试n使用JTAG/ICE/BDM等工具n“黑”调法:方法是点“灯”、用示波器测片选等,目的是打通串口,达到宿主机与目标机的通信。构造监控程序构造监控程序烧片烧片BSP可以可以修改程序修改程序修改修改BSP构造构造ram 型型image下载下载串口通串口通开始BSP调试结束NYNY25教育Thank you!26教育

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 研究生课件

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