海思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平台搭建(一):简单烧写说明)


相关文章
|
7月前
华为配置接口二三层切换实验
华为配置接口二三层切换实验
328 0
|
存储 人工智能 边缘计算
D1net阅闻 | 四大运营商宣布:我国启动全球首个5G异网漫游试商用
D1net阅闻 | 四大运营商宣布:我国启动全球首个5G异网漫游试商用
182 1
|
Linux 开发工具 内存技术
海思3559kernel移植(一):一路next的默认模式
安装环境篇过后的sdk包里实际上并没有kernel的源码
289 0
|
物联网
新硬件元年,等你一同开启!
过去20年,消费硬件完成了智能化的蜕变,而物联网硬件,只有1%完成了智能化。3月26日深圳,我们将一起打造新硬件。 ​​​​
1197 15
新硬件元年,等你一同开启!
|
物联网
3月26日,开启新硬件元年
过去20年,消费硬件完成了智能化的蜕变,而物联网硬件,只有1%完成了智能化。3月26日深圳,我们一起打造新硬件。
3月26日,开启新硬件元年
|
Java
分析华为毕昇JDK8:一个性能开关
分析华为毕昇JDK8:一个性能开关
246 0
|
5G 网络架构
马斯克的星链太空互联网今天开启私人测试!夏末开启,无需安装,人人可申请!
马斯克的星链太空互联网今天开启私人测试!夏末开启,无需安装,人人可申请!
336 0
明年,5G时代正式开启!
5G基站现在已经能够达到商用水平,中国有可能在系统和应用等某些方面走在世界前列。
423 0
|
安全 Linux Android开发
阿里90后工程师利用ARM硬件特性开启安卓8终端“上帝模式”
本文以安卓8终端为载体,介绍阿里安全潘多拉实验室成员研究并提出的内核空间镜像攻击利用技巧。
6900 0