1、uImage
uImage=64bytes(head)+zImage
uImage存储地址:uboot里面mtd命令可以看到,即0x00060000
zImage存储地址: 0x00060000+64
2、跳转执行
定义一个函数指针,指针的值为0x30008000。
执行该函数,相当于跳转到指定地址?不理解
3 如何向4取整?
对值“sizeof (struct tag_header) + len”向4取整:(X+3)/4
例子:
params->hdr.size = (sizeof (struct tag_header) + len + 3) >> 2;
4 什么是重定位?
把代码从flash读取到链接地址去。
MCU因为存在分段加载文件指示编译器自动编译重定位代码,所以无需自己写。
5 链接脚本书写技巧
-nostdlib 不使用编译器自带的库文件
-nostdinc 需要gcc编译的时候不要在标准系统目录中找头文件
-fno-builtin 自定义的函数与库文件函数参数声明不一致,使用本关键字
CPPFLAGS := -nostdinc -nostdlib -fno-builtin