




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 3.3 基于 S3C2410 开发板的 BootLoader 实现 本节将以实例讲述基于 S3C2410 开发板的 BootLoader 的具体实现,主要分两个方 面进行介绍,一是介绍基于 U-Boot 的移植,二是介绍 DIY 方式开发 BootLoader 。要移 植或开发 BootLoader 首先要清楚具体的硬件系统, 在这里就是要了解我们使用的目标板 S3C2410 开发板。 3.3.1 S3C2410 开发板介绍 本书中所设计的开发板相关的实例都是基于 S3C2410 开发板设计和测试的。 S3C24 10 开发板是非常通用的一款 ARM 9 开发板,读者使用任何类型的 ARM
2、9 开发板都能 参考书中的实例。 S3C2410 开发板的基本配置如下: CPU 采用三星的 S3C2410 ARM920T ,主频 203MHz 。集成有 SDRAM 内存控制器、 NA ND Flash控制器、 SD卡控制器、 USB Host和USB Device控制器、 LCD 控制器、 IIC 总线控制器、 IIS 控制器、 SPI 接口等多种接口。 存储器 注 64MB 的 SDRAM ;64MB 的 NAND Flash注 1。* 以太网控制器 10MB 网口、 CS8900Q3 、带联接和传输指示灯。 串行接口 系统提供两个串行收发 DB9 母口连接器,上面分别表示 COM0
3、、 COM1 。 USB Host 接口 两个 USB1.1HOST 接口;一个 USB 1.1Device 接口。 存储接口 一个 SD 卡接口;一个十针的 AD 接口;一个 IDE 接口。 LCD 和触摸屏接口 一个 50 芯 LCD 接口引出了 LCD 控制器和触摸屏的全部信号。 提供 TFT 真彩 LCD 的接口, LCD 模块不需要外接电源等,插入该接口直接可以使 用。接口另外还带触摸屏的接口。 调试及下载接口 20 针 Multi-ICE 标准 JTAG 接口,支持 SDT2.51 和 ADS1.2 调试。 音频接口 采用 IIS 接口芯片 UDA1341 ,一路立体声音频输出接口
4、可接耳机或音箱; 支持录音, 开发板自带主机体话筒可直接录音,另有一路话筒输入接口可接麦克风。 电源接口 5V 电源供电,带电源开关和指示灯。 操作系统 支持 Linux 2.4 或以上系统,支持 Windows CE。 开发板上包括 1片 64M 8位数据宽度的 NAND Flash( K9F1208 )和 2片 16M16 位数据宽度的 SDRAM ,地址范围为 0 x30000000 0 x34000000。S3C2410 将系统的存储 空间分为 8组( Bank),每组大小为 128MB ,共 1GB 。Bank0到 Bank5 之间的开始地址 是固定的,用于 ROM或 SRAM ;B
5、ank6 和 Bank7 用于 ROM 、SRAM 或 SDRAM , 这两个组是可编程且大小相同的。 S3C2410具有 3种启动方式,通过 OM1:0 管脚进行 选择。 OM1:0 00 时,处理器通过 NAND Flash 启动; OM1:0 01 时,处理器通过 16 位宽的 ROM 启动; OM1:0 10 时,处理器通过 32 位宽的 ROM 启动。 由于 NAND Flash 有容量大,比 sh 启动。当从 Nor Flash 启动时,要把 Nor Flash 便宜等优势,所以经常选择 NAND Fla Flash 芯片的首地址映射到 0 x00000000 位置,系 统启动后,
6、启动程序本身把自己从 Flash搬运到 RAM 中去。当从 NAND Flash 启动时, S3C2410 会自动把 NAND Flash 的前 4KB 数据搬到自己内部的 RAM 中去,并把内部 R AM 的首地址设为 0 x00000000,CPU从0 x00000000 地址开始运行。本章选择的实现启 动方式就是通过 NAND Flash启动。如图 3.1所示为通过 Nor Flash 启动和 NAND Flas h 启动两种方式存储空间的分配,图( a)是 nGCS0 片选的 Nor Flash 启动模式存 储分配图;图( b)是 NAND Flash 启动模式的存储分配图。其中 SF
7、R 为 Special Funct ion Register 的缩写,即特殊功能寄存器。 3.3.2 U-Boot 分析与移植 本节以应用非常广泛的 U-Boot 为例讲述基于 S3C2410 开发板的 BootLoader 分析与 移植。解压 u-boot-1.1.6.tar.bz2 包,查看其目录结构如下所示: # tree L 1 -d |- board |- common |- cpu |- disk |- doc |- drivers |- dtt |- examples |- fs |- include |- lib_arm |- lib_avr32 |- lib_blackfin
8、 |- lib_generic |- lib_i386 |- lib_m68k |- lib_microblaze |- lib_mips |- lib_nios |- lib_nios2 |- lib_ppc |- nand_spl |- net |- post |- rtc - tools 26 directories (a) (b) 图 3.1 两种启动方式内存映射的比较 (a) Not using NAND Flash for booting ROM; (b) Using NAND Flash for booting ROM 大多数 BootLoader 都包含 “启动加载 ”模式和
9、“下载 ”模式,U-Boot 作为一款强大的 B oot- Loader 也支持这两种工作模式,并且允许用户在这两种模式之间切换。同时 U-Bo ot 也分为 Stage1 和 Stage2两个阶段,其中依赖于 CPU 体系结构的代码通常都放在 Stag e1里,并且通常用汇编语言实现; Stage2通常用 C 语言实现,可以实现更复杂的功能, 并且有更好的移植性和可读性。 1 U-Boot Stage1 分析 U-Boot 的 Stage1 通常是在 start.S 文件中实现的,并且都是用汇编语言编写的。一 个可执行性 image 文件必须有一个入口点,并且只能有一个全局入口点,通常这个入
10、口 点的地址放在 ROM (Flash) 0 x0 位置,因此必须使编译器知道这个入口地址,该过程 通常通过修改连接器的脚本文件来完成。由于 S3C2410 开发板与 smdk2410 开发板的配 置接近,所以此处参考 smdk2410 的 U-Boot 实现程序。打开 board/smdk2410/ u-boot.lds 文件,该脚本文件的内容如下所示: OUTPUT_FORMAT(elf32-littlearm, elf32-littlearm, elf32-littlearm) OUTPUT_ARCH(arm) ENTRY(_start) SECTIONS . = 0 x00000000
11、; . = ALIGN(4); .text : cpu/arm920t/start.o (.text) *(.text) . = ALIGN(4); .rodata : *(.rodata) . = ALIGN(4); .data : *(.data) . = ALIGN(4); .got : *(.got) _u_boot_cmd_start = .; .u_boot_cmd : * (.u_boot_cmd) _u_boot_cmd_end = .; . = ALIGN(4); _bss_start = .; .bss : * (.bss) _end = .; 其中, ENTRY(_sta
12、rt) 在 cpu/arm920t/start.S 文件定义了入口点,入口地址为 0 x0000 0000 。在 cpu/arm920t/config.mk 文件中定义了代码区基地址 TEXT_BASE = 0 x33F8000 0。接下来分析 U-Boot 的 Stage1 的核心文件 start.S。 ( 1)设置异常向量表 ARM 处理器一般包括复位、未定义指令、 SWI 、预取终止、数据终止、 IRQ、FIQ 等异常, 关于 ARM 处理器这些异常在后面会有专门的介绍, 其中 U-Boot 中关于异常向 量的定义如下, 当发生异常时执行 cpu/arm920t/ interrupts.
13、c 文件。 .globl _start reset start: b ldr pc, _undefined_instruction ldr pc, _software_interrupt ldr pc, _prefetch_abort ldr pc, _data_abort ldr pc, _not_used ldr pc, _irq ldr pc, _fiq ( 2)设置 CPU 模式为 SVC 模式 Reset 即复位,在系统中经常会用到,该操作是异常处理的第一个操作,其主要目 的是设置 CPU 模式为 SVC 模式。在此有必要介绍一下 ARM 处理器的 7 种工作模式。 用户模式( us
14、r ) ARM 处理器正常的程序执行状态; 快速中断模式( fiq ) 用于高速数据传输或通道处理; 外部中断模式( irq ) 用于通用的中断处理; 管理模式( svc ) 操作系统使用的保护模式; 数据访问终止模式( abt ) 当数据或指令预取终止时进入该模式,可用于虚拟 存储及存储保护; 系统模式( sys ) 运行具有特权的操作系统任务; 未定义指令中止模式( und) 当未定义的指令执行时进入该模式,可用于支持 协处理器的软件仿真。 ARM 微处理器共有 37个 32位寄存器,其中 31 个为通用寄存器, 6个为状态寄存 器。但是这些寄存器不能被同时访问,具体哪些寄存器是可编程访问
15、的,取决于微处理 器的工作状态及具体的运行模式。但在任何时候,通用寄存器R0 R14、程序计数器 P C、一个或两个状态寄存器都是可访问的。通用寄存器包括R0R15 ,可以分为 3 类。 未分组寄存器 R0 R7 在所有的运行模式下, 未分组寄存器都指向同一个物理 寄存器, 它们未被系统用作特殊的用途。 因此, 在中断或异常处理进行运行模式转换时, 由于不同处理器的运行模式均使用相同的物理寄存器,可能会造成寄存器中数据的破 坏,这一点在进行程序设计时应引起注意。 分组寄存器 R8 R14 对于分组寄存器,它们每一次所访问的物理寄存器与处 理器当前的运行模式有关。 对于 R8 R12来说,每个寄
16、存器对应两个不同的物理寄存器, 当使用 fiq 模式时,访问寄存器 R8_fiq R12_fiq ;当使用除 fiq 模式以外的其他模式 时,访问寄存器 R8_usr R12_usr 。对于 R13、R14来说,每个寄存器对应 6 个不同的物 理寄存器,其中的一个是用户模式与系统模式共用,另外 5 个物理寄存器对应于其他 5 种不同的运行模式。 程序计数器 PC(R15) 在 ARM状态下, 位1:0 为 0,位 31:2 用于保存 PC;在 Thumb状态下,位 0 为 0,位 31:1 用于保存 PC。虽然可以用作通用寄存器,但是有一 些指令在使用 R15 时有一些特殊限制,若不注意,执行
17、的结果将是不可预料的。在 ARM 状态下, PC的 0 和 1 位是 0,在 Thumb状态下, PC 的 0 位是 0。注意, Thumb状态下的 寄存器集是 ARM状态下寄存器集的一个子集,程序可以直接访问8 个通用寄存器( R7 R0)、程序计数器( PC)、堆栈指针( SP)、连接寄存器( LR)和 CPSR。同时,在每一 种特权模式下都有一组 SP、 LR和 SPSR。 设置 CPU 模式为 SVC 模式操作的具体实现代码如下,其中CPSR 是 Current Progr am Status Register 的缩写, 即当前程序状态寄存器, 寄存器 R16 用作 CPSR,CPSR
18、 可 在任何运行模式下被访问,它包括条件标志位、中断禁止位、当前处理器模式标志位, 以及其他一些相关的控制和状态位。 每一种运行模式下又都有一个专用的物理状态寄存器, 称为 SPSR 是 Saved Progra m Status Register 的缩写,即备份程序状态寄存器,当异常发生时,SPSR 用于保存 CP SR 的当前值,从异常退出时则可由 SPSR 来恢复 CPSR。与 CPU 相关的寄存器设置需 要参考 S3C2410 的用户手册来实现。 mrs r0,cpsr bic r0,r0,#0 x1f orr r0,r0,#0 xd3 msr cpsr,r0 ( 3)关闭看门狗 看门狗即 watchdog timer ,是一个定时器电路,一般有一个输入叫喂狗,一个输出 到 MCU ( Micro Controller Unit ,多点控制单元)的 RST 端(复位端) 。 MCU 正常工 作的时候,每隔一段时间输出一个信号到喂狗端,给WDT ( watchdog timer 的简写) 清零,如果超过规定的时间不喂狗,一般在程序跑飞时 WDT 定时超过,就会给出一个 复位信号到
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年仓储货物仓储合同签订流程样本
- 2025年石家庄市新华区第一幼儿园招聘考试参考试题及答案解析
- 2025年婚礼婚礼现场安保服务合同协议
- 2025年直播平台广告代理服务合同
- 2025年新能源行业绿色国际合作与市场拓展研究报告
- 2025年三八妇女节妇女权益保障法律知识竞赛题库及答案
- 2025年低空经济空中交通管理伦理挑战与法规应对报告
- 2025年医疗质量与安全教育培训试题及答案
- 2025年低空经济产业投资风险预警报告
- 宁波历史中考试题及答案
- 杏鲍菇出菇期的管理
- GB/T 42579-2023北斗卫星导航系统时间
- 拌料机操作规程
- 冷冻干燥技术基础知识课件
- JJF 1048-1995数据采集系统校准规范
- GB/T 14100-2016燃气轮机验收试验
- GB/T 12615.4-2004封闭型平圆头抽芯铆钉51级
- GA 1524-2018射钉器公共安全要求
- 组织学与胚胎学:6 肌组织
- 企业降本增效培训课件
- 邀请函模板完整
评论
0/150
提交评论