韦东山uboot_内核_根文件系统学习笔记2.2.1-第002课_从0写bootloader_更深刻理解bootloader-第002节_自己写bootloader之编写第2阶段

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值