推荐星级:
  • 1
  • 2
  • 3
  • 4
  • 5

以MSP430说明FreeRTOS移植

更新时间:2019-10-21 22:04:04 大小:11K 上传用户:xuzhen1查看TA发布的资源 标签:msp430freertos 下载积分:1分 评价赚积分 (如何评价?) 收藏 评论(0) 举报

资料介绍

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移植需要实现的代码  
1pxPortInitialiseStack()  
会在任务创建时调用此函数  
参数:  
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)

暂无评论