为 ZephyrRTOS 增加 SoC 支持(2) 基础框架 N32L406 的移植还没有完成,最近又开坑做思澈 SF32LB58 的移植。原因一是这个芯片带蓝牙和 2D GPU,适合做一些低功耗显示的设备,比如码表,导航设备,以及智能眼镜之类,我觉得挺有意思;另一个原因是思澈的老板也愿意支持开源,说很多芯片寄存器功能愿意开发给社区,特别是包括蓝牙的接口也愿意“以后”开放给社区对接 ZephyrRTOS 的蓝牙协议栈,所以我觉得还是可以尝试做一下。还有一个原因是他们说是愿意提供给社区开发者提供一些资金支持,但是目前看他们讨论的情况,这个资金支持倒也不能抱太大期待。先用爱发电吧。思澈的资料都可以从官方 wiki: https://wiki.sifli.com/index.html 这里下载。我先基于官方仓库https://github.com/OpenSiFli/zephyr提供的一个移植仓库开始的,但是因为代码组织和依赖的关系,我重新组织新建了仓库:manifest repo: https://github.com/iotpi/sifli-porting-templatehal module: https://github.com/iotpi/hal_sifli,主要包含芯片的 baremetal 驱动。zephyr porting: https://github.com/iotpi/sifli_zephyr,这一仓库预期是以后可以合并到 zephyr upstream,但是工作量还是很巨大,遥遥无期另外还有一个朋友完全基于官方的仓库继续修改的组织架构,放在他自己的仓库下:https://github.com/ck-telecom/zephyr-SiFli,有兴趣的朋友也可以围观。1. 芯片架构
这个芯片架构还有点复杂,有三个核,分别是 HCPU, ACPU和LCPU。其中 LCPU 一般用心跑蓝牙协议栈。蓝牙协议栈还是闭源的。这里 HCPU 和 ACPU 合起来组成了 HPSYS,LCPU单独组成 LPSYS。2. 设备树(devicetree, dts)我看了 nxp 和 nordic 对于多核 MCU 架构的dts定义方式,是把所有的核定义在了一个基础 dtsi里,然后在特定的核的 dtsi 定义里再 /delete-node/ 移除掉。我现在并不明白他们为什么要这么使用,问了 zephyr 的专家,也并不确定。所以目前我使用了我自己认为更适合的方式去组织,如果后面遇到了新问题,再考虑修改这个结构。鉴于上面的芯片功能框图,我定义基础的 dts 文件:sf32lb58.dtsi,用于定义整个 SoC 共用的外设;
?sf32lb58_hpsys.dtsi,定义 HCPU 和 ACPU 共用的 外设(内存);
sf32lb58_hcpu.dtsi,仅供 HCPU 访问的CPU及内存;
sf32lb58_acpu.dtsi,仅供 ACPU 访问的CPU及内存;
sf32lb58_lpsys.dtsi,定义 LPSYS 访问的设备与内存;
sf32lb58_lcpu.dtsi,定义 LCPU 相关的CPU和内存。
sf32lb586.dtsi:定义 具体 sf32lb586 特定的配置,应该主要是 合封的PSRAM 和 FLASH 的配置。sf32lb586_hcpu.dtsi:这个文件应该由板级 dts 定义包含的头文件
同样还要定义sf32lb586_acpu.dtsi, sf32lb586_lcpu.dtsi注意,上面的截图都只作为参考,最终编译有问题或者别的架构原因,上面的内容还是会变更。下期继续填坑。文章里如果出现错误,或者您有什么建议,欢迎留言指正!感谢!








声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
蓝牙
+关注
关注
116文章
6092浏览量
174394 -
移植
+关注
关注
1文章
401浏览量
28742 -
RTOS
+关注
关注
24文章
851浏览量
121320
发布评论请先 登录
相关推荐
热点推荐
移植 ZephyrRTOS 到思澈 SF32LB58 过程笔记之二 建立板级定义
ZephyrRTOS 的编译,是从指定板子 (board) 标识符开始的。所以为了编译测试我们的定义和代码,就必须先定义对应的板子。目前我这里使用的是 SF32LB58 devkit开发板,所以

LB/LMB/MB/HB 分集接收模块 skyworksinc
/HB 分集接收模块真值表,LB/LMB/MB/HB 分集接收模块管脚等资料,希望可以帮助到广大的电子工程师们。
发表于 05-16 18:32

Sky5? LB / MB / HB 分集接收模块 skyworksinc
,Sky5? LB / MB / HB 分集接收模块真值表,Sky5? LB / MB / HB 分集接收模块管脚等资料,希望可以帮助到广大的电子工程师们。
发表于 05-15 18:33

Sky5? LB/MBV/HB 分集接收模块 skyworksinc
? LB/MBV/HB 分集接收模块真值表,Sky5? LB/MBV/HB 分集接收模块管脚等资料,希望可以帮助到广大的电子工程师们。
发表于 05-12 18:32

UHV-615全自动SF6密度继电器校验仪操作使用
SF6开关是电力系统广泛使用的高压电器SF6开关的可靠运行已成为供用电部门最关心的问题之一。SF6气体密度继电器是用来监测运行中SF6开关本
发表于 05-09 17:48
?0次下载
Sky5? LB/MLB/MB/HB 分集接收模块 skyworksinc
,Sky5? LB/MLB/MB/HB 分集接收模块真值表,Sky5? LB/MLB/MB/HB 分集接收模块管脚等资料,希望可以帮助到广大的电子工程师们。
发表于 05-07 18:31

Sky5? LB/MB/HB 分集接收模块 skyworksinc
? LB/MB/HB 分集接收模块真值表,Sky5? LB/MB/HB 分集接收模块管脚等资料,希望可以帮助到广大的电子工程师们。
发表于 04-11 18:34

Sky5? LB/MB/HB LNA Bank 模块 skyworksinc
资料,Sky5? LB/MB/HB LNA Bank 模块真值表,Sky5? LB/MB/HB LNA Bank 模块管脚等资料,希望可以帮助到广大的电子工程师们。
发表于 04-11 18:31

LB9-110W2(LB9-126W2)电流互感器
LB9-110W2(LB9-126W2)电流互感器供60~145KV、50~60Hz 电力系统作电流、电能测量及继电保护用
产品概述 该系列电流互感器包括LB-60W2、LB
发表于 04-01 10:36
【GD32 MCU 移植教程】9、从 STM32F10x 系列移植到 GD32F30x 系列
对比、外设及性能对比以及从 STM32F10x 移植到 GD32F30x 的移植步骤,旨在让开发者能够快速从STM32F10x 移植到 GD

【GD32 MCU 移植教程】5、GD32E230 系列移植到 GD32F330 系列
移植到 GD32F330 系列的需求,本文
档专门针对既有的 GD32E230 代码如何移植到 GD32F330 做一个详细的介绍;

【GD32 MCU 移植教程】2、从 GD32F303 移植到 GD32F503
GD32E503 系列是 GD 推出的 Cortex_M33 系列产品,该系列资源上与 GD32F303 兼容度非常高,本应用笔记旨在帮助您快速将应用程序从 GD32F303 系列微控制器移植到 GD32E503 系列微控制器。

SF6泄漏在线监测报警系统在10kV到1000kV高压开关室中的应用
当使用以SF6气体为绝缘和灭弧介质的室内开关在使用过程中发生泄漏时,泄漏出来的SF6气体及其分解产物会往室内低层空间积聚,造成局部缺氧和带毒. SF6泄漏在线监测报警系统室时监测环境中

【GD32 MCU 移植教程】1、从 GD32F10x 移植到 GD32F30x
应用程序移植到新的微控制器。本应用笔记旨在帮助您快速将应用程序从 GD32F10x 系列微控制器移植到 GD32F30x 系列微控制器。

评论