NXP LS1046开发板的烧写原理分析

QorIQ® LS104xA 是一款来自恩智浦(NXP)面向边缘计算和网络领域推出芯片,该芯片具有高性价比、高功率和高集成度的优点。包含了4核 64 bit ARM Cortex-A72内核,具有高可靠性,主频高达1.8GHz。其中网络功能非常丰富且强大,支持10Gbps的光纤,可配置为多个1000Mbps网络接口,同时还支持SATA,PCI-E 3.0功能。对网络类功能要求较高的领域和产品,提供了一个更好的方案。

以下是LS1046的功能框图

NXP LS1046开发板的烧写原理分析
LS1046 功能框图

本次我们使用飞凌OK1046A-C2开发板(以下简称为1046开发板)作为测试平台,分析烧写其烧写系统的原理。

1046开发板,板载了eMMC Flash和QSPI Flash。开发板默认是从QSPI Flash启动,里面存放了uboot,然后启动eMMC上的Linux系统并挂载rootfs。开发板支持两种烧写方式,U盘和TF卡。主要更新方式还是以U盘为住,TF卡是为了QSPI Flash损坏后,借助TF卡启动,然后使用U盘更新。

TF卡更新步骤如下

  1. 把制作好的SD卡和存放了目标更新文件的U盘,都插入到开发板
  2. 连接好调试串口后,将拨码S2的 A 拨为 ON 状态,连接电源后打开开发板电源S1
  3. 从上电开始后连续敲击空格键,让系统停在 uboot 命令行后,此时弹出 TF 卡。后续系统会自动将切换到 eMMC
  4. 输入 boot命令,系统会启动U盘中的更新系统,最后执行完成烧写功能

拨码S2的A是选择启动的设备

  • ON,电平拉GND,SD/EMMC 启动
  • OFF,电平默认悬空,QSPI Flash启动,也是默认的启动设备

SD/EMMC 启动模式下由 SD 卡的插拔检测引脚 SD_CD_B 控制 SD 卡启动或 EMMC 启动,插入 SD 卡后 SD_CD_B 引脚被拉低,CPU 从 SD 卡启动,未插入 SD 卡时 SD_CD_B 引脚默认拉高,CPU 从核心板板载 EMMC 启动。 SD_CD_B引脚的状态表示如下

  • 0,SD 卡
  • 1,eMMC

所以,这就是为什么TF卡在启动后,要弹出的原因了。

执行boot命令,实际是继续执行uboot预设的参数和命令。默认会执行distro_bootcmd命令,根据一系列的环境判断,最终会加载U盘上的ls1046ardb_update.scr脚本,然后执行脚本中的命令。

以下是启动时的关键的命令参数,其他的自行查看uboot中的命令。

distro_bootcmd=setenv scsi_need_init; for target in ${boot_targets}; do run bootcmd_${target}; done
bootcmd_usb0=setenv devnum 0; run usb_boot
usb_boot=usb start; if usb dev ${devnum}; then setenv devtype usb; run scan_dev_for_boot_part; fi
scan_dev_for_scripts=for script in ${boot_scripts}; do if test -e ${devtype} ${devnum}:${distro_bootpart} ${prefix}${script}; then echo Found U-Boot script ${prefix}${script}; run boot_a_script; echo SCRIPT FAILED: continuing...; fi; done
boot_a_script=load ${devtype} ${devnum}:${distro_bootpart} ${scriptaddr} ${prefix}${script};
env exists secureboot && load ${devtype} ${devnum}:${distro_bootpart} ${scripthdraddr} ${prefix}${boot_script_hdr} && esbc_validate ${scripthdraddr}; source ${scriptaddr}

ls1046ardb_update.scr脚本的主要内容是加载usb_update.itb文件,并启动对应配置中的kernel, dtb和ramdisk文件系统。

到了这里,实际就是U盘更新系统的方式了。这也是为什么说,LS1046平台,主要还是通过U盘来更新目标系统的原因了。

U盘更新系统的原理是通过uboot启动linux和ramdisk,ramdisk中的脚本会将U盘中的目标文件更新到eMMC Flash中,其中还支持QSPI Flash的更新,eMMC Flash的分区等操作。

LS1046开发板的eMMC Flash分区有3个,分别是EFI,boot,rootfs。

还记得要在U盘中放置的文件中,大体有这四个部分的文件。

  • ubuntu.img,更新到eMMC Flash中的文件系统
  • boot目录,更新到boot分区
  • firmware_ls1046ardb_uboot_qspiboot_1133_5a59.img,更新到QSPI Flash
  • firmware_ls1046ardb_uboot_sdboot_1133_5a59.img,更新到eMMC Flash

这几个文件,最终会通过ramdisk中的脚本,更新到eMMC Flash的对应分区或目录中。

相关新闻

联系我们

029-89197679

技术咨询:support@i2som.tech

商务合作:market@i2som.tech

工作时间:周一至周五,9:30-18:30,节假日休息