本帖最后由 时飞 于 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
为了方便嵌入式操作系统的跨平台移植,我们先为操作系统定义一些必要的数据类型,同时这些数据类型要尽量避免与用户应用程序的数据类型相冲突。
在此我们给系统定义基本的数据类型如下:
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字节对齐;这两个参数对嵌入式操作系统的内存布局影响非常大,后面我们会具体分析!
一周热门 更多>