Tronlong创龙 发表于 2023-3-1 10:30

基于 TI Sitara系列 AM64x核心板——程序自启动说明

#每日话题# #申请原创# #技术资源#

前 言本文主要介绍AM64x的Cortex-A53、Cortex-M4F和Cortex-R5F核心程序自启动使用说明。默认使用AM6442进行测试演示,AM6412测试步骤与之类似。
本说明文档适用开发环境如下:Windows开发环境:Windows 7 64bit、Windows 10 64bit
虚拟机:VMware15.5.5
Linux开发环境:Ubuntu 18.04.4 64bit
Linux Processor SDK:ti-processor-sdk-linux-rt-am64xx-evm-08.01.00.39
U-Boot:U-Boot-2021.01
CCS版本:CCS11.2.0
MCU+ SDK:mcu_plus_sdk_am64x_08_03_00_18
SysConfig:sysconfig-1.12.1_2446
GCC AARCH64 Compiler:gcc-arm-9.2-2019.12-mingw-w64-i686-aarch64-none-elf
本文测试板卡为创龙科技SOM-TL64x核心板,它是一款基于TI Sitara系列AM64x双核ARM Cortex-A53 + 单/四核Cortex-R5F + 单核Cortex-M4F设计的多核工业级核心板,通过工业级B2B连接器引出5x TSN Ethernet、9x UART、2x CAN-FD、GPMC、PCIe/USB 3.1等接口。核心板经过专业的PCB Layout和高低温测试验证,稳定可靠,可满足各种工业应用环境。
https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/e228abcd8b544f1d94d55d6b371f715a~tplv-obj.jpg?traceid=20230301101619085E3EDD68632F797E17&x-expires=2147483647&x-signature=ZUvFOPggMmJLvpmj%2FOcVTlO43TY%3D
用户使用核心板进行二次开发时,仅需专注上层运用,降低了开发难度和时间成本,可快速进行产品方案评估与技术预研。
基于SBL引导裸机、FreeRTOS程序启动

程序启动流程说明

评估板上电后,固化在CPU内部的RBL将会先运行,RBL根据评估板BOOT SET从启动介质(如eMMC,Micro SD、SPI FLASH)读取SBL,然后通过SBL引导应用程序启动。
程序启动流程如下图所示。


https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/753a760c8f6a412183dfc2119c247884~tplv-obj.jpg?traceid=20230301101619085E3EDD68632F797E17&x-expires=2147483647&x-signature=S2F466XvSjK93l4F6Dq9mnBEhvc%3D
图 1

目前官方提供的MCU+ SDK(版本为mcu_plus_sdk_am64x_08_03_00_18),SBL将会先读取应用程序至MSRAM,然后再进行解析。由于MSRAM空间有限,分配给SBL使用的内存空间仅512KByte,并且SBL运行需使用部分MSRAM空间。因此,为确保SBL引导应用程序正常启动,应用程序大小不能超过380KByte。


https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/8551cb6c044342738aa820130cb51747~tplv-obj.jpg?traceid=20230301101619085E3EDD68632F797E17&x-expires=2147483647&x-signature=afi7mIP9LUCnxX9JrFxa%2BlhNmCY%3D
图 2

基于Micro SD卡启动

启动卡制作

请准备一张FAT32格式的Micro SD卡,通过读卡器将Micro SD卡连接至PC机。
双击产品资料“4-软件资料\Tools\Windows\”目录下PartManFree-Setup.exe分区管理软件,按默认安装即可。安装完成后,打开分区管理软件,将会自动识别到Micro SD卡分区,请右键选中该分区,点击"Set Active"设置为活跃分区,如下图所示。


https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/9fd76cf9bb7147ddb5d2c0b39cae2723~tplv-obj.jpg?traceid=20230301101619085E3EDD68632F797E17&x-expires=2147483647&x-signature=QJko8%2Bkj0UlQYeSP48Hj2nC0dpM%3D
图 3
进入MCU+ SDK组件安装目录"C:\ti\mcu_plus_sdk_am64x_08_03_00_18\tools\boot\sbl_prebuilt\am64x-evm\",将sbl_sd.release.tiimage拷贝至Micro SD卡,并重命名为tiboot3.bin,如下图所示。
备注:sbl_sd.release.tiimage为官方提供的SBL镜像。


https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/3bae574598fd4895b6f4e2e22880a8c7~tplv-obj.jpg?traceid=20230301101619085E3EDD68632F797E17&x-expires=2147483647&x-signature=g2oqX28cvVqoS%2FmE%2B9gvj6N69vs%3D
图 4
https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/a8701cfb40e345fb828e10dd4873bbb2~tplv-obj.jpg?traceid=20230301101619085E3EDD68632F797E17&x-expires=2147483647&x-signature=Yb9qUDNXbqzSr7mkUKOPWW1uGQg%3D
图 5
单核启动本小节以Cortex-A53核心的led_flash裸机工程为例进行演示,Cortex-M4F和Cortex-R5F核心操作步骤与之类似。
请参考《FreeRTOS、Baremetal案例开发手册》文档,正确编译产品资料“4-软件资料\Demo\Baremetal-demos\led_flash\project\”目录下的led_flash_a53ss_nortos工程,然后将编译生成的led_flash_a53ss_nortos.appimage镜像文件拷贝至Micro SD卡,并重命名为app。


https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/994f0d19c6614e98a3fd1b93de74c3a1~tplv-obj.jpg?traceid=20230301101619085E3EDD68632F797E17&x-expires=2147483647&x-signature=3YunB1YnTTFFnhLrEPfsMXmoPBk%3D
图 6
https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/414dd4711ccb496f9c1623adef0e19ab~tplv-obj.jpg?traceid=20230301101619085E3EDD68632F797E17&x-expires=2147483647&x-signature=WN5mbRoDLuLMThRWZqdC%2BIobHmc%3D
图 7

请将Micro SD卡插入评估板Micro SD卡槽,根据评估底板丝印将启动方式选择拨码开关拨为101000(1~6),此档位为Micro SD启动模式。然后使用Micro USB线连接评估板的USB TO UART0调试串口至PC机,请将评估板上电启动,串口调试终端将会打印如下类似启动信息。同时,可观察到评估底板LED1、LED2闪烁,说明程序自启动成功。


https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/08005cb535a04580be6d4e2c829d8737~tplv-obj.jpg?traceid=20230301101619085E3EDD68632F797E17&x-expires=2147483647&x-signature=NI9GEm8ZRR49vR3of7g59n8geNM%3D
图 8
多核启动

本小节以Cortex-A53、Cortex-M4F和Cortex-R5F核心的led_flash裸机工程为例进行演示。
请在磁盘根目录新建一个非中文文件夹test,将产品资料“4-软件资料\Demo\Baremetal-demos\led_flash\bin\”目录下的led_flash_a53ss_nortos.out、led_flash_m4fss_nortos.out、led_flash_r5fss_nortos.out全部拷贝至该目录下。


https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/b9af3a8b6cf04107b316cc9dc7d32933~tplv-obj.jpg?traceid=20230301101619085E3EDD68632F797E17&x-expires=2147483647&x-signature=T1OntDlLl55%2FLbENZaVkSLBbKu0%3D
图 9

右键Windows按钮,点击"Windows PowerShell(I)",打开Windows PowerShell终端。


https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/8e3466be9581476ba5f0f4717db5f0cb~tplv-obj.jpg?traceid=20230301101619085E3EDD68632F797E17&x-expires=2147483647&x-signature=ConidHXb4v256m6YgN94pW%2F4oNQ%3D
图 10

在Windows PowerShell终端执行如下命令进入test目录。
Window# cd E:\test\


https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/ee0df3b1ff0e4f6fa48582fcd308b3e9~tplv-obj.jpg?traceid=20230301101619085E3EDD68632F797E17&x-expires=2147483647&x-signature=PDieQZp0hzGnnANg2kS6YNynRyo%3D
图 11


[*]rprc文件生成
在Windows PowerShell终端执行如下命令,基于xxx.out文件使用CCS和MCU+ SDK生成xxx.rprc文件,xxx.rprc文件已包含可加载段的bin文件。CCS与MCU+ SDK路径请以实际情况为准。
Window# C:\ti\ccs1120\ccs/tools/node/node C:/ti/mcu_plus_sdk_am64x_08_03_00_18/tools/boot/out2rprc/elf2rprc.js led_flash_a53ss_nortos.out
Window# C:\ti\ccs1120\ccs/tools/node/node C:/ti/mcu_plus_sdk_am64x_08_03_00_18/tools/boot/out2rprc/elf2rprc.js led_flash_m4fss_nortos.out
Window# C:\ti\ccs1120\ccs/tools/node/node C:/ti/mcu_plus_sdk_am64x_08_03_00_18/tools/boot/out2rprc/elf2rprc.js led_flash_r5fss_nortos.out
https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/847af2a9746149f8874e89052e772348~tplv-obj.jpg?traceid=20230301101619085E3EDD68632F797E17&x-expires=2147483647&x-signature=R%2FS6a78onZZ9Lhfv0U8w9Mq1eIo%3D
图 12
执行完成后,将会在当前目录下生成了led_flash_a53ss_nortos.rprc、led_flash_m4fss_nortos.rprc、led_flash_r5fss_nortos.rprc文件。
https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/11b7002ba4bb4224b0c310a5617edf32~tplv-obj.jpg?traceid=20230301101619085E3EDD68632F797E17&x-expires=2147483647&x-signature=zd52hruER96HSPnxPnnRIrjk8nE%3D
图 13

[*]appimage文件生成
基于xxx.rprc文件生成镜像xxx.appimage,需指定启动核心的ID,对应关系如下表所示。
备注:AM6412包含1个Cortex-R5F核心:r5fss0_0;AM6442包含4个Cortex-R5F核心分别为:r5fss0_0、r5fss0_1、r5fss1_0、r5fss1_1。
表 1

核心ID
Cortex-A53a53ss0_00
Cortex-R5Fr5fss0_04
r5fss0_15
r5fss1_06
r5fss1_17
Cortex-M4Fm4fss0_014
在Windows PowerShell终端执行如下命令,将Cortex-A53、Cortex-M4F和Cortex-R5F核心的led_flash可执行程序合并为led_flash.appimage,并指定运行核心分别为a53ss0_0、m4fss0_0、r5fss0_0。
Window# C:\ti\ccs1120\ccs/tools/node/node C:/ti/mcu_plus_sdk_am64x_08_03_00_18/tools/boot/multicoreImageGen/multicoreImageGen.js --devID 55 --out led_flash.appimage led_flash_a53ss_nortos.rprc@0 led_flash_m4fss_nortos.rprc@14 led_flash_r5fss_nortos.rprc@4
https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/2285e8d57235468db3e02e6d7630a4d6~tplv-obj.jpg?traceid=20230301101619085E3EDD68632F797E17&x-expires=2147483647&x-signature=HQLSWJe7HwB9cn8P73PzurBki4A%3D
图 14
执行完成后,将会在当前目录下生成led_flash.appimage镜像文件。
https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/d38a21d50e6c418d8b6c357c9e0abc0a~tplv-obj.jpg?traceid=20230301101619085E3EDD68632F797E17&x-expires=2147483647&x-signature=OFKow2CgUoA8KeU8UNIjBCiINkk%3D
图 15
请将生成的led_flash.appimage镜像文件拷贝至Micro SD卡,并重命名为app。
https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/3c034a36a4b24ed78aca7855976dcde6~tplv-obj.jpg?traceid=20230301101619085E3EDD68632F797E17&x-expires=2147483647&x-signature=LgCWJTsQ1DZxGJmUVscPZNccRog%3D
图 16
请将Micro SD卡插入评估板Micro SD卡槽,根据评估底板丝印将启动方式选择拨码开关拨为101000(1~6),此档位为Micro SD启动模式。然后使用Micro USB线连接评估板的USB TO UART0调试串口至PC机。
评估板上电启动,串口调试终端将会打印如下类似启动信息。同时,可观察到评估底板LED1、LED2、LED3闪烁,说明程序自启动成功。
https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/c3871d7403bb40138f2a1c1cd12fcfbf~tplv-obj.jpg?traceid=20230301101619085E3EDD68632F797E17&x-expires=2147483647&x-signature=wqEIrNiSujF6bv2QjartfYDDTlE%3D
图 17
基于Linux引导裸机、FreeRTOS程序启动基于Linux启动本小节以产品资料“4-软件资料\Demo\RTOS-demos\”目录下的ipc_rpmsg_echo_linux案例为例进行演示。该案例主要实现Cortex-A53与Cortex-R5F核间通信,以及Cortex-A53与Cortex-M4F核间通信。
请将案例bin目录下的am64-main-r5f0_0-fw、am64-main-r5f0_1-fw、am64-main-r5f1_0-fw、am64-main-r5f1_1-fw、am64-mcu-m4f0_0-fw镜像文件拷贝至评估板文件系统根目录下。
https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/ae0ba3e5455245d5a145ae45756959f9~tplv-obj.jpg?traceid=20230301101619085E3EDD68632F797E17&x-expires=2147483647&x-signature=G3rTh2BbMdVI9oJ18GBQlqfvsC8%3D
图 18
进入评估板文件系统,执行如下命令,删除原来的软链接。
Target# rm /lib/firmware/am64-main-r5f0_0-fw
Target# rm /lib/firmware/am64-main-r5f0_1-fw
Target# rm /lib/firmware/am64-main-r5f1_0-fw
Target# rm /lib/firmware/am64-main-r5f1_1-fw
Target# rm /lib/firmware/am64-mcu-m4f0_0-fw
https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/cae1df133494473ba6ade7ee96e8aadc~tplv-obj.jpg?traceid=20230301101619085E3EDD68632F797E17&x-expires=2147483647&x-signature=D0m4xhebUtnGmKGqaNqTqpjmCQk%3D
图 19
执行如下命令,创建新的软链接。
Target# ln -sf /home/root/am64-main-r5f0_0-fw /lib/firmware/am64-main-r5f0_0-fw
Target# ln -sf /home/root/am64-main-r5f0_1-fw /lib/firmware/am64-main-r5f0_1-fw
Target# ln -sf /home/root/am64-main-r5f1_0-fw /lib/firmware/am64-main-r5f1_0-fw
Target# ln -sf /home/root/am64-main-r5f1_1-fw /lib/firmware/am64-main-r5f1_1-fw
Target# ln -sf /home/root/am64-mcu-m4f0_0-fw /lib/firmware/am64-mcu-m4f0_0-fw
https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/bf058694284b424d8d83c78c7b71a4ea~tplv-obj.jpg?traceid=20230301101619085E3EDD68632F797E17&x-expires=2147483647&x-signature=nVPQRckLnkFTKAsDSgFV7MJVUpI%3D
图 20
请将评估板重启,在系统启动过程中,Cortex-R5F、Cortex-M4F核心将会引导启动。在评估板文件系统执行如下命令,查询Cortex-R5F、Cortex-M4F核心与remoteproc关系。
Target# head /sys/class/remoteproc/remoteproc*/name
https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/597ce38615e74aed91c6254abbd770c3~tplv-obj.jpg?traceid=20230301101619085E3EDD68632F797E17&x-expires=2147483647&x-signature=C2NIpvz8TrtLqY%2BXy4NLQWirrq8%3D
图 21
表 2

CPU核心remoteproc
m4fss0_0remoteproc0
r5fss0_0remoteproc1
r5fss0_1remoteproc2
r5fss1_0remoteproc3
r5fss1_0remoteproc4
备注:核心与remoteproc对应关系,请以实际情况为准。
执行如下命令,可查看Cortex-M4F、Cortex-R5F核心程序运行日志。
Target# cat /sys/kernel/debug/remoteproc/remoteproc0/trace0
Target# cat /sys/kernel/debug/remoteproc/remoteproc1/trace0
Target# cat /sys/kernel/debug/remoteproc/remoteproc2/trace0
Target# cat /sys/kernel/debug/remoteproc/remoteproc3/trace0
Target# cat /sys/kernel/debug/remoteproc/remoteproc4/trace0
https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/e2d51ada8eba41ac94434540bc5c9407~tplv-obj.jpg?traceid=20230301101619085E3EDD68632F797E17&x-expires=2147483647&x-signature=zeIqsiIjlUlo7LznHm0cSx0Uiq4%3D
图 22
工程配置说明本小节主要演示如何在Cortex-R5F、Cortex-M4F核心的Baremetal(裸机)工程与FreeRTOS工程中添加Linux引导配置。
内存空间说明如Cortex-R5F、Cortex-M4F核心的工程需支持基于Linux启动,则需进行内存空间分配,在Linux设备树中已指定内存空间,预留给Cortex-R5F、Cortex-M4F核心使用。内存空间分配如下图所示。
https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/ab38f54666964e3b9acb8b0bc9d744e9~tplv-obj.jpg?traceid=20230301101619085E3EDD68632F797E17&x-expires=2147483647&x-signature=fNnnb7Y2ySJv7ygcQ7p3VzeZ84I%3D
图 23
Cortex-M4F工程配置本小节以Cortex-M4F核心的led_flash裸机工程为例进行演示。

[*]IPC配置
在syscfg配置文件,添加IPC配置,具体配置如下图所示。
https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/66eafb4d4a6d4da4b894fd0c0df2ed06~tplv-obj.jpg?traceid=20230301101619085E3EDD68632F797E17&x-expires=2147483647&x-signature=RXUseXWbt%2Fzow0TX84S%2FUELuVJw%3D
图 24
[*]编译器链接脚本修改
双击打开编译器链接脚本linker.cmd,修改脚本内容。
https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/f502ac52c5bc474c90ba94ebaa1ca34b~tplv-obj.jpg?traceid=20230301101619085E3EDD68632F797E17&x-expires=2147483647&x-signature=WV5csYwbu3E4zPbYeDAzV%2BWxcw0%3D
图 25
[*]在SECTIONS命令中新增一个.resource_table段,具体代码如下所示。
GROUP {
/* This is the resource table used by linux to know where the IPC "VRINGs" are located */
.resource_table: {} palign(4096)
} > DDR_0
https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/c32cc30f54aa4b13ac5ce5b913215308~tplv-obj.jpg?traceid=20230301101619085E3EDD68632F797E17&x-expires=2147483647&x-signature=PP2RlSBJ2%2BwcVHGh4YSbbb%2Bezk4%3D
图 26
[*]在MEMORY命令中,设置.resource_table段的加载地址为0xA4100000,作为Cortex-M4F预留内存空间,具体代码如下所示。
/* Resource table must be placed at the start of DDR_0 when M4 core is early booting with Linux */
DDR_0 : ORIGIN = 0xA4100000 , LENGTH = 0x1000
https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/a26851e793e242dab305c09ae620fb2b~tplv-obj.jpg?traceid=20230301101619085E3EDD68632F797E17&x-expires=2147483647&x-signature=VHXnGDDWf6KWPykehzKR%2BYw0QII%3D
图 27Cortex-R5F工程配置本小节以Cortex-R5F核心的led_flash裸机工程为例进行演示。
AM6412包含1个Cortex-R5F核心:r5fss0_0;AM6442包含4个Cortex-R5F核心分别为:r5fss0_0、r5fss0_1、r5fss1_0、r5fss1_1。不同的Cortex-R5F核心,编译器链接脚本指定的.resource_table段加载地址有所不同,具体如下表所示。
表 3

CPU核心加载地址
r5fss0_00xA0100000
r5fss0_10xA1100000
r5fss1_00xA2100000
r5fss1_10xA3100000
led_flash_r5fss_nortos工程配置的Cortex-R5F核心为r5fss0_0,下面演示如何修改led_flash_r5fss_nortos工程配置,实现基于Linux引导启动r5fss0_0。

[*]IPC配置
在syscfg配置文件,添加IPC配置,具体配置如下图所示。
https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/c10df6e5b67d4d47ba56ba8ef0846d3d~tplv-obj.jpg?traceid=20230301101619085E3EDD68632F797E17&x-expires=2147483647&x-signature=lVSIL4GbESNnEHs3rhO3G0caC5A%3D
图 28
[*]UART配置
UART0为Cortex-A53核心(Linux系统)的调试串口。在led_flash_r5fss_nortos工程中已配置UART0作为调试串口,请在syscfg配置文件取消勾选"Enable UART Log"配置选项,或修改为Linux设备树中未使能的串口。
https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/ef1c54eb832c411d85c3f9dfc7a65dc4~tplv-obj.jpg?traceid=20230301101619085E3EDD68632F797E17&x-expires=2147483647&x-signature=hnacN3Vl2xuWH3KoIjIl%2B%2BoPTWQ%3D
图 29
[*]编译器链接脚本修改
双击打开编译器链接脚本linker.cmd,修改脚本内容。
https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/14b991eb27e7407881fa9dbaf8e1be9e~tplv-obj.jpg?traceid=20230301101619085E3EDD68632F797E17&x-expires=2147483647&x-signature=kqGrlOGpVe9flRxZjfAbr5tzCbw%3D
图 30修改内容如下:

[*]启动代码链接至R5F_TCMA;
[*]新增一个.resource_table段;
[*]代码段、数据段、bss段、堆栈全部链接至DDR,在Linux上为r5fss0_0预留内存地址空间;
SECTIONS
{
GROUP {
.text.hwi: palign(8)
.text.cache: palign(8)
.text.mpu: palign(8)
.text.boot: palign(8)
.text:abort: palign(8) /* this helps in loading symbols when using XIP mode */
} > R5F_TCMA
GROUP {
.text: {} palign(8) /* This is where code resides */
.rodata: {} palign(8) /* This is where const's go */
} > DDR_1
GROUP {
/* This is the resource table used by linux to know where the IPC "VRINGs" are located */
.resource_table: {} palign(4096)
} > DDR_0
GROUP {
.data: {} palign(8) /* This is where initialized globals and static go */
} > DDR_1
GROUP {
.bss: {} palign(8) /* This is where uninitialized globals go */
RUN_START(__BSS_START)
RUN_END(__BSS_END)
.sysmem: {} palign(8) /* This is where the malloc heap goes */
.stack: {} palign(8) /* This is where the main() stack goes */
} > DDR_1
GROUP {
.irqstack: {. = . + __IRQ_STACK_SIZE;} align(8)
RUN_START(__IRQ_STACK_START)
RUN_END(__IRQ_STACK_END)
.fiqstack: {. = . + __FIQ_STACK_SIZE;} align(8)
RUN_START(__FIQ_STACK_START)
RUN_END(__FIQ_STACK_END)
.svcstack: {. = . + __SVC_STACK_SIZE;} align(8)
RUN_START(__SVC_STACK_START)
RUN_END(__SVC_STACK_END)
.abortstack: {. = . + __ABORT_STACK_SIZE;} align(8)
RUN_START(__ABORT_STACK_START)
RUN_END(__ABORT_STACK_END)
.undefinedstack: {. = . + __UNDEFINED_STACK_SIZE;} align(8)
RUN_START(__UNDEFINED_STACK_START)
RUN_END(__UNDEFINED_STACK_END)
} > DDR_1
/* Sections needed for C++ projects */
GROUP {
.ARM.exidx: {} palign(8) /* Needed for C++ exception handling */
.init_array: {} palign(8) /* Contains function pointers called before main */
.fini_array: {} palign(8) /* Contains function pointers called after main */
} > DDR_1
/* Sections needed for C++ projects */
GROUP {
.ARM.exidx: {} palign(8) /* Needed for C++ exception handling */
.init_array: {} palign(8) /* Contains function pointers called before main */
.fini_array: {} palign(8) /* Contains function pointers called after main */
} > DDR_1
}
https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/095f88ba95ba43849e3d9f522bee6530~tplv-obj.jpg?traceid=20230301101619085E3EDD68632F797E17&x-expires=2147483647&x-signature=aUkSFcZj3QxTu%2BcjOzZB%2BmBaERI%3D
图 31https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/797f6631df254e078915d60ad1733e5a~tplv-obj.jpg?traceid=20230301101619085E3EDD68632F797E17&x-expires=2147483647&x-signature=fa%2FGW8k4UnFq5YGZ0Us%2F8KGP8QY%3D
图 32
[*]设置.resource_table段的加载地址为0xA0100000,作为r5fss0_0核心预留内存空间;
[*]设置共享内存链接至Linux为共享内存预留的内存地址空间。
/* Resource table must be placed at the start of DDR_0 when R5 cores are early booting with Linux */
DDR_0 : ORIGIN = 0xA0100000, LENGTH = 0x1000
DDR_1 : ORIGIN = 0xA0101000 , LENGTH = 0xEFF000
USER_SHM_MEM : ORIGIN = 0xA5000000, LENGTH = 0x80
LOG_SHM_MEM : ORIGIN = 0xA5000000 + 0x80, LENGTH = 0x00004000 - 0x80
RTOS_NORTOS_IPC_SHM_MEM : ORIGIN = 0xA5004000, LENGTH = 0x0000C000
https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/3947f6704b9b413cb6dc2d05470f5f82~tplv-obj.jpg?traceid=20230301101619085E3EDD68632F797E17&x-expires=2147483647&x-signature=yB3YAWA1Rddd%2F%2FO10t9Goo27fto%3D
图 33



页: [1]
查看完整版本: 基于 TI Sitara系列 AM64x核心板——程序自启动说明