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

前  言

本文档由创龙科技研发,专为安路飞龙 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

备注:我司提供的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

图 19

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

图 20

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

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

图 21

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

图 22

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

图 23

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

图 24

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

图 25

FSBL TD工程编译

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

图 26

生成HPF文件

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

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

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

图 27

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

图 28

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

图 29

生成FSBL FD工程

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

图 30

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

图 31

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

图 32

至此,创建Platform工程完成。

图 33

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

图 34

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

图 35

至此,已生成FSBL FD工程。

图 36

编译FSBL FD工程生成elf文件

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

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

图 37

点击"Reset"。

图 38

点击"Close"。

图 39

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

图 40

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

图 41

图 42

U-Boot开发

U-Boot为二级Bootloader程序。

U-Boot源码说明

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

图 43

U-Boot配置

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

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

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

Host# ./build.sh ubootmenuconfig

图 44

图 45

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

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

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

图 46

编译U-Boot

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

Host# ./build.sh uboot

图 47

图 48

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

图 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

图 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

图 53

图 54

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

图 55

图 56

替换BOOT.bin文件

通过Linux系统启动卡替换

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

图 57

通过命令行替换

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

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

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

图 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

(2)默认配置信息

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

U-Boot# printenv

图 60

图 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'

参数解析:

内容概要:本文档围绕“光伏并网逆变器序阻抗建模、扫频辨识与弱电网交互稳定性分析”展开,提供基于Matlab和Simulink的完整代码与仿真模型,复现了相关博士论文的核心研究成果。内容聚焦于新能源发电系统接入弱电网时的稳定性问题,系统阐述了光伏逆变器的正负序阻抗建模方法、小信号扫频辨识技术、锁相环与电流环的动态耦合效应、LCL滤波器的作用机制以及系统宽频带振荡的失稳机理。通过构建精确的序阻抗模型并结合扫频法进行稳定性判据分析,深入揭示并网逆变器与弱电网间的交互特性,为实际工程中振荡问题的预测、诊断与抑制提供坚实的理论支撑与有效的技术路径。; 适合人群:具备电力电子、自动控制理论及新能源发电系统基础知识,正在从事相关领域研究的硕士/博士研究生、高校科研人员以及电力系统行业的工程师。; 使用场景及目标:①复现并验证博士论文中关于光伏逆变器序阻抗建模与弱电网交互稳定性的关键结论;②作为科研项目或学位论文的技术蓝本,开展弱电网环境下并网系统稳定性仿真与机理研究;③深入掌握Matlab/Simulink在电力系统小信号稳定性分析、特别是阻抗建模与扫频法应用方面的高级仿真技能。; 阅读建议:学习者应结合所提供的Matlab代码与Simulink仿真模型,亲手运行并调试扫频辨识程序,细致分析序阻抗建模的每一步推导与实现过程,重点关注锁相环动态特性对系统稳定裕度的影响,通过调整控制器参数与电网强度观察系统响应变化,从而深刻理解交互失稳的内在机理,实现从理论到实践的融会贯通。
内容概要:本文介绍了如何利用有限元分析获得的磁通链接图来建立永磁同步电机(PMSM)的高精度数学模型,并在Simulink环境中实现仿真。该方法通过精确捕捉电机内部复杂的磁场分布,克服传统建模中因理想化假设导致的精度不足问题,从而显著提升模型的真实性与可靠性。文中系统阐述了从有限元仿真数据提取、磁链特性曲线拟合到导入Simulink构建动态仿真模型的完整流程,重点强调了数据处理的关键步骤与模型参数的映射关系,为高性能电机控制算法的设计、验证与优化提供了高保真的仿真平台。; 适合人群:具备电机学、电磁场理论基础及Simulink/MATLAB仿真能力的高校研究生、科研院所研究人员以及从事电机控制与电力电子系统开发的工程技术专家。; 使用场景及目标:①用于高校和科研机构开展先进PMSM控制策略(如FOC、MPC)的研究与教学实验;②服务于工业界对高精度电机数字孪生模型的需求,支持新型电机驱动系统的快速原型开发与性能测试;③帮助研究人员深入探究PMSM的非线性特性(如饱和、交叉耦合)及其对系统动态性能的影响。; 阅读建议:建议读者结合具体的电机设计参数与应用场景,严格按照文中所述的数据处理与建模流程进行实践操作,特别注意有限元软件与Simulink之间的数据接口规范与单位一致性,确保物理信息的无损转换。同时,可进一步通过实验数据对仿真模型进行校准与验证,以评估其在不同工况下的准确性与鲁棒性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Tronlong创龙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值