關于m0核移植ucosii時遇到的問題
他告訴我,他的ucosii是從官網上下載下來的,按照別人的把core.c .asm cpu.c 3個文件改好了,但是還是啟動不了,我對M0并不十分了解,網友對ucosii的時鐘系統也不太了解,然后我又幫他解釋了一番,ucosii的系統時鐘是通過系統滴答的發生1s中斷產生的,。我提醒他先用定時器產生一個1s中斷,然后將OSTimeTick();這個函數加到中斷里去,但實際上還是有問題。接著,我讓他全部注釋的覅按這句話
本文引用地址:http://www.104case.com/article/201611/322261.htm//void OS_CPU_SysTickHandler (void)
//{
// OS_CPU_SR cpu_sr;
// OS_ENTER_CRITICAL(); /* Tell uC/OS-II that we are starting an ISR */
// OSIntNesting++;
// OS_EXIT_CRITICAL();
// OSTimeTick(); /* Call uC/OS-IIs OSTimeTick() */
// OSIntExit(); /* Tell uC/OS-II that we are leaving the ISR */
//}
并在 SysTick_handler()這樣寫
{
OS_CPU_SR cpu_sr;
OS_ENTER_CRITICAL();
OSTimeTick();
OSIntExit();
}
這就是我剛才說的 系統1S中斷產生的回調函數。
但是系統會卡在啟動代碼.s里如圖
這個問題是因為在啟動代碼 里沒有加入 os_cpu_handlaer的啟動函數,否則os 系統也就是ucosii就會無法啟動的。加入即可。
評論