X
首页
技术
模拟电子
单片机
半导体
电源管理
嵌入式
传感器
最能打国产芯
应用
汽车电子
工业控制
家用电子
手机便携
安防电子
医疗电子
网络通信
测试测量
物联网
最能打国产芯
大学堂
首页
直播
专题
TI 培训
论坛
汽车电子
国产芯片
电机驱动控制
电源技术
单片机
模拟电子
PCB设计
电子竞赛
DIY/开源
嵌入式系统
医疗电子
颁奖专区
【厂商专区】
【电子技术】
【创意与实践】
【行业应用】
【休息一下】
最能打国产芯
活动中心
直播
发现活动
颁奖区
电子头条
参考设计
下载中心
分类资源
文集
排行榜
电路图
Datasheet
最能打国产芯
国产芯片交流
[MCU] 全志T113双核异构处理器的使用基于Tina Linux5.0——RTOS编译开发说明
aleksib
2024-11-18 09:46
楼主
**3、RTOS编译开发说明** **3.1、RTOS SDK与TinaLinux开发环境** RTOS SDK相关代码已集成到Tina Linux开发环境,Tina Linux开发环境下的rtos子目录即为RTOS开发环境。 ``` ├──brandy ├──bsp ├──build ├──buildroot ├──build.sh >build/top_build.sh ├──device ├──kernel ├──openwrt ├──out ├──platform ├──prebuilt ├──rtos #RTOS环境 ├──tee_kit ├──test └──tools ``` **3.2、RTOS编译** Tina集成了RTOS的编译、打包功能,而且适用于openwrt、buildroot等文件系统。这里以T113 S4平台作为例子进行阐述。 **3.2.1、关联RTOS方案** TinaLinux的SDK中,SDK根目录下有device目录,该目录存放的是不同处理器平台及主板的配置,以SBC-T113S4_NAND为例,它是以T113_S4为主控制器的,其配置文件就存放在device/config/chips/t113_s4/configs/sbc_t113s4_nand目录下,那么该主板如何关联RTOS方案呢? ``` xxx@xxx:~/workspace/t113_tina5.0/t113_tinasdk5.0-v1/device/config/chips/t113_s4/configs/sbc_t113s4_nand$ tree -l . ├── bin │ ├── amp_dsp0.bin │ └── amp_rv0.bin ├── BoardConfig.mk //关联RTOS项目的关键 ├── board.dts -> linux-5.4/board.dts ├── bsp │ ├── env.cfg │ └── sys_partition.fex ├── buildroot │ ├── BoardConfig.mk │ ├── BoardConfig_nor.mk │ ├── bootlogo.bmp │ ├── env_nor.cfg │ ├── swupdate │ │ ├── env_ab.cfg │ │ ├── sw-description-ab │ │ ├── sw-description-ab-rdiff │ │ ├── sw-description-recovery │ │ ├── sw-description-recovery-sign │ │ ├── sw-subimgs-ab.cfg │ │ ├── sw-subimgs-ab-rdiff.cfg │ │ ├── sw-subimgs-recovery.cfg │ │ ├── sw-subimgs-recovery-secure.cfg │ │ ├── sw-subimgs-recovery-sign.cfg │ │ ├── sys_partition_ab.fex │ │ └── sys_partition_recovery.fex │ ├── sys_partition.fex │ └── sys_partition_nor.fex ├── linux-5.4 │ ├── board_backup.dts │ ├── board.dts │ ├── board_lvds1024x600.dts │ ├── board_lvds1024x768.dts │ ├── board_old.dts │ ├── board_spi4bit_drv30.dts │ ├── board_spi4bit.dts │ ├── board_spi_sbc-t113s_v1p0.dts │ ├── board_tft1024x600.dts │ ├── board_uart3.dts │ ├── board_xr829_sbc-t113s_v1p1.dts │ ├── config-5.4 │ ├── config-5.4-recovery │ ├── config_uart3-5.4 │ ├── env.cfg │ ├── env_uart3.cfg │ └── sys_partition.fex ├── openwrt │ ├── bootlogo.bmp │ ├── sys_partition.fex │ └── sys_partition_nor.fex ├── sys_config.fex ├── sys_config_old.fex ├── sys_config_uart3.fex ├── uboot-board_backup.dts ├── uboot-board.dts ├── uboot-board-lvds-lcd1024x600.dts ├── uboot-board_spi0_1wire.dts ├── uboot-board_spi_sbc-t113s_v1p0.dts ├── uboot-board_spi_sbc-t113s_v1p1.dts └── uboot-board-tft-lcd1024x600.dts ``` 在这些配置文件中有一个文件BoardConfig.mk,它就是关联RTOS应用的关键,这个文件的内容如下: ![外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传](https://bbs.aw-ol.com/assets/uploads/files/1731640284360-a7612410-1de1-45b4-aa50-de4f5ded5cc2-image.png) 配置RTOS方案名的关键字段LICHEE_RTOS_PROJECT_NAME:=xxxxx。以我司SBC-T113S主板为例,在BoardConfig.mk中配置的是t113_s4_c906_evb1_auto的RTOS方案。开发者可以通过修改LICHEE_RTOS_PROJECT_NAME字段,更改构建RTOS方案。 先进入Tina的rtos目录,rtos目录的内容如下: ``` ├──board ├──envsetup.sh >tools/scripts/source_envsetup.sh ├──lichee ├──out └──tools ``` 执行如下指令进行RTOS的环境配置 ``` source envsetup.sh #配置环境变量 ``` 我们看到可以选择的RTOS方案,即是LICHEE_RTOS_PROJECT_NAME字段可以配置的RTOS方案。 ``` last=t113_s4_c906_evb1_auto You're building on Linux Lunch menu... pick a combo: 1. t113_i_c906_evb1_auto 2. t113_s3p_c906_evb1_auto 3. t113_s3p_c906_evb1_auto_fastboot 4. t113_s3p_c906_evb1_auto_fastboot_video 5. t113_s3p_c906_evb1_auto_non_os 6. t113_s3p_c906_example_demo 7. t113_s4_c906_evb1_auto 8. t113_s4_c906_evb1_auto_fastboot_video 9. t113_s4p_c906_evb1_auto Which would you like? [Default t113_s4_c906_evb1_auto]: ``` 从以上RTOS的方案中,可以看到有支持t113-i处理器的,也有支持t113_s4处理器的,当前默认是t113_s4_c906_evb1_auto,这个是基于t113_s4处理器的方案。另外,这个方案是可以添加的,如果主板是基于T113I的,可以把t113_i_c906_evb1_auto作为蓝本增加自己方案,如果主板是基于T113-S4的,可以把t113_i_c906_evb1_auto作为蓝本增加自己方案。如何添加方案请看本手册的第六章节。 **3.2.2、单独编译RTOS方案** 执行lunch_rtos进行编译方案选择后,可以通过mrtos_menuconfig进行方案的配置,配置完成后即可通过m或者mrtos指令进行RTOS的编译。 ``` xxx@xxx:~/workspace/t113_tina5.0/t113_tinasdk5.0-v1/rtos$ lunch_rtos last=t113_s4_c906_evb1_auto You're building on Linux Lunch menu... pick a combo: 1. t113_i_c906_evb1_auto 2. t113_s3p_c906_evb1_auto 3. t113_s3p_c906_evb1_auto_fastboot 4. t113_s3p_c906_evb1_auto_fastboot_video 5. t113_s3p_c906_evb1_auto_non_os 6. t113_s3p_c906_example_demo 7. t113_s4_c906_evb1_auto 8. t113_s4_c906_evb1_auto_fastboot_video 9. t113_s4p_c906_evb1_auto Which would you like? [Default t113_s4_c906_evb1_auto]: 7 select=7... t113_s4_c906/evb1_auto '/home/ping/workspace/t113_tina5.0/t113_tinasdk5.0-v1/rtos/lichee/rtos/projects/t113_s4_c906/evb1_auto/defconfig' -> '/home/ping/workspace/t113_tina5.0/t113_tinasdk5.0-v1/rtos/lichee/rtos/.config' ============================================ RTOS_BUILD_TOP=/home/ping/workspace/t113_tina5.0/t113_tinasdk5.0-v1/rtos RTOS_TARGET_ARCH=riscv RTOS_TARGET_CHIP=sun8iw20p1 RTOS_TARGET_DEVICE=t113_s4_c906 RTOS_PROJECT_NAME=t113_s4_c906_evb1_auto ============================================ Run mrtos_menuconfig to config rtos Run m or mrtos to build rtos ``` 以上提示我们通过mrtos_menuconfig可以进行应用的配置,执行结果如下: ![外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传](https://bbs.aw-ol.com/assets/uploads/files/1731640399111-b6e0e6d4-a8f7-4b86-85fc-9e49dc078c0e-image.png) 从配置情况看,和Linux的内核配置比较接近,也是可以配置各种驱动外设,见下图: ![外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传](https://bbs.aw-ol.com/assets/uploads/files/1731640414907-c84cfc5d-79b7-4699-89a1-1bc1e79d3863-image.png) T113系列拥有双核Cortex-A7核心,也拥有RV64-C906核心,这两个核心使用的外设是共通的,因此选择C906选择外设的时候,要避开Cortex-A7已经使用的外设。例如:Cortex-A7核心已经把PE2/PE3这两个GPIO作为UART来使用,C906就不能再使用PE2/PE3。 另外,这里要明确的一点是:每个RTOS应用也是有对应的配置文件的,对于t113_s4_c906_evb1_auto这个项目的配置文件在如下目录: ``` TinaSDK所在目录/rtos/lichee/rtos/projects/t113_s4_c906/evb1_auto/defconfig ``` 配置完成后即可执行m或者mrtos执行进行编译,指令执行结果如下: ``` xxx@xxx:~/workspace/t113_tina5.0/t113_tinasdk5.0-v1/rtos$ mrtos build rtos ... ===There isn't tina environment.=== Note: will use shell command origin rather than the functon. Dark Builder Version (1.6.0 - BiCEP2 (Gravitational Waves)) *[CC] [SCRIPT] build/t113_s4_c906_evb1_auto/img/sys_config.fex [CONF] [Tina-RT-Builder] .dbuild/..//include/generated/t113_s4_c906_evb1_aut o/autoconf.h [LDS] [Linker] projects/t113_s4_c906/evb1_auto/freertos.lds CC build/t113_s4_c906_evb1_auto/arch/common/version.o LD build/t113_s4_c906_evb1_auto/arch/common/obj-in.o LD build/t113_s4_c906_evb1_auto/arch/obj-in.o [LD] [Tina-RT-Builder] build/t113_s4_c906_evb1_auto/img/rt_system.elf if [ -n /home/ping/workspace/t113_tina5.0/t113_tinasdk5.0-v1/rtos/lichee/rtos/bu ild/t113_s4_c906_evb1_auto/img/]; then mkdir -p /home/ping/workspace/t113_tina 5.0/t113_tinasdk5.0-v1/rtos/lichee/rtos/build/t113_s4_c906_evb1_auto/img; fi Memory region Used SizeRegion Size%age Used RAM: 214096 B 6 MB 3.40% *[SYMS] [Tina-RT-Builder] build/t113_s4_c906_evb1_auto/img/rt_system.syms *[IMAGE][Tina-RT-Builder] build/t113_s4_c906_evb1_auto/img/rt_system.bin text data bss dec hex filename 134576 69048 10472214096 34450 build/t113_s4_c906_evb1_auto/img/rt_syst em.elf copying /home/ping/workspace/t113_tina5.0/t113_tinasdk5.0-v1/rtos/lichee/rtos/bu ild/t113_s4_c906_evb1_auto/img/rt_system.bin to /home/ping/workspace/t113_tina5. 0/t113_tinasdk5.0-v1/rtos/board/t113_s4_c906/evb1_auto/bin/freertos.fex #### make completed successfully '/home/ping/workspace/t113_tina5.0/t113_tinasdk5.0-v1/rtos/lichee/rtos/build/t11 3_s4_c906_evb1_auto/img/rt_system.bin' -> '/home/ping/workspace/t113_tina5.0/t11 3_tinasdk5.0-v1/rtos/board/t113_s4_c906/evb1_auto/bin/rtos_riscv_sun8iw20p1.fex' ping@embedall:~/workspace/t113_tina5.0/t113_tinasdk5.0-v1/rtos$ ``` 从以上信息我们得到一些信息,编译出来的固件名字是freertos.fex/rtos_riscv_sun8iw20p1.fex,其实两个固件是一样的。固件是编译出来,但是这个固件如何打包到Tina生成的根文件系统中呢?请看下一章。 **3.2.3、在Tina下编译RTOS方案** 在TinaSDK根目录中,先选择好整体平台方案,见如下说明: * buildroot方案 1、首先使用如下命令选择整体平台方案 ``` ./build.sh config ``` 2、然后RTOS相关操作命令如下 ``` ./build.sh rtos #单独编译RTOS方案 ./build.sh rtos menuconfig #修改RTOS配置文件 ./build.sh rtos clean #清除RTOS编译中间文件 ``` 注意:执行./build.sh不会编译RTOS * openwrt方案 1、首先使用如下命令选择整体平台方案 ``` source build/envsetup.sh #生效环境变量 lunch #选择openwrt方案 ``` 2、执行make会先编译RTOS,再编译Tina * 快捷命令 在Tina根目录下,执行了source build/envsetup.sh配置环境后,可使用RTOS快捷命令进行RTOS的配置和编译等。 ![外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传](https://bbs.aw-ol.com/assets/uploads/files/1731640728957-20b3f0e3-505c-4e2a-b368-f7b0e9e0b542-image.png) **3.3、RTOS固件打包** 我们以编译openwrt方案为例,在的编译openwrt的过程中,会首先编译RTOS,然后将生成的镜像文件自动拷贝到对应平台方案中,并且rt_system.elf重名为amp_rv0.bin,见如下信息: ``` xxx@xxx:~/workspace/t113_tina5.0/t113_tinasdk5.0-v1$ make -j32 ===There is tina environment.=== Note: make is the shell functon in envsetup.sh. == action: openwrt_build, action_args: -j32 == ========ACTION List: build_rtos ;======== options : INFO: build rtos ... Setup env done! Run lunch_rtos to select project last=t113_s4_c906_evb1_auto select=t113_s4_c906_evb1_auto... t113_s4_c906/evb1_auto '/home/ping/workspace/t113_tina5.0/t113_tinasdk5.0-v1/rtos/lichee/rtos/projects/t113_s4_c906/evb1_auto/defconfig' -> '/home/ping/workspace/t113_tina5.0/t113_tinasdk5.0-v1/rtos/lichee/rtos/.config' ============================================ RTOS_BUILD_TOP=/home/ping/workspace/t113_tina5.0/t113_tinasdk5.0-v1/rtos RTOS_TARGET_ARCH=riscv RTOS_TARGET_CHIP=sun8iw20p1 RTOS_TARGET_DEVICE=t113_s4_c906 RTOS_PROJECT_NAME=t113_s4_c906_evb1_auto ============================================ Run mrtos_menuconfig to config rtos Run m or mrtos to build rtos build rtos ... Dark Builder Version (1.6.0 - BiCEP2 (Gravitational Waves)) *[CC] [SCRIPT] build/t113_s4_c906_evb1_auto/img/sys_config.fex [CONF] [Tina-RT-Builder] .dbuild/..//include/generated/t113_s4_c906_evb1_auto/autoconf.h [LDS] [Linker] projects/t113_s4_c906/evb1_auto/freertos.lds CC build/t113_s4_c906_evb1_auto/arch/common/version.o LD build/t113_s4_c906_evb1_auto/arch/common/obj-in.o LD build/t113_s4_c906_evb1_auto/arch/obj-in.o [LD] [Tina-RT-Builder] build/t113_s4_c906_evb1_auto/img/rt_system.elf if [ -n /home/ping/workspace/t113_tina5.0/t113_tinasdk5.0-v1/rtos/lichee/rtos/build/t113_s4_c906_evb1_auto/img/]; then mkdir -p /home/ping/workspace/t113_tina5.0/t113_tinasdk5.0-v1/rtos/lichee/rtos/build/t113_s4_c906_evb1_auto/img; fi Memory region Used SizeRegion Size%age Used RAM: 214096 B 6 MB 3.40% *[IMAGE][Tina-RT-Builder] build/t113_s4_c906_evb1_auto/img/rt_system.bin *[SYMS] [Tina-RT-Builder] build/t113_s4_c906_evb1_auto/img/rt_system.syms text data bss dec hex filename 134576 69048 10472214096 34450 build/t113_s4_c906_evb1_auto/img/rt_system.elf copying /home/ping/workspace/t113_tina5.0/t113_tinasdk5.0-v1/rtos/lichee/rtos/build/t113_s4_c906_evb1_auto/img/rt_system.bin to /home/ping/workspace/t113_tina5.0/t113_tinasdk5.0-v1/rtos/board/t113_s4_c906/evb1_auto/bin/freertos.fex #### make completed successfully '/home/ping/workspace/t113_tina5.0/t113_tinasdk5.0-v1/rtos/lichee/rtos/build/t113_s4_c906_evb1_auto/img/rt_system.bin' -> '/home/ping/workspace/t113_tina5.0/t113_tinasdk5.0-v1/rtos/board/t113_s4_c906/evb1_auto/bin/rtos_riscv_sun8iw20p1.fex' '/home/ping/workspace/t113_tina5.0/t113_tinasdk5.0-v1/rtos/lichee/rtos/build/t113_s4_c906_evb1_auto/img/rt_system.elf' -> '/home/ping/workspace/t113_tina5.0/t113_tinasdk5.0-v1/device/config/chips/t113_s4/configs/sbc_t113s4_nand/bin/amp_rv0.bin' ``` 然后在Tina环境中打包,确保RTOS编译固件amp_rv0.bin打包到根文件系统中。 说明: 1)buildroot需要执行./build.sh&&./build.sh pack命令 2)openwrt需要执行make&&pack命令 打包完成后,生产的固件位于tina5.0/out/t113_s4_linux_sbc_t113s4_uart0.img,可以使用PhoenixSuit工具烧录到主板上。 **3.4、RISC-V核启动** 进入主核Linux控制台后,执行如下命令即可完成RV核异构通信框架的初始化: ``` echo start>/sys/class/remoteproc/remoteproc1/state ``` 注:T113-S4处理器包括了DSP HIFI核心,也包括了RISC-V核心,因此它应该具备remoteproc0/remoteproc1两个节点(这两个节点在内核的DTS中是可配置的,可以删除任何一个节点)。如果两个节点都在,那么remoteproc0节点是DSP核心,remoteproc1节点是RISC-V核心。 **3.5、RTOS镜像文件更新** 更新RTOS镜像文件的方法有以下两种: 1、Tina Linux环境下,按照RTOS编译、RTOS固件打包步骤重新编译固件,并烧录进开发板,之后再启动RV核。 2、通过adb push将新生成的镜像文件amp_rv0.bin推到/lib/firmware目录下,在Linux控制台依执行如下命令: ``` echo stop>/sys/class/remoteproc/remoteproc1/state #关闭RV。 echo amp_rv0.bin>/sys/class/remoteproc/remoteproc1/firmware echo start>/sys/class/remoteproc/remoteproc1/state #启动RV ```
点赞
回复评论
暂无评论,赶紧抢沙发吧
最新活动
是德科技有奖直播 | 应对未来高速算力芯片的设计与测试挑战
免费申请 | 上百份MPS MIE模块,免费试用还有礼!
TI 有奖直播 | 使用基于 Arm 的 AM6xA 处理器设计智能化楼宇
Follow me第二季第3期来啦!与得捷一起解锁高性能开发板【EK-RA6M5】超能力!
报名直播赢【双肩包、京东卡、水杯】| 高可靠性IGBT的新选择——安世半导体650V IGBT
30套RV1106 Linux开发板(带摄像头),邀您动手挑战边缘AI~
随便看看
香主,关注一下SPIDMA方式的问题
STM32的FLASH当做掉电数据保存器问题!
从pt100精度而言,实现0--200度误差0.5度能否实现?
高IP3微波低噪声放大器的仿真
【ESP32学习】读取霍尔(HALL)传感器
5v和3v电平怎么转换电路
如何让你的(Cube Suite+)支持R7F0C80212
逻辑内建自测移相器的设计与优化*
“E”如反掌 奇瑞A3平稳过人
WinCE的IE浏览器支持视频吗
单片机无法对外部时钟分频
如何在Q2中将IO口设置为开漏输入呢?
SDRAM SelfRefresh 的迷惑
EVC编译出错,请教。
锁相放大器设计
stm32f103使用spi3
51开发板典藏版和俗人斗气儿说51
EEWORLD大学堂----RISC-V 5th workshop
FPGA波形仿真结果问题
DVD刻录
电子工程世界版权所有
京B2-20211791
京ICP备10001474号-1
京公网安备 11010802033920号
回复
写回复
收藏
回复