当前位置:   article > 正文

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

please reset the board

时间过的真快呀,一眨眼已经十年过去了。记得首次学习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=

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号