爱笑的小姐姐 · 2023年06月09日

嵌入式分时分区实时系统

AnOs介绍

AnOs是一个基于ARM M4系列开发的 嵌入式分时分区实时系统。仿照VxWorks653思路开发。

https://gitee.com/personal\_chenjl/AnOs
需要登录gitee才能看到文件

image.png

开发环境使用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"

本文来源网络,免费传达知识,版权归原作者所有。如涉及作品版权问题,请联系我进行删除

作者:嵌入式大杂烩
文章来源:嵌入式大杂烩

推荐阅读

更多嵌入式AI干货请关注嵌入式AI专栏。欢迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。
推荐阅读
关注数
18808
内容数
1352
嵌入式端AI,包括AI算法在推理框架Tengine,MNN,NCNN,PaddlePaddle及相关芯片上的实现。欢迎加入微信交流群,微信号:aijishu20(备注:嵌入式)
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息