1 / 22

BootLoader 开发介绍

BootLoader 开发介绍. 主要 内容. BootLoader 简介 Bootloader 流程 Bootloader 功能简介. 实验目的. 1 .了解 Bootloader 的基本概念及构成 ; 2 .学习内核移植的方法 ; 3 .学习应用程序下载的方法。. 2. 实验内容. BootLoader 简介 Bootloader 流程 Bootloader 功能简介 内核下载实验 应用程序下载实验. 3. 实验设备. 硬件: UP-TECHPXA270-S 嵌入式开发板、 PC 机 Pentumn500 以上 , 硬盘 10G 以上。

cuyler
Download Presentation

BootLoader 开发介绍

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. BootLoader开发介绍

  2. 主要内容 • BootLoader 简介 • Bootloader 流程 • Bootloader 功能简介

  3. 实验目的 1.了解Bootloader的基本概念及构成; 2.学习内核移植的方法; 3.学习应用程序下载的方法。

  4. 2. 实验内容 • BootLoader 简介 • Bootloader 流程 • Bootloader 功能简介 • 内核下载实验 • 应用程序下载实验

  5. 3.实验设备 • 硬件:UP-TECHPXA270-S嵌入式开发板、PC机Pentumn500以上, 硬盘10G以上。 • 软件:PC机操作系统REDHAT LINUX 9.0 +MINICOM + ARM-LINUX开发环境+FlashFXP软件

  6. 4.实验原理 • Bootloader代码(即启动代码)就是芯片复位后进入操作系统之前执行的一段代码,主要是为运行操作系统提供基本的运行环境,如初始化CPU堆栈、初始化存储器系统等。Bootloader代码与CPU芯片的内核结构、具体芯片和使用的操作系统等因素有关,其功能有点类似于PC机的BIOS(Basic Input/Output System,基本输入输出系统)程序。

  7. 一个简单BootLoader流程图

  8. Bootloader 启动过程 开 始 初始化与中断有关的寄存器 建立异常向量表 初始化串口 初始化时钟 初始化协处理器 建立堆栈 引导操作系统 初始化flash ROM, SDRAM 结 束 执行重映射,建立新的异常向量表

  9. BootLoder作用 • Bootloader的作用: • 嵌入式系统的资源有限,应用程序通常都是固化在ROM中运行。ROM中的程序执行前,需要对系统硬件和软件运行环境进行初始化。这些工作是用汇编语言和C语言编写的Bootloader代码完成的。在ARM处理器的嵌入式系统中,Bootloader代码的作用主要有以下几点: • 建立中断向量表 • 初始化CPU各种模式的堆栈和寄存器 • 初始化flash ROM,SDRAM等各种片内外设 • 实现地址重映射 • 初始化目标板; • 引导操作系统

  10. 建立中断向量表 建立中断向量表: LDR PC,ResetAddr //reset LDR PC,UndefinedAddr //undefined LDR PC,SWI_Addr //software interrupt LDR PC,PrefetchAddr //prefetch LDR PC,DataAbortAddr //data abort LDR PC,[PC,#-0xff0] //irq LDR PC,FIQ_Addr //fiq

  11. 初始化堆栈 初始化堆栈: MOV R0,LR 因芯片模式切换,故将程序返回地址保存至R0,同时在初始化堆栈完成后使用R0返回. MSR CPSR_c,#0xd3 ;设置管理模式堆栈 LDR SP,StackSvc MSR CPSR_c,#0xd2 ;设置中断模式堆栈 LDR SP,StackIrq MSR CPSR_c,#0xd1 ;设置快速中断模式堆栈 LDR SP,StackFiq

  12. 初始化堆栈 初始化堆栈:初始化堆栈 MSR PSR_c,#0xd7 ;设置中止模式堆栈 LDR SP,StackAbt MSR CPSR_c,#0xdb ;设置未定义模式堆栈 LDR SP,StackUnd MSR CPSR_c,#0xdf ;设置系统模式堆栈 LDR SP,StackUsr MOV PC,R0

  13. 初始化外设 初始化外设: 初始化外设主要是指初始化cpu内部的控制寄存器,比如:lcd 控制器,网络控制器等等,主要是靠汇编语言来完成 实例代码: LDR R1,=0x3ff5000 ;外设寄存器1地址 LDR R0,=0x0 STR R0,[R1] ;赋初值 LDR R0,=0x3ff5008 ;外设寄存器2地址 LDR R1,[R0] ;取出寄存器的值 AND R1,R1,#0x08 CMP R1,#0x08 ;测试bit3

  14. 地址重映射 地址重映射: 地址重映射是实现RAM和ROM的物理地址对调,在嵌入式系统里面: 0x0地址ROM的开始地址,RAM开始地址是非0x0的地址,在bootloader汇编代码中需要将RAM的地址和ROM的地址对调,这样一个过程,我们叫做地址重映射 地址重映射的代码举列: LDR r0, =0x3FF0000 + 0x3010 LDR r1, =0x00003002 LDR r2, =0x12040060 LDR r3, =rROMCON1 LDR r4, =rROMCON2 LDR r5, =rROMCON3 LDR r6, =rROMCON4 LDR r7, =rROMCON5

  15. 地址重映射 地址重映射 地址重映射的代码举列: LDR r8, =0x10000380 LDR r9, =rSDRAMCON1 LDR r10,=rSDRAMCON2 LDR r11,=rSDRAMCON3 LDR r12,=rSREFEXTCON STMIA r0, {r1-r12} 问题:地址重映射的作用是什么?

  16. 初始化目标板 初始化目标板: 初始化目标板主要是指初始化cpu的时钟,设置存储器加速,打开中断和目标板特性相关初始化配置 注意: 每个目标板的硬件配置都不完全样,初始化目标板程序都不会完全一样.

  17. 引导操作系统 引导操作系统: 引导操作系统是一个很复杂的过程,我们在这里讲的是在如何在bootloader里面将linux kernel加载到RAM中并且跳转到RAM中开始启动Linux,以下是导操作代码举列: //将ROM中的linux kernel搬移到RAM中 om2ram_copy_loop ldr r3, [r0], #4 str r3, [r2], #4 subs r1, r1, #4 bne rom2ram_copy_loop //跳转到RAM中的Linux开始地址 LDR R0,=kernel address MOV PC,R0

  18. 5.实验步骤 1. 应用程序下载--FlashFXP传输 双击FlashFXP程序,点击会话/快速连接,进入如下画面:

  19. 进入如下对话框:

  20. 输入开发板的IP地址及用户名,注意开发板的IP一定要与Windows下的主机IP地址在同一网段,然后在屏幕右端出现会出现开发板的目录。输入开发板的IP地址及用户名,注意开发板的IP一定要与Windows下的主机IP地址在同一网段,然后在屏幕右端出现会出现开发板的目录。

  21. 在左端目录下搜索准备传输的文件,在右端确定准备存放文件的路径。在左端目录下找到对应需要传输的文件,点击鼠标右键,出现以下对话框,点击传输即可。在左端目录下搜索准备传输的文件,在右端确定准备存放文件的路径。在左端目录下找到对应需要传输的文件,点击鼠标右键,出现以下对话框,点击传输即可。

  22. 如果传送不过去,应在开发板对应的文件夹下修改属性,输入rtrw命令,同时还应该输入inetd命令启动开发板的网络服务。如果传送不过去,应在开发板对应的文件夹下修改属性,输入rtrw命令,同时还应该输入inetd命令启动开发板的网络服务。 • 建立设备连接: • mkdir /dev/tts • ln –s /dev/ttyS0 /dev/tts/0

More Related