所以我正在阅读 MicroC/OS-II 的书,但在任务堆栈部分我找不到堆栈是什么,最重要的是 - 它用于什么。我知道这不是一件漫长而困难的事情,但我有点必须理解它。这本书只讲了如何设置堆栈大小和其他一些类似的东西。那么,有人可以用简短的语言向我解释 uC/OS-II 中的任务堆栈是什么以及它的用途是什么?
以下二维数组代码抛出错误 #29 期望表达式。
typedef enum
{
BATTERY_POW = 0,
USB_POW = 1,
END_STATE = 2
} BMTState_e;
typedef enum //event enums
{
NO_EVENT = 0,
BOOT_EVENT =1,
//I/O events
POW_GOOD_LOW =2,
POW_GOOD_HIGH = 3,
VBUS_POW_LOW = 4,
VBUS_POW_HIGH =5
}BMTEvent_e;
Run Code Online (Sandbox Code Playgroud)
该结构定义为
typedef struct //state machine definition
{
void (*funcPtr)();
BMTState_e nextState;
}BMTAction_t;
BMTState_e BMTGlobal_State ; //global state
Run Code Online (Sandbox Code Playgroud)
该函数定义为
void BMTTest()
{
//do nothing for time being
}
BMTAction_t action[END_STATE][END_EVENT]={
[BATTERY_POW][NO_EVENT] = {BMTTest,BATTERY_POW}
[BATTERY_POW][BOOT_EVENT] = {BMTTest,BATTERY_POW},
[BATTERY_POW][POW_GOOD_LOW] = {BMTTest,USB_POW},
[BATTERY_POW][POW_GOOD_HIGH] = …
Run Code Online (Sandbox Code Playgroud) 阅读关于RTOS,"硬"RTOS的特点是它可以确定性地保持最后期限,但我们如何测试或证明系统实际满足要求?
MicroC/OS II RTOS的特点是硬RTOS,但我如何验证该声明?如果我的FPGA有一些C代码和ISR可以运行C程序并在具有类似于RTOS的信号量的线程之间进行上下文切换,那么我怎么知道OS/RTOS是"硬"还是"软"RTOS?
它可以依赖于应用程序,并且必须有一个定时器,因此使用内置硬件定时器(例如Altera DE2具有50 Mhz振荡器),首选硬件中断,然后我们只测试线程和进程是否可以根据截止日期,然后我们检查是否符合截止日期?
或者,为了区分操作系统,实时操作系统以及硬件和软件RTOS,必须包含哪些内容?
是否有一些"典型测试",对"硬RTOS"标签有典型要求?