当前位置: 首页 > news >正文

2二、u-boot移植 - 指南

u-boot移植

一、移植的核心思想介绍

二、u-boot中添加自己的开发板

1.清空源码目录

uboot-imx-rel_imx_4.1.15_2.1.0_ga$ make distclean

uboot-imx-rel_imx_4.1.15_2.1.0_ga$ make distclean

2.添加开发板默认配置文件

在u-boot源码下的configs目录下添加mx6ull_smartcar_defconfig配置文件

uboot-imx-rel_imx_4.1.15_2.1.0_ga/configs$ cp mx6ull_14x14_evk_defconfig

mx6ull_smartcar_defconfig

uboot-imx-rel_imx_4.1.15_2.1.0_ga/configs$ cp mx6ull_14x14_evk_defconfig
mx6ull_smartcar_defconfig

将mx6ull_smartcar_defconfig修改如下内容:

修改前

修改后

CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/smartcar/imximage.cfg"

CONFIG_ARM=y

CONFIG_ARCH_MX6=y

CONFIG_TARGET_MX6ULL_SMARTCAR=y

CONFIG_CMD_GPIO=y

CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/smartcar/imximage.cfg"
CONFIG_ARM=y
CONFIG_ARCH_MX6=y
CONFIG_TARGET_MX6ULL_SMARTCAR=y
CONFIG_CMD_GPIO=y

3. 添加开发板目录

在u-boot源码下的board/freescale目录下添加smartcar开发板

进入smartcar目录下,将mx6ullevk.c修改成smartcar.c。

修改smartcar目录下的Makefile,修改如下:

修改前

修改后

# (C) Copyright 2015 Freescale Semiconductor, Inc.

#

# SPDX-License-Identifier: GPL-2.0+

#

obj-y := smartcar.o

extra-$(CONFIG_USE_PLUGIN) := plugin.bin

$(obj)/plugin.bin: $(obj)/plugin.o

$(OBJCOPY) -O binary --gap-fill 0xff $< $@

修改smartcar目录下的imximage.cfg文件的第34行,修改如下:

4. 添加开发板头文件

在u-boot源码目录下的include/configs目录下添加smartcar.h

uboot-imx-rel_imx_4.1.15_2.1.0_ga/include/configs$ cp mx6ullevk.h smartcar.h

修改头部宏开关:

修改136行fdt_file内容如下:

5. 修改Kconfig文件

进入u-boot源码的arch/arm/cpu/armv7/mx6目录下,修改Kconfig文件内容如下:

添加自己的开发板的配置选项:

此处名字要和之前的对应

添加包含自己开发板的Kconfig文件:

进入u-boot源码的board/freescale/smartcar目录下,修改Kconfig文件内容如下:

if TARGET_MX6ULL_SMARTCAR

config SYS_BOARD

default "smartcar"

config SYS_VENDOR

default "freescale"

config SYS_CONFIG_NAME

default "smartcar"

endif

三、配置编译及测试

1.配置

uboot-imx-rel_imx_4.1.15_2.1.0_ga$ make mx6ull_smartcar_defconfig

uboot-imx-rel_imx_4.1.15_2.1.0_ga$ make mx6ull_smartcar_defconfig

2. 编译

uboot-imx-rel_imx_4.1.15_2.1.0_ga$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-

执行这个脚本也行

3. 测试

将源码目录下的u-boot.bintftpboot目录下,然后通过开发板上的u-boot通过tftp下载测试:

=> tftp 878000000 u-boot.bin

Using FEC0 device

TFTP from server 192.168.1.100; our IP address is 192.168.1.200

Filename 'u-boot.bin'.

Load address: 0x78000000

Loading: #############################

2.7 MiB/s

done

Bytes transferred = 416472 (65ad8 hex)

=> go 87800000

四、定制化修改

1.开发板名称修改

在 uboot 启动信息中会有“Board: MX6ULL 14x14 EVK”这一句,也就是说板子名字为 “MX6ULL 14x14

EVK”,要将其改为我们所使用的板子名字"Board:MX6ULL SmartCar"。

在u-boot源码中搜索"Board: MX6ULL"确定需要修改的文件:

2. LCD驱动修改

我们的u-boot在启动的时候默认会显示NXPLOGO,但是颜色显示不对,我们需要修改一下LCD驱动。

重新编译

重启

3. 网卡修改

发现网卡错误

搜索网卡输出位置

找到这里

imx6ull芯片支持两个网卡,EVK开发板的u-boot默认使用的是网卡2,我们需要把它修改成网卡1

识别到了网卡

4. emmc修改

u-boot中默认EMMC的功能没有打开,需要添加宏定义打开EMMC功能。

五、更新板子里面的u-boot

A、切换到emmc 的第0分区

=> mmc dev 1 0

switch to partitions #0, OK

mmc1(part 0) is current device

=>

B、从tftp下载 u-boot.imx 到内存 80800000

=> tftp 80800000 u-boot.imx

Using FEC0 device

TFTP from server 192.168.3.25; our IP address is 192.168.3.22

Filename 'u-boot.imx'.

Load address: 0x80800000

Loading: #########################

1.7 MiB/s

done

Bytes transferred = 363520 (58c00 hex)

=>

C、将内存的数据写到emmc的第0分区第2个块

为什么是 2C6 ?上一步骤我们下载的u-boot.imx363520 个字节,353520/512=710块,十六进制为2C6

(如果有小数需要+1

=> mmc write 80800000 2 2C6

MMC write: dev # 1, block # 2, count 710... 710blocks written: OK

=>

4、分区设置

mmc partconf dev boot_ack boot_partition partition_access

- Change the bits of the PARTITION_CONFIG field of the specified device

=> mmc partconf 1 1 0 0

=>

5、重启

=> reset

resetting ...

注意:

不要写 SD 卡或者 EMMC 的前两个块(扇区),里面保存着分区表!

http://www.jsqmd.com/news/358905/

相关文章:

  • 从概念到代码:4A架构(业务架构、数据架构、应用架构、手艺架构)全景落地指南
  • File.prototype.stream() 和 ReadableStream.getReader()的浏览器兼容性如何?
  • 【YOLOv10多模态创新改进】联合Mamba创新首发| SCI 一 2025| 引入CMFM 跨模态特征融合Mamba模块,实现 RGB与红外等多模态特征的高效融合,含多种创新改进,顶会顶刊发文热点
  • 2月8号
  • 聚焦墙面基底需求,严选山西靠谱腻子粉 - 速递信息
  • 移动端h5路由过渡动画实现教程
  • Error creating bean with name ‘ragController‘: Injection of resource dependencies failed
  • Doris并发控制机制:高并发查询的应对策略
  • 6343456345
  • 45545634
  • USACO历年黄金组真题解析 | 2003年3月
  • 2026 外卖省钱首选美团外卖 50 + 品牌大额券加持完胜其他平台 - Top品牌推荐
  • USACO历年黄金组真题解析 | 2003年11月
  • 2026年麒麟大口茶、益禾堂等12大品牌在哪点更便宜?美团更便宜!6.9元起+半价周末+春节专属福利,下单路径一文看懂 - Top品牌推荐
  • 2026年麒麟大口茶美团多重福利狂欢!6.9元起薅羊毛,认准美团点单更便宜 - Top品牌推荐
  • 效果-Stardust粒子
  • 学习进度 23
  • HBase集群部署指南:高可用大数据存储方案
  • 明星同款外卖点单攻略出炉!郭麒麟/陈赫/鹿晗/张元英同款,美团点单最划算+营销活动路径详解 - Top品牌推荐
  • 麦当劳怎么点才更便宜?美团外卖“半价周末”等系列活动帮你省钱攻略 - Top品牌推荐
  • WordPress中if语句判断字段是否存在并输出内容
  • 明星同款外卖点单攻略:美团外卖最划算,多重福利+清晰路径解锁同款美味 - Top品牌推荐
  • [英语基础]形容词/副词
  • embedding模型对比分析——paraphrase-multilingual-MiniLM-L12-v2与bge-embedding
  • 注册中心宕机后,RPC调用还能成功吗?主流框架实测级分析
  • 明星同款外卖点单攻略:美团外卖解锁最划算路径,多重福利叠加更省钱 - Top品牌推荐
  • GitHub Pages 技术文档站点搭建实践指南
  • WPF CommunityToolkit.mvvm implement dependency injection via ServiceBuilder and ServiceCollection
  • 首款AI截图软件哪个好用又免费?全能截图翻译录屏GIF神器一键长截图OCR贴图取色无广告小巧免登录
  • 【微服务 Day1】SpringCloud实战开发(Mybatis-plus + Docker) - 详解