ARM学习笔记012之mini2440上电的启动和初始化程序分析(即Bootloader分析)
2013-12-06 09:35
651 查看
嵌入式系统中的boot Loader 的实现完全依赖于CPU 的体系结构,因此大多数Boot
Loader 都分为第一阶段和第二阶段两大部分,依赖于CPU 体系结构的代码,比如设备初始
化代码等,通常都放在阶段1 中,而且通常都用汇编语言来实现,以达到短小精悍的目的。
而阶段2 则通常用C 语言来实现,这样可以实现一些复杂的功能,而且代码会具有更好的
可读性和可移植性。
第一阶段包括:
(1)硬件设备的初始化
①初始化GPIO 功能
②设置CPU的速度和时钟频率
③存储控制单元初始化
(2)拷贝Bootloader的程序到RAM空间中
(3)设置好堆栈
(4)跳转到阶段2的C人口地址
第二阶段包括:
(1)初始化本阶段要使用到的硬件设备;
①初始化至少一个串口
②初始化计时器(定时器)
③初始化网络传输等
(2)系统内存映射(memory map);
(3)将kernel 映像和根文件系统映像从Flash 读到RAM 空间中;
即加载内核映象和根文件系统映象
(4)为内核设置启动参数;
(5)调用内核。
详见我的360网盘文件《实验三 Bootloader实验》pdf
Loader 都分为第一阶段和第二阶段两大部分,依赖于CPU 体系结构的代码,比如设备初始
化代码等,通常都放在阶段1 中,而且通常都用汇编语言来实现,以达到短小精悍的目的。
而阶段2 则通常用C 语言来实现,这样可以实现一些复杂的功能,而且代码会具有更好的
可读性和可移植性。
第一阶段包括:
(1)硬件设备的初始化
①初始化GPIO 功能
②设置CPU的速度和时钟频率
③存储控制单元初始化
(2)拷贝Bootloader的程序到RAM空间中
(3)设置好堆栈
(4)跳转到阶段2的C人口地址
第二阶段包括:
(1)初始化本阶段要使用到的硬件设备;
①初始化至少一个串口
②初始化计时器(定时器)
③初始化网络传输等
(2)系统内存映射(memory map);
(3)将kernel 映像和根文件系统映像从Flash 读到RAM 空间中;
即加载内核映象和根文件系统映象
(4)为内核设置启动参数;
(5)调用内核。
详见我的360网盘文件《实验三 Bootloader实验》pdf
相关文章推荐
- ARM&LINUX学习笔记(6)------启动代码分析
- STM32学习笔记之中断向量表,MDK程序启动分析
- Linux内核分析第七周学习笔记——Linux内核如何装载和启动一个可执行程序
- EasyARM2200开发板学习笔记:启动代码分析
- ARM学习笔记11——GNU ARM汇编程序设计
- ARM-LINUX学习笔记-(虚拟机linux串口终端以及USB程序下载,基于TQ2440)
- 深入MTK平台bootloader启动之【 Pre-loader -> Lk】分析笔记
- ARM学习笔记5-S5pv210开发板启动
- android逆向学习,笔记(三)静态分析android程序
- arm-linux内核启动学习笔记(二)(废弃)
- 启动程序BootLoader的分析
- mini2440启动代码分析之第一篇(注意名字,不是bootloader)
- U-Boot学习笔记(二):U-Boot--arm--Start.S的分析
- 微信小程序学习笔记(2)----HelloWorld分析
- linux0.11学习笔记-技术铺垫-简单AB任务切换程序(2)-可加载执行其他程序的bootloader
- 基于ARM的嵌入式系统Bootloader启动流程分析
- linux-3.2.36内核启动2-setup_arch中的内存初始化1(arm平台 分析高端内存和初始化memblock)【转】
- Zookeeper学习笔记:客户端程序分析一
- 基于ARM的嵌入式系统Bootloader启动流程分析----- 转!!
- Zigbee系列 学习笔记三(初始化程序解析)