您的位置:首页 > 其它

[连载]嵌入式实时操作系统TINIUX设计与实现 – 准备

2017-02-25 00:06 323 查看
为了方便嵌入式操作系统的跨平台移植,我们先为操作系统定义一些必要的数据类型,同时这些数据类型要尽量避免与用户应用程序的数据类型相冲突。
在此我们给系统定义基本的数据类型如下: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字节对齐;这两个参数对嵌入式操作系统的内存布局影响非常大,后面我们会具体分析!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: