内容大纲
内容关键字:
映像文件
RO代码段
ZI未初始化数据段
RW数据段
Load Address加载地址
Execu o n A ddress 执行地址
Stack Pointer栈空间指针
Boot相关硬件
• Flash Rom(可作为bootrom的存储器)
Boot相关硬件
• 建立异常向量表Boot相关硬件
Boot的主要功能
• 初始化中断
• 初始化硬件设备
• 初始化应用程序执行环境
• 跳转到主应用程序
初始化硬件• 软件的运行离不开硬件,boot必须对硬件进
行初始化。硬件的初始化主要通过配置特
殊控制寄存器来完成,包括下面几部分:
关闭开门狗
屏蔽所有的中断
初始化PLL和时钟。
初始化储存系统
初始化应用程序的执行环境
• Elf文件的类型:可执行文件、可重定位文
件、共享库object(又叫做共享库)文件。
• Elf文件的功能:
1、用作链接器的输入生成可执行的映像文件
2、可装载到内存里运行,完成特定功能的文件。
• Elf文件头elf文件的物理结构
• Sec o n: .text .d ata .b ss. sym t ab
• Program header
• 可重定位文件与可执行文件的区别:
区与段的概念
program header
可执行映像文件的逻辑结构
由几个可重定位的目标文件的相同属性区组
成了可执行映像的段,那么段有组成什么?
在逻辑结构里,段组成了更大的组织:域
• 大多数情况下,映像文件在执行前把它装载到rom中,而当运行时域里 的有些输出段必须复制到ram中,程序才能正常运行,所以,在装载和运行时,有些段处在不同的位置(地址空间)。
• 由图可以看出,映像文件zi段在装载域里是不存在的,在运行域里才建立的;映像文件在运行时,第一件工作就是把rw输出段复制到ram里的正确位置,第二件工作就是建立zi输出段并初始化为0。这就是应用程序执行环境的初始化。然而,在运行时,代码和数据分布到了不同的地址空间,形成了三个运行域:ro运行域、rw运行域、zi运行域。那么这个过程是如何来实现的?
• |Image$$RO$$Base|; Base of ROM code
|Image$$RO$$Limit| ; End of ROM code
(=start of ROM data)
|Image$$RW$$Base| ; Base of RAM to
ini a l ise
|Image$$ZI$$Base| ; Base and limit of area
|Image$$ZI$$Limit| ;
分散装载技术
• 分散装载技术可以把用户的应用程序分割成多个RO运行域和RW运行域,并且给他们指定不同的地址,这在嵌入式系统的实际应用中有很多的好处。在一个嵌入式系统中,fl a sh 、16位ram、32位ram都可能存在于系统中,所以将不同功能的代码定位于特定的位置上会大大提高系统的运行效率。