freeRTOS 在 BlackFin533 平台上的移植 (2)

本文详细介绍了如何将freeRTOS操作系统移植到BlackFin533平台上,重点讨论了Blackfin5xx系列中断处理的特殊性、软中断在任务上下文切换中的应用,以及系统时钟中断的注册和xPortStartScheduler函数在启动调度器过程中的关键作用。
摘要由CSDN通过智能技术生成


1. 由于Blackfin5xx系列开关中断比较特殊,必须有一个临时变量去保存中断掩蔽寄存器IMASK的值便于后续的中断重新enable:

#define portDISABLE_INTERRUPTS()	(imask = cli())
#define portENABLE_INTERRUPTS()	 	(sti(imask))
因此在所有用到该对开关中断的地方都需要定义该临时变量。

2. 对于Blackfin可以通过发起软中断进行任务上下文的切换:

#define portYIELD()                     \
{                                       \
    asm("raise 14;");                   \
}
上述代码就启动了一个软中断,当然在系统上电初始化时,需要注册该软中断对应的ISR函数,如下:

//register the OS context switcher ISR into the vector
void vSetupOsCtxSw(void)
{
    register_handler_ex(ik_ivg14, (ex_handler_fn)OSCtxSw, EX_INT_ENABLE);
}
其中的函数register_handler_ex() 以及 该函数的入参(ik_ivg14,   ex_handler_fn,  EX_INT_ENABLE) 都需要引用blackfin的头文件进行支持的:

                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值