AnOs介绍
AnOs是一个基于ARM M4系列开发的 嵌入式分时分区实时系统。仿照VxWorks653思路开发。
“
https://gitee.com/personal_chenjl/AnOs
”
开发环境使用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”
以上就是良许教程网为各位朋友分享的Linu系统相关内容。想要了解更多Linux相关知识记得关注公众号“良许Linux”,或扫描下方二维码进行关注,更多干货等着你 !