海思3559U-Boot移植(一):一路next的默认模式

前言

Hi3559AV100 单板的 Bootloader 采用 U-boot。当选用的外围芯片的型号与单板上外围芯片的型号不同时,需要修改 U-boot 配置文件,主要包括存储器配置、 管脚复用。sdk包里有uboot的源码,可以进行修改后编译

编译 U-boot

当所有移植步骤完成后,就可以编译 U-boot,操作如下:

步骤 1 配置编译环境

当启动介质是 SPI-Nor Flash 或 SPI-NAND Flash 时, 使用配置命令:
make CROSS_COMPILE=aarch64-himix100-linux- hi3559av100_defconfig
当启动介质是并口 NAND Flash 时,使用配置命令:
make CROSS_COMPILE=aarch64-himix100-linux- hi3559av100_nand_defconfig
当启动介质是 eMMC 时, 使用配置命令:
make CROSS_COMPILE=aarch64-himix100-linux- hi3559av100_emmc_defconfig
当启动介质是 UFS 时,使用配置命令:
make CROSS_COMPILE=aarch64-himix100-linux- hi3559av100_ufs_defconfig

步骤 2 编译 U-boot

make CROSS_COMPILE=aarch64-himix100-linux- -j 20
编译成功后,将在 U-boot 目录下生成 u-boot.bin。
这一步生成的 u-boot.bin 只是一个中间件,并不是最终在单板上执行的 U-boot 镜像。!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

步骤3配置 DDR 存储器

在 Windows 下打开 SDK 中的“osdrv/tools/pc/uboot_tools/”目录下的配置表格。当选用不同的 DDR SDRAM 时,需要针对不同器件的特性,对配置工作表中的 DDR 相关标签页进行修改。

步骤4配置管脚复用

如果管脚复用有变化,还需要对配置表格中的管脚复用相关标签页进行修改。

步骤5生成最终使用的 U-boot 镜像

U-boot 镜像生成步骤如下:

步骤 1 配置表格

完成配置表格的修改后,保存表格。

步骤 2 生成临时文件

单击表格第一个标签页上的按钮【Generate reg bin file】或者使用 hiregbin 工具(详细使用方法请参考 osdrv/ tools/pc/uboot_tools/ hiregbin-v5.0.1.tgz 压缩包里的 readme 文件),生成临时文件 reg_info.bin。

欢迎使用hiregbin命令行工具!
此工具功能主要是:Hi3559芯片根据excel文件生成regbin文件。
(只支持2007版本及以上版本的xlsm格式文件,低于2007版本的格式文件需要转换成2007版本及以上版本的xlsm格式文件。)
支持Windows与Linux操作系统 .生成regbin文件功能说明
步骤如下:
(1)在命令行下,进入hiregbin所在目录;
(2)输入命令如下:./hiregbin [excelFile] [outputFile]
excelFile、outputFile为必须参数,由用户指定。
示例:
./hiregbin ./Hi35**.xlsm ./reg.bin
(3)等待制作完成。

步骤 3 生成最终镜像

将临时文件 reg_info.bin 拷贝到 SDK 中的
“osdrv/opensource/uboot/u-boot-2016.11/”目录下, 并命名为: .reg,然后执行命令:
make CROSS_COMPILE=aarch64-himix100-linux- u-boot-z.bin
生成的 u-boot-hi3559av100.bin 才是能够在单板上运行的 uboot 镜像。

烧写U-boot

烧录时选择海思自带的HiBurn工具,详细的使用方法在文档:《HiBurn工具使用指南》
界面还是做的非常简洁明了的,简单使用下,首先需要选择正确的器件类型,比如我们在spi nand flash的硬件环境下选择了比如nor flash的器件类型会报下图器件类型的错误,并报错提醒我们更换器件类型
在这里插入图片描述
而大小的选择并不是实际的真实大小,因为block的原因需要是128k的整数倍
在这里插入图片描述
再次烧写就会提醒烧写成功了!

错误记录

根据墨菲定律,还是遇到了稀奇古怪的问题:
板子重新上电之后出现了这样一个项目场景:
u-boot启动后不论怎么敲击按键也无法进入命令行模式

pc端串口软件为:MobaXterm

原因分析:

既然串口可以正常输出打印,那么键盘的输入信息应该没有问题,而u-boot没有收到信息,那就可能:
1. pc端的串口软件没有将键盘输入发送出去(串口软件问题),可以用示波器来测量波形
2.可以确认发送端键盘输入出去了,但是传输过程中出现问题(硬件线路松动等)
3.u-boot收到了信息,但是内部发生错误导致无法进入命令行模式(配置问题)

解决方案:

最简单的肯定是先检查传输线路
再检查串口软件相关设置
MobaXterm需要展开高级设置,检查默认的配置是否正确:
在这里插入图片描述

突然发现Mobaxterm的流控默认是开着的,将其关闭后重新上电,
在这里插入图片描述

好吧,正常了,接下来就可以通过网线正式进行烧写了(详见海思3559平台搭建(一):简单烧写说明)


版权声明:本文为qq_42330920原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。