写在前面:
我的博客已迁移至自建服务器:博客传送门,CSDN博客暂时停止,如有机器学习方面的兴趣,欢迎来看一看。
此外目前我在gitHub上准备一些李航的《统计学习方法》的实现算法,目标将书内算法全部手打实现,欢迎参观并打星。GitHib传送门
正文
移植的uboot使用NOR启动,不支持NAND,这次就是修改代码以支持NAND。
之前uboot的Makefile里面有-pie,前面写到了,这是为了生成位置无关码,代码可以copy到任何地方。因为代码段里面是有变量的,程序去读取变量的时候要知道变量的存放地址,你移到别的地方,变量的存储位置肯定会变。位置无关就是额外在一块内存区域中存放变量的地址信息,当移动代码的时候,要去读取这块区域,重新修改变量的读取地址。
1.去掉“pie选项”。
设置NAND启动的时候,cpu会自动从NAND里面读取4k代码到片内内存,所以设置pie的话,代码的体积会比较大,不利于复制到片内内存,重定位之前的代码应该少于4k。
现在不清楚这个pie在哪,所以命令:grep "\-pie" * -R
,返回
arch/x86/config.mk:LDFLAGS_FINAL += --gc-sections -pie
arch/arm/config.mk:LDFLAGS_u-bo