移植NXP官方uboot到ALPHA开发板过程1-基本移植

看了正点原子uboot基本移植视频的视频,跟着视频移植没有头绪,感觉有点乱,视频讲的流程跟正点原子的PDF又有点不一样,所以打算自己整理一下移植过程,整理成笔记,方便大家和自己移植uboot。

针对NXP imx6ull-14x14-emmc的uboot基本移植过程

    • 1.添加板子默认配置文件
    • 2.添加板子对应的头文件
    • 3.添加板子对应的板级文件夹
    • 4.修改uboot的配置界面
    • 5.创建uboot的Make脚本

1.添加板子默认配置文件

借鉴NXP官方6ULL EVK开发板,默认配置文件也用他的。
  1. 复制官方NXP解压后的u-boot;
  2. (可以跳过)用Vscode打开,添加工作空间,settings.json(用于屏蔽一些文件);
  3. 在uboot/configs/中,把mx6ull_14x14_evk_emmc_defconfig
    拷贝成自己的mx6ull_14x14_xxx_emmc_defconfig
    注意!注意!注意!defconfig配置文件有命名规则,其他的文件不清楚,xxx为自己的开发板名字,这个错误搞了我一晚上。。。
    该问题的官方描述链接

mx6ull_14x14_xxx_emmc_defconfig

修改config内容:

CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/mx6ull_xxx_emmc/imximage.cfg,MX6ULL_EVK_EMMC_REWORK"
CONFIG_TARGET_MX6ULL_xxx_EMMC=y

2.添加板子对应的头文件

不同的板子,有一些需要配置的信息,一般是在一个头文件里面配置,每个板子有一个。对于NXP官方的6ULL EVK板子,这个头文件就是mx6ullevk.h.
  1. 配置开发板头文件,在uboot/include/configs/中,把mx6ullevk.h 拷贝成自己的 mx6ull_xxx_emmc.h
    修改头文件内容:
#ifndef __MX6ULLEVK_CONFIG_H
#define __MX6ULLEVK_CONFIG_H

改为:

#ifndef __MX6ULL_XXX_EMMC_CONFIG_H
#define __MX6ULL_XXX_EMMC_CONFIG_H

3.添加板子对应的板级文件夹

每个板子都有特有的文件,也叫做板级文件;这里我们将6ULL EVK的板级文件直接拷贝过来。
  1. 添加板级文件,在 uboot/board/freescale/ 中,将 mx6ullevk/ 文件夹拷贝成自己的板级文件夹 mx6ull_xxx_emmc/,不要移植错了;
  2. 在新的板级文件夹中,将mx6ullevk.c拷贝成mx6ull_xxx_emmc.c
  3. 在新的板级文件夹中,在Makefile中改动目标输出文件:
obj-y := mx6ull_xxx_emmc.o
  1. 在新的板级文件夹中,修改 imximage.cfg文件
 PLUGIN board/freescale/mx6ullevk/plugin.bin 0x00907000

改为:

PLUGIN board/freescale/mx6ull_xxx_emmc/plugin.bin 0x00907000
  1. 在新的板级文件夹中,修改kconfig文件
if TARGET_MX6ULL_xxx_EMMC

  config SYS_BOARD
	default "mx6ull_xxx_emmc"
  config SYS_VENDOR
	default "freescale"
 config SYS_SOC
	default "mx6"
  config SYS_CONFIG_NAME
	default "mx6ull_xxx_emmc"

endif
  1. 在新的板级文件夹中,修改 MAINTAINERS 文件为:
MX6ULL_XXX_EMMC BOARD
M: Peng Fan <[email protected]>
S: Maintained
F: board/freescale/mx6ull_xxx_emmc/
F: include/configs/mx6ull_xxx_emmc.h
F: configs/mx6ull_14x14_xxx_emmc_defconfig

4.修改uboot的配置界面

  1. 修改文件arch/arm/cpu/armv7/mx6/Kconfig,在 207 行加入如下内容:
config TARGET_MX6ULL_xxx_EMMC
 	bool "Support mx6ull_xxx_emmc"
 	select MX6ULL
 	select DM
 	select DM_THERMAL

在最后一行的 endif 的前一行添加如下内容:

source "board/freescale/mx6ull_xxx_emmc/Kconfig"

5.创建uboot的Make脚本

  1. 在uboot/中创建需要的脚本:mx6ull_xxx_emmc.sh
    脚本内容:
#!/bin/bash
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- distclean
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- mx6ull_14x14_xxx_emmc_defconfig
make V=1 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j4 

(注意自己的cpu编译数量x 对应 jx,我的是四个)
13. 给予脚本执行权限: chmod 777 mx6ull_xxx_emmc.sh
14. 运行编译脚本:./mx6ull_xxx_emmc.sh
15. (可以跳过)查看头文件是否被引用:grep -nR "mx6ull_xxx_emmc.h"

没有修改驱动(改名字)的移植就算基本完成了…
可以下载到SD卡验证了。

你可能感兴趣的:(uboot移植,嵌入式Linux,uboot,linux,嵌入式)