AnOs介绍
AnOs是一个基于ARM M4系列开发的 嵌入式分时分区实时系统。仿照VxWorks653思路开发。
https://gitee.com/personal\_chenjl/AnOs
需要登录gitee才能看到文件
开发环境使用Keil uVersion5。
示例程序运行于STM32F427控制器上。
该系统以作为高安全领域的操作系统应用为目标。
软件架构
该系统由BOOT,OS,APP1,APPN..构成。
BOOT负责启动时配置系统时钟,进入固化模式固化OS或各分区任务;或者直接进入OS。
OS为实时分时分区操作系统,负责各任务模块的调度,提供外设接口资源的驱动,以及保护各分区任务的运行。
APPn 为各个分区任务。由实际的应用方开发对应的代码。
各个分区之间使用共享内存的方式进行互相通信。
安装教程
该源代码提供两个示例任务分区,其中一个任务分区负责按1s周期控制一次LED灯工作状态;另一任务分区按1s周期从串口1输出字符串“abc”。
驱动程序提供一个GPIO控制的LED灯和COM1驱动接口示例。
使用下载器,分别将BOOT下载到0x0800000FLASH地址,OS下载到0x08008000,APP1下载到0x08020000,APP2下载到0x08040000。然后复位运行 目标程序即可实现程序的运行。
移植说明
基础说明
当前应用环境是使用Keil开发,测试平台为STM32F42X系列,当前,理论上ARM-3,ARM-4系列大部分是支持的,但要求需要硬件浮点处理单元,MPU内存保护单元(可选)。
BOOTLOADER
目标板应该至少拥有USART1口,便于BOOTLOADER使用升级,这是目前版本支持的升级方式。
BOOTLOADER固化地址在0x08000000。占用32KB空间大小。上电复位后首先运行。
BOOTLOADER主要是配置系统的时钟,如使用外部时钟,配置工作及各总线主频。
OS
OS需要配置每一个APP的Rom使用范围,RAM使用范围,以及共享内存范围和访问权限,有MPU时,会启用MPU进入访问保护;配置每个APP的工作周期,优先级;APP使用的栈大小;提供底层硬件设备资源的驱动接口,示例中提供LED灯和COM口两类的驱动程序示例。
OS下载地址为0x08008000,占用32KB空间大小。
OS会在运行过程中动态检测栈空间的安全,并在启用MPU功能的条件下,保护每个分区任务的运行空间。
APP
根据任务需要开发的应用程序,APP访问底层资源通过调用操作系统接口函数实现;APP之间数据传输通过共享内存实现,也可以使用操作系统提供的event事件进行通知传递。
每个APP工程在配置使用时,注意要使用提供的OS库,同时在ROM内存和RAM内存配置时,需要按照事先约定的空间,设置正确的地址范围。否则,OS将会认为是非法的分区任务,不予运行。
默认参数
- 使用12M外部晶振
- 主频配置为168M
- 使用GPIOC.Pin3脚控制LED灯
- 使用GPIOA.Pin9和GPIOA.Pin10作为USART1设备接口
示例演示流程
1.打开 MultiTask目录下的 RTOS\_APP.uvmpw 工作空间
2.根据硬件晶振频率,修改osBOOT工程中,Boot/start/boot.c文件中宏 PLL\_M 为实际晶振频率,然后编译
3.修改AnOs/Drv/DrvLed.c和DrvUart.c文件中有关硬件设备的配置,然后编译
4.分别设置工作空间中的osBoot,AnOs,App1,App2为活动工程,然后下载到目标板
5.复位目标板,LED灯将以2S的周期闪烁,同时,串口以1s周期输出字符串"abc"
本文来源网络,免费传达知识,版权归原作者所有。如涉及作品版权问题,请联系我进行删除
作者:嵌入式大杂烩
文章来源:嵌入式大杂烩
推荐阅读
- Cupkee,让硬件简单、好玩!
- 南大王利民团队新作 | MixFormerV2: 首个基于ViT并在CPU设备实时运行的目标跟踪器!
- 首篇基于Occupancy的单目3D模型 | 让单目3D也搭上最前沿列车
- 即插即用 | 高效多尺度注意力模型成为YOLOv5改进的小帮手
更多嵌入式AI干货请关注嵌入式AI专栏。欢迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。