最近研究了一段时间的rt-thread,相对来说还是算比较有追求的设计。从风格上讲,与Linux类似,很多设计思想也是借鉴Linux,比如设备驱动;从设计上来说,精简,高效易扩展,做了很多不错的中间件。
当然最主要的工作还是集中于IMX8QXP,A核就不多说了,都是Linux的传统内容,开发也都搞定了。对其内部的M核比较感兴趣,就想着尝试移植一下rt-thread,一来挑战一下,二来检验一下学习成果。虽然之前在STM32上移植过rt-thread,不过太过easy,感觉没什么意思。
移植前,首先看一下IMX8内部的架构图
其中有两个M4,左下角的称之为SCU,用于资源及clock管理,不对外开放。上面的一个M4才是我们所能用的。
无论A核还是M4,都必须通过SCU来进行资源及clock管理。SCU的SDK不开放,只提供相关API。
内部的M4默认运行的系统为FreeRTOS,个人对其极不喜欢,也是我移植rt-thread的一个原因,O(∩_∩)O哈哈~
首先看一下FreeRTOS的SDK代码结构:
原始SDK中提供了很多裸机example以及包含FreeRtos的demo,移植思路就从这些demo开始。
首先我们需要将rt-thread的源码拷贝进rtos下并为其新建目录rt-thread,同时还需要修改编译配置文件,加入编译过程。
将hello也拷贝一份,相关FreeRTOS重命名为rt-thread。