我在移植RT Thread 到一颗ARM926EJS 内核的时候,出现 任务不能正常调度;
1、我在官网下载的3.1.3的代码,CPU上下文切换使用的包里面libcpu\arm\arm926文件夹中的context.s cpuport.c stack.c文件,启动文件是我们公司自己写的,裸机可以正常启动CPU,开发环境为MDK5.20;
2、main函数如下
int main(void)
{
rt_kprintf("thread main start\r\n");
enable_interrupts();
while(1){
rt_kprintf("1\r\n");
rt_thread_mdelay(1000);
}
}
可以正常打印出main start 和 一个 1 后面就没有任何输出了;
3、我还建立了一个LED指示灯的任务,代码如下:
static void LED_entry(void *parameter)
{
static uint32_t led_tmp;
SetPinMux(10, 2, 0);
SetPinDir(10, 2, 1);
while(1){
led_tmp++;
if(led_tmp%2)SetGpio(10,2);
else ClearGpio(10,2);
rt_thread_mdelay(100);
}
}
int createLedThread(void)
{
rt_kprintf("createLedThread\r\n");
rt_thread_t tid=RT_NULL;
tid = rt_thread_create("led test thread",
LED_entry,RT_NULL,
256,
RT_THREAD_PRIORITY_MAX-1, 5);
if(tid!=RT_NULL)rt_thread_startup(tid);
else rt_kprintf("rt_thread_create error\r\n");
return 0;
}
INIT_APP_EXPORT(createLedThread);
任务创建没有报错 rt_thread_create error,但是该任务除了正常打印出createLedThread,就没有任何动作了;
4、整体上感觉 调用 rt_thread_mdelay 之后就没有任何反应,串口无任何输出,感觉是调度器或者上下文切换出错了;
5、我也是第一次在ARM9上移植该RTOS(我的裸机程序运行是正常的在该MCU上),希望大家给点意见怎么排查,相当感谢。
更多回帖