![第3章 板级支持软件包设计_第1页](http://file2.renrendoc.com/fileroot_temp3/2021-7/16/502149f3-b5eb-4bce-bdab-466c1a879a53/502149f3-b5eb-4bce-bdab-466c1a879a531.gif)
![第3章 板级支持软件包设计_第2页](http://file2.renrendoc.com/fileroot_temp3/2021-7/16/502149f3-b5eb-4bce-bdab-466c1a879a53/502149f3-b5eb-4bce-bdab-466c1a879a532.gif)
![第3章 板级支持软件包设计_第3页](http://file2.renrendoc.com/fileroot_temp3/2021-7/16/502149f3-b5eb-4bce-bdab-466c1a879a53/502149f3-b5eb-4bce-bdab-466c1a879a533.gif)
![第3章 板级支持软件包设计_第4页](http://file2.renrendoc.com/fileroot_temp3/2021-7/16/502149f3-b5eb-4bce-bdab-466c1a879a53/502149f3-b5eb-4bce-bdab-466c1a879a534.gif)
![第3章 板级支持软件包设计_第5页](http://file2.renrendoc.com/fileroot_temp3/2021-7/16/502149f3-b5eb-4bce-bdab-466c1a879a53/502149f3-b5eb-4bce-bdab-466c1a879a535.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第三章:板级支持包程序设计第三章:板级支持包程序设计目标目标:本章旨在向学员介绍板级支持包本章旨在向学员介绍板级支持包的基本概念和开发流程的基本概念和开发流程时间:时间:3小时小时教学方法:讲述教学方法:讲述3.1.1 BSP概述概述BSP即Board Support Package,板级支持包。它来源于嵌入式操作系统与硬件无关的设计思想,操作系统被设计为运行在虚拟的硬件平台上。 实时操作系统,都采用了分层设计的方法,它将系统中与硬件直接相关的一层软件独立出来,称之为Board Support Package,简称为BSP。 3.1.1 硬件平台、板级支持与硬件平台、板级支持与OS关系关系和硬
2、件无关的系统软件模块 I / O系统 文件系统 T C P / I P M U X 操作系统库 硬件相关的系统软件模块 F la s h / S C S I D r iv e r 操作系统内核 L a n D r iv e r B S P 硬件 S C C T im e r L a n 控制器 F la s h / S C S I C o n t r o lle r BSP向上层提供的接口有与操作系统内核的接口(如报告DRAM大小、修改中断屏蔽级别等)与操作系统的I/O系统的接口与应用程序的接口3.1.1BSP的定义 BSP就是为软件操作系统正常运行提供最基本、最原始的硬件操作的软件模块,它和
3、操作系统息息相关,但又不属于操作系统的一部分。BSP可以分为三大部分:1:系统上电时的硬件初始化。2:为操作系统访问硬件驱动程序提供支持。3:集成的硬件相关和硬件无关的操作系统所需的软件模块BSP的表现形式的表现形式 1:源代码(C代码、汇编代码)、系统编译连接依靠文件。 2:二进制的目标代码和目标代码库。 3.2 BSP的作用的作用执行角度执行角度可以分为两大部分: 1)目标板启动时的硬件初始化及多任务环境的初始化 2)目标板上控制各个硬件设备正常运行的设备驱动程序由它来完成硬件与软件之间的信息交互通常我们认为BSP是为为OS服务服务的, 但实际上, BSP软件包中的部分程序对OS也并不是必
4、须的,从这个角度,又可以将BSP划分为两部分: 1)最小系统BSP,即我们通常所称的BSP 2) 设备驱动程序3.2.1 BSP开发的条件开发的条件目标硬件:硬件调测完毕,经过必要的软件测试必要的硬件设计文档:如地址空间的分布,CPU和其他芯片的工作模式等。操作系统交叉开发工具:编译器、汇编器、链接器等下载机制:bootrom或仿真器等3.1.2 BSP实际开发的主要过程实际开发的主要过程掌握开发中使用的操作系统,和在这种操作系统下开发BSP的要求。研读所选CPU的资料。研读硬件设计文挡。研读电路板中器件的资料。找一个BSP模板,熟悉它并在此基础上开发自己的BSP。从头研制BSP工作量极大,也
5、没有必要。利用仿真器进行调试,开发最小BSP系统。在最小BSP的基础上,利用集成开发环境,进一步调试外围设备,配置、完善系统。调试单板上的设备驱动程序。3.3 BSP的选择和修改的选择和修改操作系统是应用软件运行的平台,而BSP又是操作系统正常运行的前提。BSP程序的效率,稳定性直接影响到整个软件系统的性能及稳定性,因此BSP对于整个系统是非常重要的。BSP软件与其他软件的最大区别在于BSP软件有一整套模板和格式,开发人员必须严格遵守,不允许任意发挥。在BSP软件中,绝大部分文件的文件名和所要完成的功能都是固定的。所以,BSP软件的开发一般来说都是在一个基本成型的BSP软件上进行修改,以适应不
6、同单板的需求。 针对某类CPU的硬件单板,嵌入式操作系统(如vxWorks、Wince)通常提供有其DEMO板的BSP, 这些程序位于指定的目录之下。也就是我们所说的最小系统BSP。一般来说,我们在硬件系统设计好之后,都会先找到一个与自己系统相近的DEMO板BSP(最起码是使用相同的CPU)。并以此为基础,开发自己单板的BSP。3.4 BOOTLOADER的基本概念的基本概念Boot Loader 就是在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。通常,
7、Boot Loader 是严重地依赖于硬件而实现的,特别是在嵌入式世界。因此,在嵌入式世界里建立一个通用的 Boot Loader 几乎是不可能的。尽管如此,我们仍然可以对 Boot Loader 归纳出一些通用的概念,进行特定特定的 Boot Loader 设计与实现。3.4.1 Boot Loader 支持的支持的 CPU每种不同的 CPU 体系结构都有不同的 Boot Loader。有些 Boot Loader 也支持多种体系结构的 CPU,比如 U-Boot 就同时支持 ARM 体系结构和MIPS 体系结构。除了依赖于 CPU 的体系结构外,Boot Loader 实际上也依赖于具体的
8、嵌入式板级设备的配置。这也就是说,对于两块不同的嵌入式板而言,即使它们是基于同一种 CPU 而构建的,要想让运行在一块板子上的 Boot Loader 程序也能运行在另一块板子上,通常也都需要修改 Boot Loader 的源程序。 3.4.2 Boot Loader 的安装媒介的安装媒介 系统加电或复位后,所有的 CPU 通常都从某个由 CPU 制造商预先安排的地址上取指令。比如,基于 ARM7TDMI core 的 CPU 在复位时通常都从地址 0 x00000000 取它的第一条指令。而基于 CPU 构建的嵌入式系统通常都有某种类型的固态存储设备(比如:ROM、EEPROM 或 FLAS
9、H 等)被映射到这个预先安排的地址上。因此在系统加电后,CPU 将首先执行 Boot Loader 程序。主机和目标机之间一般通过串口建立连接,Boot Loader 软件在执行时通常会通过串口来进行 I/O,比如:输出打印信息到串口,从串口读取用户控制字符等。 3.4.3多阶段多阶段通常多阶段的 Boot Loader 能提供更为复杂的功能,以及更好的可移植性。从固态存储设备上启动的 Boot Loader 大多都是 2 阶段的启动过程,也即启动过程可以分为 stage 1 和 stage 2 两部分。 Stage1与处理器体系结构相关的代码,通常用汇编语言实现Stage2C语言来实现,这样
10、可以实现给复杂的功能,而且代码会具有更好的可读性和可移植性 3.4.4 Boot Loader 的操作模式的操作模式 大多数 Boot Loader 都包含两种不同的操作模式:启动加载模式和下载模式,这种区别仅对于开发人员才有意义。但从最终用户的角度看,Boot Loader 的作用就是用来加载操作系统,而并不存在所谓的启动加载模式与下载工作模式的区别。启动加载模式:启动加载模式:这种模式也称为自主(Autonomous)模式。也即 Boot Loader 从目标机上的某个固态存储设备上将操作系统加载到 RAM 中运行,整个过程并没有用户的介入。这种模式是 Boot Loader 的正常工作模
11、式,因此在嵌入式产品发布的时侯,Boot Loader 显然必须工作在这种模式下。下载模式:下载模式:在这种模式下,目标机上的 Boot Loader 将通过串口连接或网络连接等通信手段从主机(Host)下载文件,比如:下载内核映像和根文件系统映像等。从主机下载的文件通常首先被 Boot Loader 保存到目标机的 RAM 中,然后再被 Boot Loader 写到目标机上的FLASH 类固态存储设备中。Boot Loader 的这种模式通常在第一次安装内核与根文件系统时被使用;此外,以后的系统更新也会使用 Boot Loader 的这种工作模式。工作于这种模式下的 Boot Loader
12、通常都会向它的终端用户提供一个简单的命令行接口。3.4.5与主机之间进行文件传输所用的通与主机之间进行文件传输所用的通信设备及协议信设备及协议 最常见的情况就是,目标机上的 Boot Loader 通过串口与主机之间进行文件传输,传输协议通常是 xmodemymodemzmodem 协议中的一种。但是,串口传输的速度是有限的,因此通过以太网连接并借助 TFTP 协议来下载文件是个更好的选择。主机方所用的软件也要考虑。比如,在通过以太网连接和 TFTP 协议来下载文件时,主机方必须有一个软件用来的提供 TFTP 服务。3.5 BOOT LOADER的典型结构的典型结构中断屏蔽中断屏蔽设置处理器时
13、钟设置处理器时钟RAM初始化初始化初始化初始化bootloader需要的硬件需要的硬件关闭处理器内部关闭处理器内部cache设置栈指针设置栈指针拷贝拷贝stage2到到ram跳转到跳转到 stage2 的的 C 入口点入口点初始化本阶段要使用到的硬件设备初始化本阶段要使用到的硬件设备 检测系统的内存映射检测系统的内存映射 加载内核映像和根文件系统映像加载内核映像和根文件系统映像 规划内存布局(内核、规划内存布局(内核、rootfs)设置内核启动参数设置内核启动参数调用内核调用内核stage1stage23.6 BOOT LOADER基本设计基本设计中断屏蔽对于中断的处理通常是驱动程序的任务,在
14、bootloader中为了避免中断对于硬件的处理造成错误,通常在启动是关闭中断。不同的处理关闭中断的方式不同。例如Arm通过写CPSR完成中断的关闭设置设置 CPU 的速度和时钟频率的速度和时钟频率 不同的处理器使用不同的方法,参见cpu的用户手册RAM 初始化初始化 有些处理器使用外部RAM,为了RAM能够正常工作,必须首先设置RAM的参数和时序为加载为加载 stage2 准备准备 RAM 空间空间 为了获得更快的执行速度,通常把 stage2 加载到 RAM 空间中来执行,因此必须为加载 Boot Loader 的 stage2 准备好一段可用的 RAM 空间范围。注意问题考虑堆栈空间空间
15、大小是4的整数倍要对空间进行测试和清零 拷贝拷贝 stage2 到到 RAM 中中 stage2 的可执行映象在固态存储设备的存放起始地址和终止地址;RAM 空间的起始地址 设置堆栈指针设置堆栈指针 sp 跳转到跳转到 stage2 的的 C 入口点入口点 stage2初始化本阶段要使用到的硬件设备初始化本阶段要使用到的硬件设备 初始化串口,以便和终端用户进行 I/O 输出信息初始化计时器等 通过串口输出信息 检测系统的内存映射检测系统的内存映射 记录内存映射信息打印内存映射信息到串口加载内核映像和根文件系统映像加载内核映像和根文件系统映像 规划内存占用的布局 从 Flash 上拷贝NorFl
16、ash与NAND FLash 设置内核的启动参数设置内核的启动参数 调用内核调用内核Boot Loader 调用 Linux 内核的方法是直接跳转到内核的第一条指令处 typedef struct memory_area_struct u32 start; u32 size; int used; memory_area_t;启动参数启动参数 内核内核 根文件系统根文件系统1 CPU 寄存器的设置:R00; R1机器类型 ID; R2启动参数标记列表在 RAM 中起始基地址; 2 CPU 模式:必须禁止中断(IRQs和FIQs); CPU 必须 SVC 模式; 3 Cache 和 MMU 的设置
17、:MMU 必须关闭; 指令 Cache 可以打开也可以关闭; 数据 Cache 必须关闭;3.7 U-BOOTU-Boot,全称 Universal Boot Loader,是遵循GPL条款的开放源码项目。 U-BOOT是由德国的工程师Wolfgang Denk从FADSROM、8xxROM、PPCBOOT逐步发展演化而来的,支持很多处理器,比如PowerPC、ARM、MIPS和x86。3.7.1 U-BOOT源码源码U-BOOT源代码目录结构(比较古老的版本结构) : board: 和一些已有开发板有关的文件, common:与体系结构无关的文件,实现各种命令的C文件 cpu: 处理器底层初
18、始化文件 disk: disk驱动的分区处理代码 doc: 文档 drivers: 通用设备驱动程序 fs: 文件系统支持实现 include: 头文件 net: 与网络有关的代码,包括各网络协议 lib_arm: 与ARM体系结构相关代码 tools: 创建S-Record格式文件 和U-BOOT images的工具 3.7.2 U-BOOT的特点的特点 U-BOOT支持SCC/FEC以太网、OOTP/TFTP引导、IP和MAC的预置功能,这一点和其它BootLoader(如BLOB和RedBoot等)类似。但U-BOOT还具有一些特有的功能:在线读写Flash、DOC、IDE、IIC、EE
19、ROM、RTC支持串行口kermit和S-record下载代码识别二进制、ELF32、uImage格式的Image单任务软件运行环境监控(minitor)命令集 脚本语言支持 支持WatchDog、LCD logo和状态指示功能等 支持MTD和文件系统 3.7.3 编译编译U-BOOT首先下载支持目标设备的U-BOOT,如果不支持目标设备,还需要修改底层代码下载源码包后,解压缩 $ tar xvfj u-boot-1.4.1.tar.bz2 编译后产生u-boot.bin文件 $ make at91rm9200dk_config $ make all 3.7.4 U-BOOT常用命令常用命令常
20、用命令介绍:常用命令介绍:go - start application at address addr run - run commands in an environment variable bootm - boot application image from memory bootp - boot image via network using BootP/TFTP protocol tftpboot - boot image via network using TFTP protocol and env variables ipaddr and serverip (and event
21、ually gatewayip) loadb - load binary file over serial line (kermit mode) printenv - print environment variables setenv - set environment variables saveenv - save environment variables to persistent storage 3.7.5 配置配置U-BOOT环境环境将编译好的u-boot文件烧写进目标设备后引导,配置u-boot运行环境:U-Boot setenv ethaddr 12:34:56:78:99:
22、aa设定 MAC地址U-Boot setenv ipaddr 7 设定ip地址U-Boot setenv serverip 2 tftp服务器的ip地址U-Boot setenv bootdelay 3 设定启动延迟U-Boot setenv autostart no 取消自启动U-Boot setenv bootargs root=/dev/ram rw initrd=0 x21100000,6000000 ramdisk_size=15360 console=ttyS0,115200 mem=32M 设定引导环境变量各参数(设定根文件系统的起始地
23、址,根文件系统文件的容量,终端及终端传输速率,内存的容量)3.7.5 配置配置U-BOOT环境环境U-Boot saveenv 保存设置U-Boot tftp 20000000 uImage 将内核映象文件通过tftp软件拷贝到内存里U-Boot era 10020000 100fffff 擦除flash U-Boot cp.b 20000000 10020000 fffff 将uImage文件从内存拷贝到flash U-Boot tftp 20000000 ramdisk.rom 将ramdisk文件拷贝到内存U-Boot era 10100000 101fffff 擦除flashU-Boo
24、t cp.b 20000000 10100000 fffff 将ramdisk.rom文件从内存拷贝到flashU-Boot bootm 10100000 引导系统,执行:U-Boot bootm 100200003.7.6 mkimage工具工具mkimage是u-boot 带的一个工具,所在目录为u-boot源码目录中的tools目录。在这个目录执行make mkimage,就可以编译好。 Mkimage参数介绍: -A (体系结构设置)-O (对应的哪种操作系统)-C (识别的文件格式) -a (启动执行地址)-e (入口地址,解压到ram的地址)-d (由何源文件生成何目的文件)-T
25、(使系统识别文件格式为内核文件还是应用程序文件)mkimage使用举例: $ mkimage -A arm -O linux -C gzip T standalone -a 0 x21100000 -e 0 x21100000 -d your_ramdisk romfs 3.7.7 U-BOOT启动信息启动信息U-Boot 0.3.2 (Apr 14 2004 - 08:08:51)U-Boot code: 21F00000 - 21F14214 BSS: - 21F1FC3CDRAM Configuration:Bank #0: 20000000 32 MBAMD: AM29DL323D (32Mbit)Flash: 4 MBDataFlash:AT45DB642Nb pages: 8192Page Size: 1056Size= 8650752 bytesLogical address: 0 xC0000000Hit any key to stop autoboot: 0Saving Environment to Flash.Un-Protected 1 sectorsErasing Flash.Erasing sector 7 . wait:mok.Erased 1 sectorsWriting to Flash
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度数据中心建设项目结算与节能减排服务合同
- 2025年度工业自动化设备检测与维护服务合同
- 2025年度材料科学检测检验服务合同(全新版)
- 2025年度家庭装修工程环保验收与整改合同
- 2025年度公园游客休闲设施设计与制造合同
- 铁岭2025年辽宁铁岭市事业单位面向驻铁部队随军未就业家属招聘12人笔试历年参考题库附带答案详解
- 贺州2025年广西贺州市昭平县赴玉林师范学院招聘教师64人笔试历年参考题库附带答案详解
- 西双版纳云南西双版纳州土地矿产储备中心招聘笔试历年参考题库附带答案详解
- 苏州2024年江苏苏州太仓市消防救援大队政府专职消防救援站招聘30人笔试历年参考题库附带答案详解
- 茂名2025年广东省茂名市选聘市属高职院校急需紧缺博士人才12人笔试历年参考题库附带答案详解
- 土建、装饰、维修改造等零星工程施工组织设计技术标
- 宠物猫护理教学
- 2024年江苏经贸职业技术学院单招职业适应性测试题库
- 《大白菜种植栽培技》课件
- 图书借阅登记表
- 2024年重庆市公务员录用考试《行测》真题及解析
- 中华人民共和国能源法
- 人居环境综合治理项目项目背景及必要性分析
- 2024年法律职业资格考试(试卷二)客观题试题及解答参考
- 2024年注册建筑师-二级注册建筑师考试近5年真题附答案
- 川教版信息技术六年级下册全册教案【新教材】
评论
0/150
提交评论