首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >基于安路DR1M90 FPSoC 的Linux 系统全流程开发指南(2)

基于安路DR1M90 FPSoC 的Linux 系统全流程开发指南(2)

原创
作者头像
创龙科技Tronlong
发布2025-11-26 14:45:43
发布2025-11-26 14:45:43
280
举报

前 言

本文档由创龙科技研发,专为安路飞龙 DR1M90 FPSoC 产品打造,聚焦 Linux 系统全流程开发需求。

开发环境

Windows开发环境:Windows10 64bit

Linux开发环境:VMware16.2.5、Ubuntu22.04.4 64bit

LinuxSDK开发包:LinuxSDK-[版本号](基于SDK_2025.1)

交叉编译工具链:

应用开发:gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu

U-Boot、内核开发:gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu

评估板系统版本:U-Boot-2021.01、Linux-6.1.111、Buildroot-2022.02

备注:本文基于8GByte eMMC、1GByte DDR3配置核心板进行演示。

BOOT.bin开发

BOOT.bin文件为SoC的启动镜像,一般包含FSBL、比特流文件(用于配置PL)、被引导的应用、数据文件,遵循固定的结构,以便SoC上电时BootRom对其进行解析。

具体说明如下:

(1)FSBL:非必须,主要功能为初始化SoC、引导应用程序,配置PL比特流。

(2)比特流文件:非必须,在使用到PL端逻辑资源时必须使用。

(3)应用程序:必须,若运行在OCM,且不依赖PL端,则可单独使用;其他情况下被FSBL引导;引导Linux系统则为u-boot.bin。

(4)数据:可选,一般用于将数据加载至固定内存地址。

图 17
图 17

备注:我司提供的BOOT.bin由FSBL和U-Boot镜像合并生成,不含比特流文件、数据。

FSBL开发

FSBL(First Stage Bootloader)为一级Bootloader程序,我司提供的FSBL工程中已对PS端相关外设进行配置。

FSBL TD工程说明

我司提供的FSBL TD工程位于“4-软件资料\Linux\FSBL\fsbl-[版本号]\hw\project\”目录下,请参考《TD-FD工程编译与加载》文档导入TD工程。

双击fsbl,即可打开的Design界面。

图 18
图 18
图 19
图 19

在Design界面双击"ARM Processor System" IP即可打开配置界面,该界面为FPSoC Diagram,显示基本配置框图,点击橙色部分可跳转到该功能详细配置界面。

图 20
图 20

可通过打开相应的窗口来查看相关配置。

(1)打开"PS-PL interfaces"窗口查看PS-PL配置。

图 21
图 21

(2)打开"Peripherals and Pin Mux"窗口查看外设配置。

图 22
图 22

(3)打开"Clocks"窗口查看时钟配置。

图 23
图 23

(4)打开"PS DDR"窗口查看DDR配置。

图 24
图 24

(5)打开"AI"窗口查看NPU配置。

图 25
图 25

FSBL TD工程编译

请参考《TD-FD工程编译与加载》文档编译FSBL TD工程。

图 26
图 26

生成HPF文件

在FPSoC的应用开发过程中,需将硬件设计信息通过文件的形式传递至软件开发工具(FD)中使用,该文件被称之为HPF(Hardware Platform File)文件。

我司提供的HPF文件位于“4-软件资料\Linux\FSBL\fsbl-[版本号]\hw\bin\”目录下,下文演示HPF文件的生成。

在菜单栏中依次点击"Project -> Export Hardware Platform File"。

图 27
图 27

在弹窗内,勾选"Include bitstream",导出路径选择默认在当前工程内,点击OK。

图 28
图 28

弹窗显示导出HPF文件成功,并显示HPF文件的存放路径,点击"Ok"。

图 29
图 29

生成FSBL FD工程

我司提供的FSBL FD工程位于“4-软件资料\Linux\FSBL\fsbl-[版本号]\sw\baremetal_demo\project\”目录下,下文演示FSBL FD工程的生成。打开FD软件,在Workspace中指定工程存放路径,点击"Launch"。Workspace是FD的工作目录,该目录下包含了Platform工程、app工程以及用户配置文件。

图 30
图 30

在菜单栏中依次点击"File -> New -> Platform Project",创建Platform工程。

图 31
图 31

在弹出的对话框中,根据实际情况设置Project Name(工程名),"HPF File"选择刚刚导出的HPF文件所在路径,点击"Finish"生成Platform工程。

图 32
图 32

至此,创建Platform工程完成。

图 33
图 33

在菜单栏中依次点击"File -> New -> Application Project",创建FSBL FD工程。

图 34
图 34

在弹出的对话框中,根据实际情况设置Project Name(工程名),"Template List"选择"FSBL",点击"Finish"生成FSBL FD工程。FSBL FD工程即为app工程,其主要功能为引导BOOT.bin中的数据和程序。

图 35
图 35

至此,已生成FSBL FD工程。

图 36
图 36

编译FSBL FD工程生成elf文件

我司提供的elf文件位于“4-软件资料\Linux\FSBL\fsbl-[版本号]\sw\baremetal_demo\bin\”目录下,可直接使用。

本小节演示elf文件的生成。鼠标右键FSBL工程,选择"Reset Project"。

图 37
图 37

点击"Reset"。

图 38
图 38

点击"Close"。

图 39
图 39

在菜单栏中依次点击"Project -> Build All",编译FSBL FD工程。

图 40
图 40

编译完成,并在fsblgon工程的build目录下生成fsbl.elf文件。fsbl.elf需与u-boot.bin文件合成BOOT.bin使用。

图 41
图 41
图 42
图 42

U-Boot开发

U-Boot为二级Bootloader程序。

U-Boot源码说明

U-Boot源码位于LinuxSDK源码u-boot目录,具体说明如下表。

图 43
图 43

U-Boot配置

U-Boot可使用menuconfig进行配置,请参考“配置内核选项”章节,配置menuconfconfig所需依赖环境。

在LinuxSDK源码目录下,执行如下命令,通过menuconfig配置U-Boot。

Host# cd /home/tronlong/DR1/SDK_2025.1/

Host# ./build.sh ubootmenuconfig

图 44
图 44
图 45
图 45

可通过键盘的方向键选中对应菜单栏。在<Select>被选中的情况下,可按Enter键进入子菜单。菜单选项中蓝色高亮的字母代表此菜单选项的快捷键,可在键盘上按下对应的字母快速选中对应的菜单选项。

每个菜单选项前的括号内容表示当前菜单选项的配置状态。选中对应的菜单选项后,按下Y键,会将相应的选项配置编译到U-Boot中,同时菜单选项前面变为< * >。按下N键,不会将相应的选项配置编译到U-Boot中。如需搜索,可按下/键打开搜索框,然后输入要搜索的内容。

配置完毕后,选中<Save>,按Enter键保存配置选项。然后选中<Exit>,按Enter键退出。

图 46
图 46

编译U-Boot

在LinuxSDK源码目录下执行如下命令,配置编译选项,并单独编译U-Boot。

Host# ./build.sh uboot

图 47
图 47
图 48
图 48

编译完成后,最终在LinuxSDK源码"device/output/anlogic_dr1m90/u-boot"目录下生成U-Boot镜像如下所示。

图 49
图 49

合成BOOT.bin文件

BOOT.bin由fsbl.elf和u-boot.bin合成。fsbl.elf文件位于产品资料“4-软件资料\Linux\FSBL\fsbl-[版本号]\sw\baremetal_demo\bin\”目录下,u-boot.bin文件位于“4-软件资料\Linux\U-Boot\image\u-boot-2021.01-[版本号]-[Git序列号]\”目录下,可直接使用。

备注:版本号、Git序列号请以实际情况为准。

打开FSBL FD工程,在菜单栏中依次点击"Tools -> Create Boot lmage"。

图 50
图 50
图 51
图 51

"Output BlF file path"为output.bif存放路径,"Output path"为BOOT.bin存放路径,请根据实际路径进行选择。在"Boot image partitions"中点击"Add"选择和配置需要被打包到Boot.bin的分区文件,本次以添加FSBL镜像fsbl.elf和U-Boot镜像u-boot.bin为例进行演示,配置参数如下图。

图 52
图 52
图 53
图 53
图 54
图 54

配置完成,点击"Create lmage",生成BOOT.bin文件。

图 55
图 55
图 56
图 56

替换BOOT.bin文件

通过Linux系统启动卡替换

将Linux系统启动卡通过读卡器连接至PC机,直接替换Linux系统启动卡BOOT分区的BOOT.bin原文件即可。

图 57
图 57

通过命令行替换

请将需替换的BOOT.bin文件拷贝至评估板文件系统的任意目录下,执行如下命令替换BOOT.bin文件至Linux系统启动卡。

Target# cp ./BOOT.bin /mnt/mmcblk0p1/BOOT.bin

备注:如需替换BOOT.bin至eMMC,请将设备节点修改为"/mnt/mmcblk1p1"。

图 58
图 58

U-Boot使用说明

U-Boot命令行进入方式

评估板上电启动后,在U-Boot倒计时结束之前按下"Ctrl + C"进入U-Boot命令行模式。

环境变量说明

(1)环境变量存储

执行命令"setenv"或"env default -f -a"修改的是运行空间中的环境变量值,须使用"saveenv"命令将修改后的环境变量保存起来。否则U-Boot重启后,将会使用修改前的环境变量值。环境变量修改完成后,执行reset命令,即可使用修改后的U-Boot环境变量启动。

U-Boot# env default -f -a

U-Boot# saveenv

U-Boot# reset

图 59
图 59

(2)默认配置信息

在U-Boot命令行执行"printenv"命令可查看环境变量。不同版本的U-Boot,环境变量可能会有所不同,内容仅供参考。

U-Boot# printenv

图 60
图 60
图 61
图 61

(3)环境变量说明

关键环境变量说明如下。

/* 架构、CPU和板卡信息 */

arch=arm

cpu=armv8

soc=dr1m90

board=evb_dr1m90

board_name=evb_dr1m90

vendor=anlogic

/* 串口控制台和波特率设置 */

baudrate=115200

stderr=serial@f8401000

stdin=serial@f8401000

stdout=serial@f8401000

/* 网络配置 */

ipaddr=192.168.199.138

netmask=255.255.255.0

serverip=192.168.199.114

/* 内核和设备树加载地址 */

fdt_addr_r=0x18000000

kernel_addr_r=0x10000000

/* 内核和设备树文件名 */

kernel_image=kernel.bin

devicetree_image=dtb.bin

/* 内核镜像和设备树文件路径 */

bootdir=/boot

/* 支持的启动设备类型 */

boot_targets=mmc0 mmc1 ubifs0 nand qspi

/* 当前启动类型 */

boot_type=mmc0

/* 主要启动命令 */

bootcmd=run an_bootcmd

/* 自动启动命令逻辑 */

an_bootcmd=if env exists boot_type; then for target in ${boot_targets}; do if test ${boot_type} = ${target}; then run bootcmd_${target}; fi; done; fi;

/* 各启动设备的命令 */

bootcmd_mmc0=devnum=0; run mmc_boot

bootcmd_mmc1=devnum=1; run mmc_boot

/* MMC设备启动流程 */

mmc_boot=if mmc dev ${devnum}; then devtype=mmc; if test ${devnum} -eq 0; then setenv bootargs 'console=ttyS1,115200n8 earlycon=uart,mmio32,0xf8401000 loglevel=8 root=/dev/mmcblk0p2 rw rootfstype=ext4 rootwait';fi; if test ${devnum} -eq 1; then setenv bootargs 'console=ttyS1,115200n8 earlycon=uart,mmio32,0xf8401000 loglevel=8 root=/dev/mmcblk1p2 rw rootfstype=ext4 rootwait';fi; ext4load mmc ${devnum}:2 ${kernel_addr_r} ${bootdir}/${kernel_image}; ext4load mmc ${devnum}:2 ${fdt_addr_r} ${bootdir}/${devicetree_image}; bootm ${kernel_addr_r} - ${fdt_addr_r}; run scan_dev_for_boot_part2; fi

Kernel参数传递

Kernel参数传递指的是在启动内核时,通过特定机制将配置参数或启动选项传递给内核,以控制其初始化行为、硬件配置、运行模式等。

评估板默认参数如下。

bootargs 'console=ttyS1,115200n8 earlycon=uart,mmio32,0xf8401000 loglevel=8 root=/dev/mmcblk0p2 rw rootfstype=ext4 rootwait'

参数解析:

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前 言
    • 开发环境
  • BOOT.bin开发
    • FSBL开发
      • FSBL TD工程说明
      • FSBL TD工程编译
      • 生成HPF文件
      • 生成FSBL FD工程
      • 编译FSBL FD工程生成elf文件
    • U-Boot开发
      • U-Boot源码说明
      • U-Boot配置
    • 编译U-Boot
      • 合成BOOT.bin文件
    • 替换BOOT.bin文件
      • 通过Linux系统启动卡替换
      • 通过命令行替换
    • U-Boot使用说明
      • U-Boot命令行进入方式
      • 环境变量说明
      • Kernel参数传递
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档