[连载]嵌入式实时操作系统AIOS设计与实现

2019-10-14 22:23发布

本帖最后由 时飞 于 2017-2-26 18:21 编辑

目标:从零开始设计一款嵌入式实时操作系统(RTOS)
名称:AIOS - Advanced Input Output System
参考对象:ucos vxWorks eCos RTEMS等
芯片:ARM Coterx-M3内核,从STM32F1系列芯片杨帆起航……
开发平台:Keil v5
调试工具:JLink v8
代码许可:遵循GPLv2+开源许可协议,商业应用更友好,不需要公布应用源码,没有任何潜在商业风险。
源码托管:https://github.com/SenseRate/AIOS

三年前,朋友送给我一款STM32F1的开发板,从此进入嵌入式开发领域。三年多以来,做过大大小小的不同项目,在此对我的朋友进行感谢!

原子兄弟的开发板提供的教学示例给了我很大的启发,在此一并感谢,谢谢!

从零开始开发一款嵌入式实时操作系统是一件任重而道远的事情,三年多以来,不断的进行开发、修改、完善,目前已经有了雏形,现在进行重新设计,并通过连载的形式逐步呈现给大家,也欢迎论坛的朋友们加入,一起开发、完善!

当然,也欢迎朋友们来撕、来踩……

暂时发在此版块,若版主觉得不恰当,烦请移动到合适的版块……

另外,最近查找了一下,原子兄弟的STM32F1开发板没有找到,论坛中若朋友们有冗余的,可以转让给我一块,请站内短信联系。









补充内容 (2018-3-3 18:06):
此系统已经更新为嵌入式实时操作系统TINIUX
git网址:https://github.com/SenseRate/TINIUX
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
14条回答
时飞
1楼-- · 2019-10-15 03:20
本帖最后由 时飞 于 2017-2-25 15:17 编辑

为了方便嵌入式操作系统的跨平台移植,我们先为操作系统定义一些必要的数据类型,同时这些数据类型要尽量避免与用户应用程序的数据类型相冲突。

在此我们给系统定义基本的数据类型如下:

typedef unsigned   char                    uOS8_t;
typedef char                                sOS8_t;
typedef unsigned   short                  uOS16_t;
typedef signed     short                   sOS16_t;
typedef unsigned   int                    uOS32_t;
typedef signed     int                    sOS32_t;


typedef                uOS32_t                                 uOSStack_t;
typedef                sOS32_t                                 sOSBase_t;
typedef                uOS32_t                                 uOSBase_t;
typedef                uOS32_t                                 uOSTick_t;

typedef enum {OS_FALSE = 0, OS_TRUE = !OS_FALSE} uOSBool_t;
typedef enum {OS_SUCESS = 0, OS_ERROR = !OS_SUCESS} uOSStatus_t;

数据类型中的下划线 _t代表Type

下面我们定义一些和具体平台相关的一些参数,也就是和STM32F1相关的参数

#define                 FITSTACK_GROWTH                        ( -1 )
#define                FITBYTE_ALIGNMENT                ( 8 )

因为是和平台相关的,我们定义相关参数的前缀为FIT,代表需要根据不同的芯片类型进行调整。用此前缀也便于提醒用户,在进行系统移植时,一定要注意带有前缀fit相关的参数、变量和函数;

上述宏定义的参数中FITSTACK_GROWTH        代表栈增长的方向, 我们用-1代表从高位置向低位置增长,用1代表从低位置向高位值增长;宏定义参数FITBYTE_ALIGNMENT代表数据对齐方式;在Cortex-M3系列的STM32F1芯片中,栈增长方向为从高到低,我们定义为-1,芯片为32位宽的,我们定义8字节对齐;这两个参数对嵌入式操作系统的内存布局影响非常大,后面我们会具体分析!
南有乔木
2楼-- · 2019-10-15 06:27
这可是个大工程~!!顶
CallMeWater
3楼-- · 2019-10-15 08:03
前排占座,学习学习
peng1554
4楼-- · 2019-10-15 09:26
支持连载
时飞
5楼-- · 2019-10-15 10:11
 精彩回答 2  元偷偷看……
hello_galaxy
6楼-- · 2019-10-15 11:13
支持

一周热门 更多>