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

时间:2021-04-03 19:26:44
为了方便嵌入式操作系统的跨平台移植,我们先为操作系统定义一些必要的数据类型,同时这些数据类型要尽量避免与用户应用程序的数据类型相冲突。
在此我们给系统定义基本的数据类型如下:

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字节对齐;这两个参数对嵌入式操作系统的内存布局影响非常大,后面我们会具体分析!