Hi3516CV610 U-boot移植与烧写

Hi3516CV610 U-boot移植与烧写 Keith_Cheung 2024-03-16 11:19:01 172

文章目录

1.概述

本文主要介绍在Hi3516CV610单板上如何移植和烧写U-boot(Hi3516CV610单板的Bootloader)的相关操作及如何使用ARM调试工具。
Hi3516CV610单板的Bootloader采用gsl进行ddr初始化后启动U-boot方式。当选用的外围芯片的型号与单板上外围芯片的型号不同时,需要修改gsl使用的寄存器表格配置文件,主要包括存储器配置、管脚复用。

1.1 U-boot 目录结构


2.移植 U-boot

2.1 U-boot 硬件环境

Hi3516CV610 DMEB板上的外围设备包括DDR SDRAM、eMMC、SPI Nor Flash和SPI-NAND Flash。

2.2 编译 U-boot

当所有移植步骤完成后,就可以编译U-boot,进入u-boot源码目录,操作如下:
步骤1 拷贝配置文件

cp configs/hi3516cv610_defconfig .config

步骤2 配置编译环境

make ARCH=arm CROSS_COMPILE=arm-v01c02-linux-musleabi- menuconfig

步骤3 编译U-boot

make ARCH=arm CROSS_COMPILE=arm-v01c02-linux-musleabi- -j 20

编译成功后,将在U-boot目录下生成u-boot.bin。
步骤4 生成本地gzip工具
进入open_source/gzip目录,执行:
make
步骤5 进入u-boot源码目录,拷贝gzip工具至uboot目录,权限修改为可执行

cp ../../gzip/bin/gzip arch/arm/cpu/armv7/hi3516cv610/hw_compressed/ -rf
chmod +x arch/arm/cpu/armv7/hi3516cv610/hw_compressed/gzip

步骤6 编译生成u-boot-hi3516cv610.bin

make ARCH=arm CROSS_COMPILE=arm-v01c02-linux-musleabi- u-boot-z.bin

编译成功后,将在U-boot目录下生成u-boot-hi3516cv610.bin

这一步生成的u-boot-hi3516cv610.bin不包含DDR初始化表格,无法直接烧写至DDR运行,并不是最终在单板上执行的U-boot镜像。

2.3配置 DDR 存储器

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

2.4配置管脚复用

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

2.5生成最终使用的 U-boot 镜像

U-boot镜像生成步骤如下:
步骤1 完成配置表格的修改后,保存表格。
步骤2 单击表格第一个标签页上的按钮【Generate reg bin file】或者使用regbin工具(详细使用方法请先解压RegBin-X.X.X.tgz, 参考解压后的readme:bsp/tools/pc/boot_tools/regbin/readme_xxx.txt),生成临时文件reg_info.bin。
步骤3 进入bsp/目录,执行以下操作来制作非安全镜像:

cd components/
cd gsl
make clean
make CHIP=hi3516cv610
cd ../../
cp components/gsl/pub/gsl.bin ./tools/pc/image_tool/input
cp ../../../../open_source/u-boot/u-boot-2022.07/u-boot-hi3516cv610.bin ./tools/pc/image_tool/
input/u-boot-original.bin
cp tools/pc/boot_tools/reg_info.bin ./tools/pc/image_tool/input
cd tools/pc/image_tool
python oem/oem_quick_build.py
(执行该步骤前需要先确认image_tool/oem/quick_build_config.json中默认适配项与input目录中文
件名是否一致,不一致请适配一致后再执行该步骤,否则会因找不到文件报错)

tools/pc/image_tool/image/oem/下生成的boot_image.bin即为“非安全启动”能在单板上运行的uboot 镜像。

3.烧写 U-boot

3.1概述

如果待移植单板中已有U-boot运行,则可以通过串口或网口与服务器连接,直接更新U-boot。
如果是第一次烧写,则需要使用ToolPlatform或者DS-5工具进行烧写。由于芯片特性,在使用DS-5时必须要对存储器和芯片进行初始化。在Hi3516CV610 SDK中提供了相应的初始化脚本,当选用了不同的外围芯片,则需要重新配置初始化脚本才能使用。

3.2通过 bootrom 工具烧写 U-boot

具体操作方式请参考《BurnTool工具使用指南》.

3.3 Flash 的 U-boot 烧写方法

3.3.1 SPI -Nor Flash 烧写方法

SPI-Nor Flash烧写方法如下:
步骤1 在内存中运行起来之后在超级终端中输入:

# mw.b <ddr_addr> 0xff 0x80000 /* 对内存初始化*/
# tftp <ddr_addr> boot_image.bin /*U-boot下载到内存*/
# sf probe 0 /*探测并初始化SPI-Nor flash*/
# sf erase 0x0 0x80000 /*擦除 512k大小*/
# sf write <ddr_addr> 0x0 0x80000 /*从内存写入SPI-Nor Flash*/

Hi3516CV610平台的< ddr_addr >可用地址0x44000000。

步骤2 上述步骤操作完成后,重启系统可以看到U-boot烧写成功。
在当前版本,使用sf lock 可以对SPI Nor Flash进行块保护(Blocks Protect)。如果对SPI Nor Flash的某个块进行了块保护,这个块就变成只读,运行擦除和写命令都不会生效,而且掉电并不能失效块保护。在这种情况下,只有在执行sf lock 0命令,解除块保护之后,SPI Nor Flash擦除和写操作才会起作用。

3.3.2 SPI-Nand Flash 烧写方法

SPI-Nand Flash烧写方法如下:
步骤1 在内存中运行起来之后在超级终端中输入:

# nand erase 0 0x80000 /*擦除512k大小*/
# mw.b <ddr_addr> 0xff 0x80000 /* 对内存初始化*/
# tftp <ddr_addr> boot_image.bin /*U-boot下载到内存*/
# nand write <ddr_addr> 0 0x80000 /*从内存写入NAND Flash*/

Hi3516CV610平台的< ddr_addr >可用地址0x44000000。

步骤2 重启系统可以看到U-boot烧写成功。

3.4 eMMC 的 U-boot 烧写方法

eMMC烧写方法如下:
步骤1 在内存中运行起来之后在超级终端中输入:

# mw.b <ddr_addr> 0xff 0x80000 /* 对内存初始化*/
# tftp <ddr_addr> boot_image.bin /*U-boot下载到内存*/
# mmc write 0 <ddr_addr> 0 0x400 /*从内存写入eMMC*/

可用地址0x44000000。
mmc write命令说明:
格式:mmc write addr blk# cnt
参数:
:设备号
● addr:源地址
● blk#:目的地址的块序号
● cnt:块的数目,块大小为512字节

步骤2 重启系统可以看到U-boot烧写成功。

声明:本文内容由易百纳平台入驻作者撰写,文章观点仅代表作者本人,不代表易百纳立场。如有内容侵权或者其他问题,请联系本站进行删除。
红包 点赞 收藏 评论 打赏
评论
0个
内容存在敏感词
手气红包
    易百纳技术社区暂无数据
相关专栏
置顶时间设置
结束时间
删除原因
  • 广告/SPAM
  • 恶意灌水
  • 违规内容
  • 文不对题
  • 重复发帖
打赏作者
易百纳技术社区
Keith_Cheung
您的支持将鼓励我继续创作!
打赏金额:
¥1易百纳技术社区
¥5易百纳技术社区
¥10易百纳技术社区
¥50易百纳技术社区
¥100易百纳技术社区
支付方式:
微信支付
支付宝支付
易百纳技术社区微信支付
易百纳技术社区
打赏成功!

感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~

举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

审核成功

发布时间设置
发布时间:
是否关联周任务-专栏模块

审核失败

失败原因
备注
拼手气红包 红包规则
祝福语
恭喜发财,大吉大利!
红包金额
红包最小金额不能低于5元
红包数量
红包数量范围10~50个
余额支付
当前余额:
可前往问答、专栏板块获取收益 去获取
取 消 确 定

小包子的红包

恭喜发财,大吉大利

已领取20/40,共1.6元 红包规则

    易百纳技术社区