移植无非是让内核可以运行在特定的硬件上罢了
内核对于某些CPU的支持是一定的,可以在内核中找到对应的CPU的支持列表,对于支持的可以移植,对于不支持的,那么就不好移植了
移植时,最主要的就是根据已有的板级文件进行移植,修改一些外设的配置与功能来适合你自己的板子与硬件。
内核一般也分很多个部分的,一般会有驱动,还有通用内核源码,以及跟架构有关的内容
一般移植是从Linux官网上下载到一个ARM版本的源码,然后将里面平台有关的配置全部选好,比如CPU的型号,主频等,然后如果你使用的那个CPU在新版本的内核里面还没有支持,那就要找个架构相近的CPU进行修改
然后板级有关的驱动,设备树什么的都不用改,直接从旧的SDK拷贝过来
因为标准的内核源码为了保证丰富的适应性,有很多很多模块,这些模块都可以依需求进行选择,使得最终编译出的内核大小合适。
对于一块确定的主板(含CPU),因为很多信息是确定的,就可以依此对模块进行有效裁剪,比如选择合适的架构(CPU类型,含CPU支持特性模块),板级驱动模块等等。
如果对应CPU信息在原始库中还没有直接对应,则可以选择相近CPU版本的,进行一些参数调整。
这样再进行编译,得到适合主板运行的内核的过程就是内核移植。