推荐星级:
- 1
- 2
- 3
- 4
- 5
以MSP430说明FreeRTOS移植
资料介绍
MSP430RTOS移植函数说明文档
通过MSP430的官网移植函数用来说明在移植时需要实现的函数和原因
FreeRTOS移植需要实现的代码
1,pxPortinitialiseStack)
会在任务创建时调用此函数
参数:
pxTopOfStack:任务私有栈栈顶地址
pxCode:任务指针
pvParameters:传给任务的参数指针
私有栈用来保存任务的状态寄存器,指令指针,通用寄存器,任务内部需要用栈的数据
不同的处理器栈初始化顺序结构不同,但本质是一样的
Stack Type_t"pxPortlnitialiseStack(StackType_t"pxTopOfStack,TaskFunction_t pxCode,void
"pvParameters)
在初始化私有栈时,会假设任务已经开始运行了,FreeRTOS基于时间片的任务调度,所以在任务切换时,会进入定时器中断,然后进行任务切换,不同的处理器中断发生时会执行不同的寄存器入栈操作,MSP430会保存PC和SR寄存器,所以在栈顶两个空间用来保存指令指令,SR寄存器,初始化就是函数指针和一个任意数
部分文件列表
文件名 | 大小 |
以MSP430说明FreeRTOS移植.pdf | 11K |
部分页面预览
(完整内容请下载后查看)MSP430RTOS移植函数说明文档
通过 MSP430 的官网移植函数用来说明在移植时需要实现的函数和原因
FreeRTOS移植需要实现的代码
1,pxPortInitialiseStack()
会在任务创建时调用此函数
参数:
pxTopOfStack:任务私有栈栈顶地址
pxCode:任务指针
pvParameters:传给任务的参数指针
私有栈用来保存任务的状态寄存器,指令指针,通用寄存器,任务内部需要用栈的数据
不同的处理器栈初始化顺序结构不同,但本质是一样的
StackType_t *pxPortInitialiseStack( StackType_t *pxTopOfStack, TaskFunction_t pxCode, void
*pvParameters )
{
/*
Place a few bytes of known values on the bottom of the stack.
This is just useful for debugging and can be included if required.
MSP430特有
*pxTopOfStack = ( StackType_t ) 0x1111;
pxTopOfStack--;
*pxTopOfStack = ( StackType_t ) 0x2222;
pxTopOfStack--;
*pxTopOfStack = ( StackType_t ) 0x3333;
pxTopOfStack--;
*/
/* The msp430 automatically pushes the PC then SR onto the stack before
executing an ISR. We want the stack to look just as if this has happened
so place a pointer to the start of the task on the stack first - followed
by the flags we want the task to use when it starts up. */
在初始化私有栈时,会假设任务已经开始运行了,
FreeRTOS基于时间片的任务调度,所以在任务切换时,会进入定时器中断,然后进行
任务切换,不同的处理器中断发生时会执行不同的寄存器入栈操作,
MSP430 会保存 PC 和
SR寄存器,所以在栈顶两个空间用来保存指令指令,
SR寄存器,初始化就是函数指针和一
个任意数
*pxTopOfStack = ( StackType_t ) pxCode;
pxTopOfStack--;
*pxTopOfStack = portFLAGS_INT_ENABLED;
pxTopOfStack--;
/* Next the general purpose registers.
通用寄存器入栈,根据内核说明入栈
*/
全部评论(0)