上一篇文章的地址是[MYS-8MMX开发板]初上手体验https://www.cirmall.com/bbs/foru ... &fromuid=342211
(出处: 电路城论坛)
这周特别的忙,更新进度慢点了,以后还要加快速度才是。我一直从事嵌入式方向,使用的是NXP其它系列的CPU,这还是第一次接触IMX8这个片子。这篇文章主要是在uboot下搭一个移植板子的架子。除了uboot还需要一些其他的东西,我打了个包(其实也是下载的米尔科技的),需要的可以直接下载就是了。帖子主要是记录我的步骤,也可能会有遗漏或者写错的地方,如果有什么疑问的话可以给我发邮件,我们可以一块交流:liji6630@foxmail.com
链接:https://pan.baidu.com/s/1vVTSZQDyxALxhCv793x89Q
提取码:liji
--来自百度网盘超级会员V5的分享
现在开始,我还没有使用2020.04版本的uboot,直接拿MYS提供的这个Uboot版本就行了,在2020.04版本移植的方式也是一样的。
安装交叉编译环境等米尔的文档已经说的很详细了,这里不再重复,以下的说明都是针对uboot的。
补充:下一篇帖子我会补上2020.04版本uboot的试验并以此为基础进行MYS-8MMX的移植,如果顺利的话,以后我们就使用2020.04版本的了。
一、找个架子
- make imx8mm_ddr4_evk_defconfig
- make
复制代码运行生成固件脚本,烧写到sd卡试试。
1
2
还行,竟然直接起来了。还是SPL启动的。我最担心的就是这个EVK模板和MYS-8MMX的板子内存参数不同,还得改参数。如果内存控制器初始化失败,那么这里会卡到Trying to boot from MMC1上。这样就比较好的一步步的看了。那么就开始吧。
二、 创建自己的架子 创建自己的板级目录,取名叫xiheniao,设备名字就这么的被叫成BIRD_IMX8MM_DDR4_EVK,名字不重要。 搜一下,看看有哪些是要替换的。
3
先不涉及修改,我们先把这个大架子搭好。 第一步,建立自己的板级目录,我们叫xiheniao吧。就是把board目录下的freescale目录复制一份,叫做xiheniao,然后保留里面的common和imx8mm_evk就可以了,其他的目录都删掉。 第二步,建立自己的配置文件,把configs下面的imx8mm_ddr4_evk_defconfig复制为bird_imx8mm_ddr4_evk_defconfig。 这时候还差一些东西,我们先不动。慢慢的开始进行修改。 打开这个bird_imx8mm_ddr4_evk_defconfig,里面有一堆配置。我们目前只关注几个重点,其它的以后用到了再慢慢的看。 CONFIG_TARGET_IMX8MM_DDR4_EVK=y 这个地方,我们的板子叫BIRD_IMX8MM_DDR4_EVK,那么这里就改成: CONFIG_TARGET_BIRD_IMX8MM_DDR4_EVK=y 然后是: CONFIG_DEFAULT_DEVICE_TREE="fsl-imx8mm-ddr4-evk" CONFIG_DEFAULT_FDT_FILE="imx8mm-ddr4-evk.dtb" 第一个从名字上就能看出来这个就是uboot默认的设备树,我们将它改成bird-imx8mm-ddr4-evk。第二个提前说下,这个我们暂时不改,这个定义我看代码里面是用于uboot启动的时候加载的那个设备树的名称。目前我们还不涉及到内核的启动。先不管了,只是提前说一下。 既然第一个改名为bird-imx8mm-ddr4-evk,那么设备树也得增加,那么就复制一个吧: cp arch/arm/dts/fsl-imx8mm-ddr4-evk.dts arch/arm/dts/bird-imx8mm-ddr4-evk.dts 这时候这个配置文件就改好了。
最简单的,我们先来弄下这个设备树,先打开设备树。 发现最上面还#include "fsl-imx8mm-evk.dts",目前并不清楚这个板子和evk是啥关系,而且也不是dtsi头文件。那么干脆把这个文件取名叫bird-imx8mm-evk.dts算了,没准后面还得修改。这个dts文件就包含dtsi了。然后把include也改了。下面的model也改了,改成我们自己的名字。
4
光加上设备树了,还得让它参与编译,打开同级目录下的Makefile,
5
设备树部分现在基本就ok了。再去看看board那边。
三、修改自己的架子 现在board/xiheniao下面有个imx8mm_evk,我们换成我们的名字,就叫imx8mm_bird吧。然后进入目录。
6
这个imx8mm_evk.c好刺眼,换名字。其他名字就没啥好改的了。改了名也要在Makefile里面改下编译。
7
然后看Kconfig,这个地方最重要了。
8
按照这个修改就行了,既然我们把board改成了imx8mm_bird了,那么头文件也要添加这个,imx8mm_bird.h。那就继续开始复制之旅把。 cp include/configs/imx8mm_evk.h include/configs/imx8mm_bird.h 这里面有个imx_env.h看了下都是环境变量,先不管了,暂时不影响。那么现在,我们添加了board,添加了CONFIG_TARGET_,怎么编译呢。这时候还缺个地方。
9
稍微关注下这两个select,这代表着CONFIG_IMX8MM和CONFIG_IMX8M_DDR4,还有个地方改一下:
10
编译下试试: - make bird_imx8mm_ddr4_evk_defconfig
- make
复制代码似乎看着没问题,修改下生成flash.bin的脚本,生成固件跑一下试试
11
12
既然编译没问题,运行也没问题的话,那么表示我们的架子就已经有了。以后我们只修改我们自己的板级代码就行了。 那么接下来就对照着板子的硬件原理图先在uboot里面一点点的去适配吧。
|