典型的flash存储空间分配
bootloader+启动参数+内核+根文件系统
U-boot
stage1(汇编)和stage2(C语言)两大部分
(1)硬件设备初始化
(2)为加载引导系统的stage2准备ram空间
。。。
引导系统的stage2:
。。。
(5)调用内核
。。。
vivi
arm架构的bootloader
- vivi命令。。
4.1.2 C语言编译过程
.c→预处理.I→(汇编) *.s→(编译)→*.o→(link) exe
gcc:包含预处理,编译器、汇编器、连接器等组件
预处理:对源程序中的预处理命令和特殊符号进行预处理。
gcc -E x.c -o x.i
gcc -I /usr/openwin/include file.c
gcc -D DOPTION"test -D" testd.c
静态库
动态库,共享库。
objdump -d -s//查看2进制文件
4.2.1 gdb调试器简介
- gdb
可以使程序开发者在程序运行时观察程序的内部结构。 - gdb所提供的功能
- 设置断点
- 监视、修改变量
- 单步执行
- 显示/修改寄存器的值
- 查看堆栈
- 远程调试
- 利用gdb调试的前提
在程序的使用过程中,使用-g选项,生成gdb工作所必须的调试信息;
gcc -g -o test test.c
启动gdb的方法 - gdb(进入环境)
- gdb filename
说明:filename是可执行文件,而不是源代码文件
r(run)
n(单步执行)
p
通过时间戳检验改变
GUNmakefile
makefile
Makefile
叨叨几句... NOTHING