DshanMCU-R128s2 SDK 入门

本章介绍基础的sdk编译,打包等操作,方便快速上手 sdk 开发。
sdk 基础知识r128 平台拥有三个核心,cortex m33 核心作为启动和安全核心,xuantie c906 核心作为应用核运行用户 app,hifi5 作为算法核运行dsp算法。由于架构不同,不同的核心需要运行不同的 rtos。
其中 cortex m33 和 c906 运行的是 freertos v10.4.3 同一个内核支持两个不同架构的核心,其外设、组件、驱动是相同的。特性如下:
支持 cortex-m33(armv8-m)、c906(riscv-64) 架构freertos v10.4.3 内核支持标准 posix 接口支持系统接口,用于内核以外的模块调用内核函数的接口支持文件系统,包含设备管理器、分区管理器、文件系统实体管理器等,例如 littlefs、fat 等,实现对不同设备类型、分区类型、文件系统类型的集成支持 newlibc 库而 hifi5 运行的是 cadence 所推荐的 freertos v10.2.0 内核,其部分组件与 m33/c906 核心不同。特性如下:
支持 xtensa hifi5 架构freertos v10.2.0 内核支持系统接口,用于内核以外的模块调用内核函数的接口支持 vfpu/nn 算法库所以在开发过程中,m33/c906 使用的是一套 freertos sdk,hifi5 使用的是另外的一套 freertos sdk。这里将介绍 m33/c906 的开发入门,hifi5的相关开发将在 dsp 章节介绍。
异构计算相关在sdk 目录架构下表是简化版本的 sdk 目录结构,具体的说明在 【sdk入门 - sdk 架构与目录结构】中说明。
├── board # 板级配置目录│ ├── common # 公共板级配置目录│ │ ├── configs # 公共板级配置│ │ └── data # 公共数据│ └── r128s2 # r128 s2 芯片配置目录│ └── module # r128 s2 module 模块板级配置目录├── lichee # 系统源码目录│ ├── brandy-2.0 # 启动相关目录│ ├── dsp # hifi5 freertos 系统、组件、应用│ ├── rtos # m33/c906 freertos 系统、组件、应用│ ├── rtos-components # 公共应用组件,libc、多媒体、lvgl等│ └── rtos-hal # rtos hal驱动├── out # 打包输出的临时文件与最终镜像文件└── tools # 用于存放打包相关的脚本、工具初始化sdk环境在编译之前,需要初始化 sdk 的环境,使用下列命令初始化环境。
source envsetup.sh
载入项目方案使用下列命令载入方案
lunch_rtos
这里我们需要开发的是 r128s2_module_c906 方案,对应的是 r128 模块的最小化系统开发板的 c906 核心的 rtos。输入 1 回车即可。
第一次载入方案会解压工具链,解压完成后会提示方案载入成功:
第二次开始就会跳过解压工具链,并且会记录上一次选择的方案。
更换项目方案在开发过程中如果需要开发 m33 核心方案,需要重新执行 lunch_rtos 选择 m33 方案。
配置 rtos 基本设置与软件包配置sdk 提供了 mrtos_menuconfig 命令来配置基本sdk配置与软件包。相关文档位于 [rtos软件包配置]。下图为进入的配置界面。
编译系统可以使用 m 命令或者 mrtos 命令编译rtos系统。
打包系统使用 p 或者 pack 命令打包系统
注意,打包如果出现
err: failed to open bin file rtos_xxx.fexgenerate image file failederror: mkimage run error则是因为系统配置勾选启用了这个核心但是实际没有编译这个核心的 rtos 系统,导致找不到这个核心的 rtos 的固件。这时候需要编译完成 rtos 系统然后重新打包。例如报错 err: failed to open bin file rtos_arm.fex
则需要编译对应的 arm 核心的固件,在这里是 m33 核心。lunch_rtos 选择 m33 核心,然后 m 编译。
此时 pack 就可以通过了
扩展命令了解上面的命令即可开始开发 rtos ,不过 sdk 还提供了一些其他命令简化使用。
一键编译 + 打包sdk 提供了 mp 命令以供一键编译 + 打包方案。
编译 u-boot可以使用 muboot 命令编译 u-boot
编译完成后会自动拷贝生成的镜像到指定位置等待打包
编译 boot0可以使用 mboot0 编译 boot0,编译完成后会自动拷贝生成的镜像到指定位置等待打包
编译 u-boot + boot0可以使用 mboot 命令编译 u-boot + boot0
编译完成后会自动拷贝生成的镜像到指定位置等待打包


介绍一下linux内核比较优秀的调试方式KGDB
实用的电容降压电路
出售荣耀后,华为消费者业务高管调整
优化功率转换器控制环路的三个选项
2027年区块链将达到全球国内生产总值GDP的10%以上
DshanMCU-R128s2 SDK 入门
IT部门应该怎样面对边缘计算
名门锁业别墅指纹锁EL23简介
气密性检测仪的的无损高精度检测过程
zenpowermax拆解 结构复杂
云安全事故的发生的主因是什么
多个大牛对2021年人工智能的分析预测
TCL 华星 t6、t7 屋顶分布式光伏发电项目并网投产,年发电量约 1995 万度
车联网体系结构中主要包含哪三层
百亿募资登陆科创板后,这家企业首次“期中考”转亏4000万
可控硅交流调压器
中国联通发布2020上半年业绩公告
深度剖析串联和并联电路中的电阻器
光伏大事报:晶科60亿元再扩产!隆基、通威双双扩产!爱旭组件开工……
自动化在线贴标机的特点介绍