前言
参考CSDN的girlkoo大神
原文链接
以下是需要修改的文件,这是2018.9.26号git clone下来的源码
文件变化
过程相当曲折,其实以上修改在2018年4月左右就完成了,奈何后面工作重心转移,丢掉了5个月的时间,之前也一直没时间写文档,以前踩过的坑又重新踩了一遍,好在都有准备,仔细查查资料还是移植完了
需要修改或添加的文件
修改:
arch/arm/Kconfig
(用来添加板子的配置文件)
include/configs/mx6_common.h
(注释掉#define CONFIG_LDO_BYPASS_CHECK)
include/configs/mx6sabre_common.h
(注释掉PMIC的宏定义)
添加:
board/freescale/mx6sabresd_krt/
(自定义的板级文件)
configs/imx6qsabrsd-krt_defconfig
include/configs/mx6sabresd_krt.h
mx6qsabresd_config目录
set_env.sh
- 原文1
原文2打开坑爹的《i.MX BSP Porting Guide》
安装yocto环境(前面写过安装方法),参考《 Freescale Yocto Project User's Guide》
注意原文1图片里的第二步,没什么卵用,根本没有这个东西。我查了一下相关配置文件,应该默认就是“u-boot-imx”,所以跳过这步!
按照文档执行以下代码,注意修改成自己的名字。
cd <UBOOT_DIR>(我的路径是 ~/fsl-release-bsp/build/tmp/work/imx6qsabresd-poky-linux-gnueabi/u-boot-imx/2016.03-r0/git/)
$cp -R board/freescale/mx6sabresd board/freescale/mx6sabresd_krt
board/freescale/mx6sabresd_krt 这个文件夹的文件一会需要修改
$cp include/configs/mx6sabresd.h include/configs/mx6sabresd_krt.h
原文3mx6sabresd_krt.h不用修改,复制过来直接用就行。
$cp configs/mx6qsabresd_defconfig configs/mx6qsabresd_krt_defconfig
- 直接复制类似的defconfig文件,这里解释一下这个文件的用途,经常make的人应该知道make的时候都是需要先执行./configure –prefix=...这个命令,他就是用来生成Makefile并且指定一些路径什么的参数用的。
- 这里的defconfig的意思是default config,他用来生成一个隐藏的文件叫做“.config”,你可以用vim ./.config命令查看它的内容,也可以间接的验证一下你的defconfig文件是否生效了
mx6qsabresd_krt_defconfig文件内容如下:
CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/mx6sabresd_krt/mx6q_4x_mt41j128.cfg,MX6Q"
CONFIG_ARM=y
CONFIG_TARGET_MX6QSABRESD_KRT=y
CONFIG_SYS_MALLOC_F=y
CONFIG_SYS_MALLOC_F_LEN=0x400
CONFIG_DM=y
CONFIG_DM_THERMAL=y
原文4
$ cp board/freescale/mx6sabresd/mx6sabresd.c board/freescale/mx6sabresd_krt/mx6sabresd_krt.c
原文5
$ vim board/freescale/mx6sabresd_krt/Makefile
源码如下(自己查下Makefile的写法就懂为什么这么改了):
#
# Copyright (C) 2007, Guennadi Liakhovetski <lg@denx.de>
#
# (C) Copyright 2011-2016 Freescale Semiconductor, Inc.
#
# SPDX-License-Identifier: GPL-2.0+
#
obj-y := mx6sabresd_krt.o
extra-$(CONFIG_USE_PLUGIN) := plugin.bin
$(obj)/plugin.bin: $(obj)/plugin.o
$(OBJCOPY) -O binary --gap-fill 0xff $< $@
原文6
原文7
这里比较坑,文档给的目录不对,但还是找到了这个文件,怎么找到的和后面设置的环境变量有关。
最新源码路径是:arch/arm/Kconfig
image.png
在最后一个config后面追加一个我们自己在defconfig定义的CONFIG_TARGET_MX6QSABRESD_KRT=y
config TARGET_MX6QSABRESD_KRT
bool "Support mx6qsabresd_krt"
select CPU_V7
image.png
在最后追加上路径(注意我插入代码的位置,尽量在同一类的最后追加自己的东西,不会乱)
source "board/freescale/mx6sabresd_krt/Kconfig"
原文8
注意ARCH=arm这个变量,这才是让我找到最新源码路径arch/arm/Kconfig的原因,不理解的话查一下Makefile和Kconfig的知识。
这里的交叉编译工具链参考上一篇文章搭建yocto环境。
$ touch set_env.sh
$ vim set_env.sh
添加如下代码
#!/bin/bash
export ARCH=arm
export CROSS_COMPILE=/opt/fsl-imx-x11/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-
make distclean;
make imx6qsabrsd-krt_defconfig
make
$ chmod a+x set_env.sh
$ . ./set_env.sh
等待编译完成即可,如果编译有错误,先看看.config文件里的配置是否正确,不正确的话查一下configs/mx6qsabresd_krt_defconfig这个文件是否写正确了,主要是名字要匹配!
到这里就应该编译通过了
但是,你还需要改SD卡配置才可以正常加载SD卡
主要参考girlkoo大神的文章,因为文章写的很早,里面有部分问题,主要是路径什么的变了。
典型的如girlkoo文章中的Step5,根本没有这个boards.cfg文件了,我们在写相关的Kconfig的时候就已经添加进去了。
而Step6的内容我对比了一下 没什么变化
主要的是Step7里面的内容一定要跟着改掉,要不没法启动。
最后执行下面命令,吧uboot烧写到sd卡,其中bs*seek=1K,原因自己查文档吧~
cat /proc/partitions
查看你的sd卡名字是哪个
假设你的sd卡是sdb,此处注意,千万不要搞错,后果自负
虚拟机有可能不认读卡器,最好把ubuntu安装到实体机上,或者自己百度解决不识别的问题
sudo dd if=u-boot.imx of=/dev/sdb bs=512 seek=2 conv=fsync
网友评论