uboot的启动流程
来源:互联网 发布:qq飞车沙漠之狐数据 编辑:程序博客网 时间:2024/04/30 23:40
uboot的启动流程:通用的uboot
ctags -R 在当前目录下生成tags的索引文件
ctrl +] 跳转
ctrl + o 后退
启动代码:arch/arm/cpu/armv7/start.o (.text*)
第一个阶段:
构建异常向量表
||
\/
b reset
设置cpu的工作模式
关闭中断
||
\/
bl cpu_init_cp15
关闭cache TLB 等于MMU相关
关闭MMU
||
\/
bl cpu_init_crit
||
\/
b lowlevel_init
判断uboot的状态,是否是被唤醒?
判断是否已经在内存中运行?
如果不是--->初始化时钟、内存
如果是 -》beq 1f
||
\/
bl uart_asm_init 初始化串口
||
\/
bl _main
初始化C语言运行环境、栈
||
\/
bl board_init_f C语言函数
初始化一些全局变量
gd->bd->bi_boot_params = (PHYS_SDRAM_1 + 0x100UL); 0x40000100 uboot传递参数的地址
遍历init_sequence数组,执行初始化函数。
for (init_fnc_ptr = init_sequence; *init_fnc_ptr; ++init_fnc_ptr) {
if ((*init_fnc_ptr)() != 0) {
hang ();
}
}
对高端内存空间的分配
||
\/
对相关寄存器的赋值,决定uboot要搬移的位置和大小。
||
\/
b relocate_code uboot的搬移
搬移代码:
copy_loop:
ldmia r0!, {r9-r10} /* copy from source address [r0] */
stmia r1!, {r9-r10} /* copy to target address [r1] */
cmp r0, r2 /* until source end address [r2] */
blo copy_loop
还要进行符号重定位。
||
\/
清空bss段
143 ldr r0, =__bss_start /* this is auto-relocated! */
ldr r1, =__bss_end__ /* this is auto-relocated! */
mov r2, #0x00000000
copy_loop:
ldmia r0!, {r9-r10} /* copy from source address [r0] */
stmia r1!, {r9-r10} /* copy to target address [r1] */
cmp r0, r2 /* until source end address [r2] */
blo copy_loop
||
\/
第二阶段:进入C语言代码
ldr pc, =board_init_r
for (;;) {
main_loop();
}
uboot任务结束。
Linux 内核:
内核、操作系统
特点:
可以移植,支持的硬件平台广泛
高可扩展性
高可靠性、稳定性
模块化设计:高内聚、低耦合
遵循GPL开源许可协议的,开放系统。
Linux内核版本:
www.kernel.org
次版本号为偶数都是稳定版。
版本选择:
1、支持对应平台
2、比较成熟。
进程管理
内存管理
文件系统
网络协议
设备管理
linux内核源码的目录结构:
平台相关:arch
平台无关:block crypto(加密算法) driver fs ipc
文档:Documentation
内核配置、编译:
配置:
1、导入默认配置
两种方法:
1)cp arch/arm/configs/xxxx_config .config
2) make xxx_defconfig
2、编译
make uImage 生成内核镜像
make modules 生成模块
make dtbs 生成设备树文件
make clean
添加自己的配置:就是操作 .config 文件
make xconfig 需要QT库
make config
make menuconfig 我们需要的,
使用:
[] 有两个选项,Y: 选择, N:不选择 使用空格切换。
< > 有三个选项,Y: 选择, N:不选择 , M: 编译成模块
/ :搜索
添加菜单:修改Kconfig
menu xxx
要添加的菜单:
config FS4412_LED ---》和Makefile关联的名字
tristate "FS4412_LED Deivce Support" 菜单的名字
depends on ARCH_EXYNOS4
help support led device on board
endmenu
tristate: 添加的菜单有三个选项,即 < >
bool : 添加的菜单有两个选项,即 []
depends on: 就是该菜单的显示需要依赖于某一个菜单。
default :设置默认状态 y, n, m
help: 帮助文档,可有可无
source : 需要引用其他菜单。
详情参考: Documentation/kbuild/kconfig-language.txt
0 0
- Uboot的启动流程
- uboot的启动流程
- uboot启动内核的流程分析
- uboot启动流程
- uboot启动流程
- uboot 启动流程分析
- Uboot 启动流程简介
- Uboot启动流程分析
- uboot启动流程
- uboot启动流程
- Uboot启动流程分析
- Uboot启动流程
- uboot 启动流程 freescale
- uboot启动流程-s3c2410
- G870 uboot启动流程
- uboot启动流程二
- uboot 启动流程
- Uboot 启动流程简介
- 机器学习 刀光剑影 之屠龙刀_腾讯大数据
- linux内核的编译过程
- 第五部分:UI基本布局 & 引入布局(LinearLayout、RelativeLayout、FrameLayout、TableLayout)
- HDU1394 Minimum Inversion Number(线段树)
- Java注解Annotation详解
- uboot的启动流程
- Qualcomm平台camera调试移植入门
- java基于TCP的socket数据包拆分方法
- Python读取写入TXT正确姿势
- NYOJ_123_士兵杀敌(四)插线问点
- Python 写文件
- 暴雨产生的后果
- 系统运行步骤
- vs2015配置opencv2.4.9问题解决