TC2x移植FreeRTOS成功--Apple的学习笔记

快速看了Freertos的官网教程,及野火FreeRTOS内核实现及应用。那么对FreeRTOS的应用及OS任务切换原理有了初步了解。
先说下移植的步骤,首先了解了任务切换的原理,主要是内核寄存器的操作。Freertos的文件夹设计的已经很好了,设备及核心代码分离。TC2x的内核是TC1.6版本,其中包括了上下文切换寄存器。
关于移植FreeRTOS的步骤,官网getting start有写,第一步就是寻找device,就是找到此芯片。结果我没有找到英飞凌TC2x芯片,只找到TC1782芯片。由于我先了解了OS任务切换的原理,主要和芯片相关的文件在portable文件夹下,而且主要是操作内核寄存器,而英飞凌的TC1782在官网搜索了下,内核是TC1.3。说白了都是Trcore版本我觉得应该都是差不多的。官网下载了core相关的UM,包括TC1.3,TC1.6V,TC1.6P/E。先对比了下,觉得是可以拿TC1782来充当TC2x的。在TC1782中运行bat即可生成工程代码。

建立工程后,先折腾了一把,把编译通过了。我把link文件都替换为了TC2x help工程中的,并且把interrupte及cpu pll也进行了替换,因为我查了他们的主频率是不同的。另外一个特点是TC1782中代码使用的是单核的,我就先用单核吧!
包括添加头文件,添加编译选项-fdollars-in-identifiers。
"D:\HIGHTEC\toolchains\tricore\v4.9.1.0-infineon-2.0\tricore\include"
"{ProjName}/RTOSDemo/Common_Demo_Source/include}"
"{ProjName}/RTOSDemo}"
"{ProjName}/RTOSDemo/FreeRTOS_Source/include}"
"{ProjName}/RTOSDemo/FreeRTOS_Source/portable/GCC/TriCore_1782}"

第二步改头换面,包括头文件都改成了TC2x的设备头文件。又折腾了一把,编译通过了,并且ram编译说溢出,改成rom编译,反正我是要烧写到flash中的。然后把LED灯改成了P33.8、P33.9、P33.10。最后烧录到开发板。LED成功闪烁,并且没有跑飞。

看了下创建的task,pxReadyTasksLists里面优先级为0的有18个,优先级为1的有7个。原因是mainCREATE_SIMPLE_LED_FLASHER_DEMO_ONLY宏定义设置为了0。感觉还是比较顺利的。

后来手工删除了prvOptionallyCreateComprehensveTestApplication中的很多task,只留下原版的3个ledTASK及一个timerdemoTask,另外必须要添加的空闲task。P33.8的LED每隔5mms进行一次PIN角翻转。
代码如下

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

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

示波器测试验证了下,还是比较准确的,感觉做了理论准备后,再动手,还是很顺利的呢!后续会进行RTOS的深入学习,主要是看懂关键代码,并且达到可以灵活修改的程度。


示波器截图.png

示波器图片.jpg

core寄存器截图


core寄存器.png

你可能感兴趣的:(TC2x移植FreeRTOS成功--Apple的学习笔记)