Linux驱动开发:uboot移植流程

编译完成以后会生成 u-boot.binu-boot.imx 等文件,但是这些文件是 NXP 官方 I.MX6ULL EVK 开发板。

imxdownload 软件拷贝到 uboot 源码根目录下,然后使用 imxdownload 软件将 u-boot.bin 烧写到 SD 卡中,烧写命令如下:

chmod 777 imxdownload //给予 imxdownload 可执行权限
./imxdownload u-boot.bin /dev/sdb //烧写到 SD 卡中,不能烧写到/dev/sda 或 sda1 里面

友情提示:SD 卡在 Linux 系统下的设备名称不一定是sdd亦或是sdb,通过:sudo fdisk -l 命令去检查一下 SD 卡到底是什么之后再进行烧入!

烧写完成以后将 SD 卡插入 I.MX6U-ALPHA 开发板的 TF 卡槽中,最后设置开发板从 SD 卡启动。打开 MobaXterm,设置好开发板所使用的串口并打开,复位开发板,MobaXterm 接收到如下图所示信息:

uboot 成功加载之后通常需要检查:(1)、SD 卡和 EMMC 驱动是否正常(常规情况下都是正常的),(2)、LCD 屏幕驱动是否正常(问题不大);(3)、网络驱动是否正常(核心部分)

考虑到后续需要通过网络加载 Linux 内核镜像等,所以网络驱动是必不可缺的部分!

uboot 启动的时候提示 “Board Net Initialization Failed”“No ethernet found.” 这两行,说明网络驱动存在大问题。

作者概述:实际工作中, 一般情况下 SD 卡和 EMMC 等内存驱动都不会存在太大问题,核心部分的问题还是出现在网络驱动部分(比如:S3C2440)!!!

2.2 修改NXP官方uboot

先在 configs 目录下创建默认配置文件,复制 mx6ull_14x14_evk_emmc_defconfig,然后重命名为 mx6ull_alientek_emmc_defconfig,命令如下:

cd configs
cp mx6ull_14x14_evk_emmc_defconfig mx6ull_alientek_emmc_defconfig

然后将文件 mx6ull_alientek_emmc_defconfig 中的内容改成下面的:

CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/mx6ull_alientek_emmc/imximage.cfg,MX6ULL_EVK_EMMC_REWORK"
CONFIG_ARM=y
CONFIG_ARCH_MX6=y
CONFIG_TARGET_MX6ULL_ALIENTEK_EMMC=y
CONFIG_CMD_GPIO=y

可以看出,mx6ull_alientek_emmc_defconfig 基本和 mx6ull_14x14_evk_emmc_defconfig 中的内容一样,只是第 1 行和第 4 行做了修改。修改的 2 行就是编译 uboot 配置时可以根据自己复制的副本进行配置编译了!

2.2.1 添加开发板对应的头文件

在目录 include/configs 下添加 I.MX6ULL-ALPHA 开 发 板 对 应 的 头 文 件 , 复 制 include/configs/mx6ullevk.h,并重命名为 mx6ull_alientek_emmc.h,命令如下:

cp include/configs/mx6ullevk.h mx6ull_alientek_emmc.h

修改防止重定义的 #ifndef#define 的预处理代码:

mx6ull_alientek_emmc.h 里面有很多宏定义,这些宏定义基本用于配置 uboot,也有一些 I.MX6ULL 的配置项目。如果我们自己要想使能或者禁止 uboot 的某些功能,那就在 mx6ull_alientek_emmc.h 里面做修改即可。

2.2.2 添加开发板对应的板级文件夹

uboot 中每个板子都有一个对应的文件夹来存放板级文件,比如开发板上外设驱动文件等等。NXP 的 I.MX 系列芯片的所有板级文件夹都存放在 board/freescale 目录下,在这个目录下有个名为 mx6ullevk 的文件夹,这个文件夹就是 NXP 官方 I.MX6ULL EVK 开发板的板级文件夹。复制 mx6ullevk,将其重命名为 mx6ull_alientek_emmc,命令如下:

cd board/freescale/
cp mx6ullevk/ -r mx6ull_alientek_emmc

进入 mx6ull_alientek_emmc 目录中 , 将 其 中 的 mx6ullevk.c 文 件 重 命 名 为 mx6ull_alientek_emmc.c,命令如下:

cd mx6ull_alientek_emmc
mv mx6ullevk.c mx6ull_alientek_emmc.c

我们还需要对 mx6ull_alientek_emmc 目录下的文件做一些修改:

1、修改 mx6ull_alientek_emmc 目录下的 Makefile 文件

mx6ull_alientek_emmc 下的 Makefile 文件内容改为如下所示:

第 6 行的 obj-y,改为 mx6ull_alientek_emmc.o,这样才会编译 mx6ull_alientek_emmc.c 这个文件。

2、修改 mx6ull_alientek_emmc 目录下的 imximage.cfg 文件</

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值