linux编译2020uboot,移植uboot[2020.10.r4]--Apple的学习笔记

时间过的真快呀,一眨眼已经十年过去了。记得首次学习uboot的时候是十年前,通过看readme来学习的,然后学习了汇编和makefile及uboot流程及kernel的传参等。至少花费了2个多月业余时间。

本轮重新学习也是有必要性的,技术及框架都在不断的更新,之前是没有SPL及设备树的。之前是初学了解,本次学习的目的则是进一步了解,并且查漏补缺。侧重memory这块,因为它是很重要的一块内容,而我以前缺我重视,然后对应图形图像也和memory有关。所以作为我本轮学习的重点内容。

目标:

1.下载了最新版本uboot 2020_10_r4进行编译后,期望能正常引导。--ok

2.定制化,删除无用功能,保留必要功能。(不用修改代码及makefile进行深度定制,只要能随心所欲的进行Kconfig配置修改即可)--ok

3.了解启动后函数调用关系。--ok

4.了解文件夹含义及框架。--ok

5.结合芯片手册,看懂连接脚本中的分区。启动位置等。--ok

6.SPL及uboot时候的堆栈布局。--ok

问题1:无法识别uboot.img

U-Boot SPL 2020.10-rc4 (Sep 14 2020 - 20:30:39 +0800)

WDT: Not found!

Trying to boot from MMC1

Loading Environment from FAT... *** Warning - bad CRC, using default environment

Loading Environment from MMC... *** Warning - bad CRC, using default environment

spl_load_image_fat: error reading image u-boot.img, err - -2

Loading Environment from FAT... *** Warning - bad CRC, using default environment

Loading Environment from MMC... *** Warning - bad CRC, using default environment

spl_load_image_ext: ext4fs mount err - 0

SPL: failed to boot from all boot devices

### ERROR ### Please RESET the board ###

根本原因,我没有copy u-boot.img到fat32的boot文件夹。

问题2:在include/log.h中添加#define DEBUG后,编译出错,说超过了sram定义的空间大小

5a420c27e78d

image.png

想要快速看懂linux框架代码,不方便像单片机这样单步走或者打断点看callstack,当然linux可以通过gdb,但是最常用的方法还是通过打印信息。并且debug函数早已经添加入了,为什么不用呢!通过debug进入后,发现需要开启DEBUG宏。修改代码后报错。正好需要分析下lds链接文件。

uboot中用的lds文件路径在哪里?

1. u-boot.lds路径

找编译使用的文件,那么必须靠Makefile这张地图呢~通过搜索lds关键字,进行反向关联搜索,找到如下信息后,确认board\ti\am335x\u-boot.lds是bb-black的路径。我对比了下arch/arm/cpu下的u-boot.lds后发现ti文件夹中少了security相关位置的布局,所以我将ti路径下的u-boot.lds修改为u-boot_bak.lds等于makfile搜索的时候为空则去arch/arm/cpu下找。结果也能正常启动。

.config文件

CONFIG_SYS_ARCH="arm"

CONFIG_SYS_CPU="armv7"

CONFIG_SYS_SOC="am33xx"

CONFIG_SYS_VENDOR=

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值