TC2x移植FreeRTOS成功--Apple的學(xué)習(xí)筆記

快速看了Freertos的官網(wǎng)教程,及野火FreeRTOS內(nèi)核實現(xiàn)及應(yīng)用。那么對FreeRTOS的應(yīng)用及OS任務(wù)切換原理有了初步了解。
先說下移植的步驟,首先了解了任務(wù)切換的原理,主要是內(nèi)核寄存器的操作。Freertos的文件夾設(shè)計的已經(jīng)很好了,設(shè)備及核心代碼分離。TC2x的內(nèi)核是TC1.6版本,其中包括了上下文切換寄存器。
關(guān)于移植FreeRTOS的步驟,官網(wǎng)getting start有寫,第一步就是尋找device,就是找到此芯片。結(jié)果我沒有找到英飛凌TC2x芯片,只找到TC1782芯片。由于我先了解了OS任務(wù)切換的原理,主要和芯片相關(guān)的文件在portable文件夾下,而且主要是操作內(nèi)核寄存器,而英飛凌的TC1782在官網(wǎng)搜索了下,內(nèi)核是TC1.3。說白了都是Trcore版本我覺得應(yīng)該都是差不多的。官網(wǎng)下載了core相關(guān)的UM,包括TC1.3,TC1.6V,TC1.6P/E。先對比了下,覺得是可以拿TC1782來充當(dāng)TC2x的。在TC1782中運行bat即可生成工程代碼。

建立工程后,先折騰了一把,把編譯通過了。我把link文件都替換為了TC2x help工程中的,并且把interrupte及cpu pll也進(jìn)行了替換,因為我查了他們的主頻率是不同的。另外一個特點是TC1782中代碼使用的是單核的,我就先用單核吧!
包括添加頭文件,添加編譯選項-fdollars-in-identifiers。
"D:\HIGHTEC\toolchains\tricore\v4.9.1.0-infineon-2.0\tricore\include"
"{workspace_loc:/{ProjName}/RTOSDemo/Common_Demo_Source/include}"
"{workspace_loc:/{ProjName}/RTOSDemo}"
"{workspace_loc:/{ProjName}/RTOSDemo/FreeRTOS_Source/include}"
"{workspace_loc:/{ProjName}/RTOSDemo/FreeRTOS_Source/portable/GCC/TriCore_1782}"

第二步改頭換面,包括頭文件都改成了TC2x的設(shè)備頭文件。又折騰了一把,編譯通過了,并且ram編譯說溢出,改成rom編譯,反正我是要燒寫到flash中的。然后把LED燈改成了P33.8、P33.9、P33.10。最后燒錄到開發(fā)板。LED成功閃爍,并且沒有跑飛。

看了下創(chuàng)建的task,pxReadyTasksLists里面優(yōu)先級為0的有18個,優(yōu)先級為1的有7個。原因是mainCREATE_SIMPLE_LED_FLASHER_DEMO_ONLY宏定義設(shè)置為了0。感覺還是比較順利的。

后來手工刪除了prvOptionallyCreateComprehensveTestApplication中的很多task,只留下原版的3個ledTASK及一個timerdemoTask,另外必須要添加的空閑task。P33.8的LED每隔5mms進(jìn)行一次PIN角翻轉(zhuǎn)。
代碼如下

        /* 500ms---0,1000ms--1,2000ms--2 */
    xFlashRate = ledFLASH_RATE_BASE*(1+uxLED);
    xFlashRate /= portTICK_PERIOD_MS;

    xLastFlashTime = xTaskGetTickCount();
    for(;;)
    {
        vTaskDelayUntil( &xLastFlashTime, xFlashRate );
        vParTestToggleLED( uxLED );
    }

示波器測試驗證了下,還是比較準(zhǔn)確的,感覺做了理論準(zhǔn)備后,再動手,還是很順利的呢!后續(xù)會進(jìn)行RTOS的深入學(xué)習(xí),主要是看懂關(guān)鍵代碼,并且達(dá)到可以靈活修改的程度。


示波器截圖.png

示波器圖片.jpg

core寄存器截圖


core寄存器.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容