本帖最后由 lemonhub 于 2024-11-6 20:29 编辑
极海半导体APM32开发板 开源嵌入式组件移植测试 OneOS Lite移植测试一、移植目标硬件(开发板/芯片/模组)
OneOS Lite支持ARM Cortex M核芯片和RISC-V内核的芯片的移植,比如STM32 基于Cortex M核全系列、GD32 基于Cortex M核全列、NXP 基于Cortex M核全系列等。本教程将使用立创开发板极海半导体APM32开发板进行示例移植,其他 ARM Cortex M系列开发板和芯片移植方法类似。调试ARM Cortex M核还需要仿真器,如果您的开发板或者芯片模组没有板载仿真器,就需要连接外置的仿真器,如DAPLink。
二、OneOS Lite
OneOS Lite是中国移动针对物联网领域推出的轻量级操作系统,具有可裁剪、跨平台、低功耗、高安全等特点,支持ARM Cortex-A和 Cortex-M、MIPS、RISC-V等主流芯片架构,兼容POSIX、CMSIS等标准接口,支持Javascript、MicroPython等高级语言开发模式,提供图形化开发工具,能够有效提升开发效率、降低开发成本,帮助用户快速开发稳定可靠、安全易用的物联网应用。
OneOS Lite总体架构采用分层设计,主体由驱动、内核、组件、安全框架组成。采用一个轻量级内核加多个系统组件的模式,加上海量硬件的适配支持,使OneOS Lite 具备极高的可伸缩性与易用性。
三、OneOS系统特点
- 灵活裁剪:抢占式的实时多任务RTOS内核,支持多任务处理、软件定时器、信号量、互斥锁、消息队列、邮箱和实时调度等特性,RAM和ROM资源占用极小。可灵活裁剪,搭配丰富组件,适应不同客户需求。
- 跨芯片平台:应用程序可无缝移植,大幅提高软件复用率。支持的主流芯片架构有:ARM Cortex-A和Cortex-M、MIPS、RISC-V等。支持几乎所有的MCU和主流的NB-IOT、4G、WIFI、蓝牙通信芯片。
- 组件丰富:提供丰富的组件功能,如互联互通、端云融合、远程升级、室内外定位、低功耗控制等。同时提供开放的第三方组件管理工具,支持添加各类第三方组件,以便扩展系统功能。
- 低功耗设计:支持MCU和外围设备的功耗管理,用户可以根据业务场景选择相应低功耗方案,系统会自动采用相应功耗控制策略,进行休眠和调频调压,有效降低设备整体功耗。
- 安全设计:针对物联网设备资源受限、海量连接、网络异构等特点,在系统安全、通信安全、数据安全等方面提供多维度安全防护能力。
四、OneOS开发资料
1. OneOS源码开源地址
https://gitee.com/cmcc-oneos/OneOS
2. 开发文档官网
https://os.iot.10086.cn/v2/doc/homePage
3. 开发工具源码下载
https://os.iot.10086.cn/download/
4. 开发工具OneOS_Cube
https://os.iot.10086.cn/download/tool
五、OneOS-APM32F407开发板测试
1. 下载源码
```bash
git clone https://gitee.com/cmcc-oneos/OneOS.git
```
2. 内核启动简单分析
内核启动主要有下面几个步骤:
1. 系统先从启动文件开始运行,然后进入 OneOS Lite的内核启动函数 os_kernel_init()和os_kernel_start();
2. os_kernel_init中调用k_run_init_call函数执行OS_INIT_LEVEL_PRE_KERNEL_1,进行内核启动前的第一阶段的初始化;
3. 初始化内核各模块,如tick队列,调度器,定时器等
4. 创建recycle,idle,timer,sys系统任务;
5. 启动调度器,最后会运行sys任务,sys任务调用k_run_init_call函数依次执行其他自动化宏注册的函数,最后调用main函数进入用户程序入口。
3. 安装OneOS_Cube工具
OneOS-Cube工具地址 https://os.iot.10086.cn/download/tool
下载工具请点击[OneOS-Cube下载](https://os.iot.10086.cn/download/tool)
直接点击下载的OneOS-Cube工具进行安装,安装路径不支持含有中文和空格字符。
OneOS-Cube工具使用方法:进入到代码工程目录,任意空白处点击右键,再找到“OneOS_Cube”执行,即可打开OneOS-Cube的命令行操作界面。
这样OneOS-Cube成功启动了
OneOS-Cube常用的用户指令非常简单,OneOS 3.0及以上版本的常用指令简单介绍如下:
4. 工程模板创建
1. 创建工程
在OS源码根目录中,打开project文件夹。启动CUBE工具,输入创建工程命令 **oos project**
默认是STM32系列芯片,因此需要选择APM32芯片品牌系列型号等信息,**按S键进行配置保存,按ESC键退出并开始生成工程代码。**
**在这里我们选择的极海半导体APM32开发板对应的芯片,APM32F407作为案例进行测试。**
保存.config配置文件,ESC退出开始生成代码。
4. 生成代码
5. 编译代码
使用MDK工具编译代码
输入oos init -i keil命令,选择Project工程,进行编译代码
6. 下载代码
六、总结
完成上面的移植之后,接下来就可以开始学习OneOS-lite的系统内核与设备驱动和物联网组件相关部分了,特别是设备驱动部分,这是精华部分,绝大多数的RTOS内核其实的大差不差,例如FreeRTOS,UCOS等,但是OneOS-lite提供了设备驱动层的东西,大量的利用面向对象的思想,这是值得学习。
OneOS Lite 提供了丰富的基础驱动支持,驱动部分通过对底层代码和厂家 SDK 的统一封装,以 device 设备的方式对外提供统一的接口和较为全面的协议支持,更便于客户上手开发。目前 OneOS Lite 已经支持了包括 STM32、NXP、MM32、HC32、GD32 等多个厂家及芯片平台,并且针对其不同系列做了深度适配,覆盖了常用的 GPIO、SPI、QSPI、ADC、DAC、CAN、I2C、ETH、SAI 等接口,同时配套了相关的协议和应用示例,如各类传感器、屏幕显示、网络链接、音频等,后续仍在不断丰富和完善,力求为客户提供一个便捷高效的开发环境。
OneOS Lite 在各类外设的基础上抽象出了设备驱动模型,有效提高了代码可复用性、可移植性,模块分层解耦,降低了各层的开发难度。设备驱动框架设计遵循以下原则:
- 下层向上层提供统一的访问接口
- 分层设计,屏蔽硬件差异
- 每一层只跟其相邻的层建立联系
各层的作用如下:
- 系统调用接口提供统一的对外接口,实现对设备的访问。
- 设备管理层实现了对设备驱动程序的封装,向上对接系统调用接口。
- 设备驱动框架层是对同类硬件设备驱动的抽象,将不同厂家的同类硬件设备驱动中相同的部分抽取出来,将不同部分留出接口,由驱动程序实现。
- 设备驱动层是一组驱使硬件设备工作的程序,实现访问硬件设备的功能,它负责创建和注册设备。
|