linux驱动之系统移植-----官方uboot添加自定义板子

文章详细介绍了如何将一个新的开发板MX6ULL_JZY_EMMC集成到U-Boot项目中,包括创建默认配置文件、修改头文件、添加板级支持、编译以及测试现有功能。目前,串口、存储和部分硬件已验证可用,但LCD和网络驱动需进一步完善。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

uboot版本: u-boot.2016.03(无设备树版本)
开发板:100ask_imx6ull_pro

测试编译官方uboot

找到 NXP官方 I.MX6ULL EVK开发板对应的默认配置文件以后就可以编译一下

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- mx6ull_14x14_evk_emmc_defconfig

make V=1 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j16 

烧写测试

U-Boot 2016.03 (Dec 08 2022 - 21:13:20 +0800)

CPU:   Freescale i.MX6ULL rev1.1 69 MHz (running at 396 MHz)
CPU:   Industrial temperature grade (-40C to 105C) at 42C
Reset cause: WDOG
Board: MX6ULL 14x14 EVK
I2C:   ready
DRAM:  512 MiB
MMC:   FSL_SDHC: 0, FSL_SDHC: 1
*** Warning - bad CRC, using default environment

Display: TFT43AB (480x272)
Video: 480x272x24
In:    serial
Out:   serial
Err:   serial
switch to partitions #0, OK
mmc1(part 0) is current device
Net:   FEC1
Error: FEC1 address not set.

U-Boot中添加自己的开发板

1, 添加开发板默认配置文件
先在 configs目录下创建默认配置文件,复制 mx6ull_14x14_evk_emmc_defconfig,然后重命名为mx6ull_jzy_emmc_defconfig

cd configs 
cp mx6ull_14x14_evk_emmc_defconfig  mx6ull_jzy_emmc_defconfig

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

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

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

cp include/configs/mx6ullevk.h mx6ull_jzy_emmc.h 

拷贝完成以后将:
#ifndef __MX6ULLEVK_CONFIG_H
#define __MX6ULLEVK_CONFIG_H
改为:
#ifndef __MX6ULL_JZY_EMMC_CONFIG_H
#define __MX6ULL_JZY_EMMC_CONFIG_H

3,添加开发板对应的板级文件夹
uboot中每个板子都有一个对应的文件夹来存放板级文件

cd board/freescale/ 
cp mx6ullevk/ -r mx6ull_jzy_emmc 
cd mx6ull_jzy_emmc  
mv mx6ullevk.c mx6ull_jzy_emmc.c

修改 mx6ull_jzy_emmc目录下的 Makefile文件

obj-y  := mx6ull_jzy_emmc.o 

修改 mx6ull_myboard_emmc目录下的 imximage.cfg文件
将 imximage.cfg中的下面一句:

PLUGIN board/freescale/mx6ullevk/plugin.bin 0x00907000

改为:

PLUGIN board/freescale/mx6ull_jzy_emmc/plugin.bin 0x00907000 

mx6ull_myboard_emmc目录下的 Kconfig文件

 if TARGET_MX6ULL_JZY_EMMC 
   
 config SYS_BOARD 
   default "mx6ull_jzy_emmc" 
   
 config SYS_VENDOR 
   default "freescale" 
 
 config SYS_SOC 
  default "mx6"
  
 config SYS_CONFIG_NAME 
  default "mx6ull_jzy_emmc" 
  
 endif

修改 mx6ull_myboard_emmc目录下的 MAINTAINERS文件

MX6ULL_JZY_EMMC BOARD 
M:    Peng Fan <peng.fan@nxp.com> 
S:    Maintained 
F:    board/freescale/mx6ull_jzy_emmc/ 
F:    include/configs/mx6ull_jzy_emmc.h
F:	  configs/mx6ull_jzy_emmc_defconfig

4,修改 U-Boot图形界面配置文件
修改文件
arch/arm/cpu/armv7/mx6/Kconfig(如果用的 I.MX6UL的话,应该修改 arch/arm/Kconfig这个文
件),在 207行加入如下内容:

 config TARGET_MX6ULL_JZY_EMMC
    bool "Support mx6ull_myboard_emmc" 
    select MX6ULL 
    select DM 
    select DM_THERMAL

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

source "board/freescale/mx6ull_jzy_emmc/Kconfig"

使用新添加的板子配置编译 uboot

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- mx6ull_jzy_emmc_defconfig

make V=1 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j16 

至此, 添加自定义板卡的默认配置已完成, 不过仅是对官方的配置进行复制.
总体来说, uboot的功能是对kernel的引导, 所以理论上没有必要在uboot做太多的外设驱动.
对于一些必要的驱动有:
1, 串口. 2,存储设备,如:NAND、EMMC或 SD卡. 3,网络. 4, LCD驱动(可选)
经过烧写官方版本uboot测试, 发现在现板机上串口可用, 存储设备(SD卡,emmc)可用, LCD不可用, 网络不可用.
所以, 下一篇便讲述修改LCD, 网络驱动.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值