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

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

前言

 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的器件类型会报下图器件类型的错误,并报错提醒我们更换器件类型

b184a724644842dba54cf8cfa5dd15a6.png

 而大小的选择并不是实际的真实大小,因为block的原因需要是128k的整数倍

79da758b3cbb42efbae14230b5d2f6ff.png

 再次烧写就会提醒烧写成功了!

错误记录

 根据墨菲定律,还是遇到了稀奇古怪的问题:

 板子重新上电之后出现了这样一个项目场景:

 u-boot启动后不论怎么敲击按键也无法进入命令行模式

 pc端串口软件为:MobaXterm

原因分析:

 既然串口可以正常输出打印,那么键盘的输入信息应该没有问题,而u-boot没有收到信息,那就可能:

 1. pc端的串口软件没有将键盘输入发送出去(串口软件问题),可以用示波器来测量波形

 2.可以确认发送端键盘输入出去了,但是传输过程中出现问题(硬件线路松动等)

 3.u-boot收到了信息,但是内部发生错误导致无法进入命令行模式(配置问题)

解决方案:

 最简单的肯定是先检查传输线路

 再检查串口软件相关设置

 MobaXterm需要展开高级设置,检查默认的配置是否正确:

77e995fd405d4659b18164ba808f3647.png

 突然发现Mobaxterm的流控默认是开着的,将其关闭后重新上电,

System startup 
10
 Uncompress Ok !
 U - Boot 2016.11( Apr 26 2022 -17:30:03+0800)hi3559av100 Relocation 0ffset1s:176e9000
 Relocating to Sfee9000, new gd at Sfe48e00, sp at Sfe48dfo SPI Nor : Boot Media isn ' t SPI Nor 
 NAND : hifmc ip ver check (44): Check Flash Memory Controller v100... hifac _ ip _ ver _ check (50): SPI Nand ID Table Version 2.7
 SPI Nand ( cs 0) ID : Oxet Oxba Ox21 Name :"W25N01GWZ11G* Block :128KB Page :2KB00B:64B ECC :4bit/512
Chips12e:128Mi0 MHC :
 In :
 Out :
 Err :
 Net :
 Error : gmaco address not set ..ghac1
 Error : gmacl address not set . Hit any key to stop autoboot : hisilacon 
 Found 
 seraal 
 serial 
 serial 
 gmaco 

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


相关文章
|
Linux
Linux(5)WIFI/BT调试笔记
Linux(5)WIFI/BT调试笔记
2457 0
|
编解码 API 开发工具
|
编解码 Linux C语言
探索C++与Live555实现RTSP服务器的艺术(一)
探索C++与Live555实现RTSP服务器的艺术
1814 1
|
Ubuntu 编译器 芯片
FFmpeg开发笔记(十):ffmpeg在ubuntu上的交叉编译移植到海思HI35xx平台
FFmpeg开发笔记(十):ffmpeg在ubuntu上的交叉编译移植到海思HI35xx平台
FFmpeg开发笔记(十):ffmpeg在ubuntu上的交叉编译移植到海思HI35xx平台
|
Android开发 内存技术
fastboot工具的常见命令及其用途
`fastboot boot <文件名>.img`:不将其flash到设备上,而是直接从给定的img文件启动。这是测试新的或修改后的boot镜像而不实际安装的好方法。
5833 18
|
Ubuntu Linux Windows
两种Ubuntu和Windows互相共享文件夹的方法
两种Ubuntu和Windows互相共享文件夹的方法
|
编解码 监控 网络协议
如何使用FFmpeg实现RTSP推送H.264和H.265(HEVC)编码视频
本文详细介绍了如何使用FFmpeg实现RTSP推送H.264和H.265(HEVC)编码视频。内容涵盖环境搭建、编码配置、服务器端与客户端实现等方面,适合视频监控系统和直播平台等应用场景。通过具体命令和示例代码,帮助读者快速上手并实现目标。
4352 6
|
测试技术 Linux Android开发
i2c总线及设备测试工具i2ctools:i2cdetect、i2cdump、i2cget、i2cset
本文介绍了i2ctools工具集的使用,包括i2cdetect、i2cdump、i2cget和i2cset,这些工具有助于I2C设备的开发和调试,通过检测设备、读写寄存器和数据块来提高开发效率。
5564 1
|
存储 编解码 算法
探索C++与Live555实现RTSP服务器的艺术(二)
探索C++与Live555实现RTSP服务器的艺术
811 1
|
开发工具 Android开发
技术经验分享:Android编译命令m、mm、mmm区别及工程搭建示例
技术经验分享:Android编译命令m、mm、mmm区别及工程搭建示例
2388 0