iMX6ULL-UBoot移植

2023-10-27

U-Boot移植

1 获取源码

1.1 从u-boot官网获取

u-boot官网

使用官方的u-boot的前提是芯片厂商已经将芯片适配相关的代码开源到u-boot官方源码中(要不从头构建太麻烦了,对于现在学习都费劲的我实在是完不成)。

1.2 从芯片厂商获取

从芯片厂商处获得的u-boot一定是对相关芯片适配过的。

1.3 从开发板厂商获取

对于学习使用的开发板,开发板厂商一定会对相关板子进行适配(直接拿来就能用的那种)。

2 移植

2.1 生成自己的配置文件

2.1.1 拷贝参考板的配置文件

I.MX6U-MINI板子使用的参考配置文件为mx6ull_14x14_evk_emmc_defconfig ,其在configs 文件夹下,将mx6ull_14x14_evk_emmc_defconfig 拷贝一份,并将其命名为自己的配置文件。

cd configs
cp mx6ull_14x14_evk_emmc_defconfig mx6ull_hello_emmc_defconfig

2.1.2 生成修改配置文件

CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/mx6ull_hello_emmc/imximage.cfg,MX6ULL_EVK_EMMC_REWORK"  //mx6ull_hello_emmc是等会自己需要创建的
CONFIG_ARM=y
CONFIG_ARCH_MX6=y
CONFIG_TARGET_MX6ULL_HELLO_EMMC=y  //CONFIG_TARGET_MX6ULL_HELLO_EMMC也是需要修改的
CONFIG_CMD_GPIO=y

2.1.3 添加对应的头文件

在目录 include/configs文件夹下添加对应的头文件

cp include/configs/mx6ullevk.h include/configs/mx6ull_hello_emmc.h

mx6ull_hello.h文件中的宏修改为自己的,将

#ifndef __MX6ULLEVK_CONFIG_H
#define __MX6ULLEVK_CONFIG_H

修改为:

#ifndef __MX6ULL_HELLO_EMMC_CONFIG_H
#define __MX6ULL_HELLO_EMMC_CONFIG_H

如果我们自己要想使能或者禁止 uboot 的某些功能,那就在 mx6ull_hello_emmc.h 里面做修改即可。

2.1.4 添加板级文件夹

板级文件夹是存放板级文件,比如开发板上外设驱动文件等,也就是2.1.2中提到的mx6ull_hello_emmc的文件夹,也是拷贝NXP的板级文件夹,并对其内容进行修改。

cd /board/freescale 
cp mx6ullevk mx6ull_hello_emmc -r

2.1.5 修改板级文件夹中的内容

  1. /board/freescale/mx6ull_hello_emmc 中的mx6ullevk.c重命名为mx6ull_hello_emmc.c

    mv mx6ullevk.c mx6ull_hello_emmc.c
    
  2. 修改mx6ull_hello_emmc文件夹下的Makefile文件,将Makefile修改为

    # (C) Copyright 2015 Freescale Semiconductor, Inc.
    #
    # SPDX-License-Identifier:	GPL-2.0+
    #
    
    obj-y  := mx6ull_hello_emmc.o
    
    extra-$(CONFIG_USE_PLUGIN) :=  plugin.bin
    $(obj)/plugin.bin: $(obj)/plugin.o
    	$(OBJCOPY) -O binary --gap-fill 0xff $< $@
    

    只用改为**obj-y := mx6ull_hello_emmc.o**,才会编译mx6ull_hello_emmc.c文件。

  3. 修改mx6ull_hello_emmc文件夹下的imximage.cfg文件

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

    修改为

    PLUGIN	board/freescale/mx6ull_hello_emmc/plugin.bin 0x00907000
    
  4. 修改mx6ull_hello_emmc文件夹下的Kconfig文件

    if TARGET_MX6ULL_HELLO_EMMC 
    
    config SYS_BOARD
    	default "mx6ull_hello_emmc"
    
    config SYS_VENDOR
    	default "freescale"
    
    config SYS_CONFIG_NAME
    	default "mx6ull_hello_emmc"
    
    endif
    
    
  5. 修改mx6ull_hello_emmc文件夹下的 MAINTAINERS文件

    MX6ULLEVK BOARD
    M:	Peng Fan <peng.fan@nxp.com>
    S:	Maintained
    F:	board/freescale/mx6ull_dang_emmc/
    F:	include/configs/mx6ull_dang_emmc.h
    F:	configs/mx6ull_dang_emmc_defconfig
    

2.2 编译生成的配置文件

make mx6ull_hello_emmc_defconfig #使用mx6ull_hello_emmc_defconfig配置文件生成u-boot
make -j4 

已经将ARCHCROSS_COMPILE 的参数添加到顶层makefile中了。

2.3 将编译生成的镜像下载到TF卡中

./imxdownload u-boot.bin /dev/sdb #先查看fdisk查看是哪个设备

使用正点原子的下载文件将u-boot.bin 下载到 tf 卡中。

2.4 启动卡发板,查看报错信息

启动开发板后发现屏幕有问题,网络报错。

2.4.1修改LCD驱动

  1. 首先查看LCD屏幕使用的各个GPIO是否相同
  2. LCD背光引脚设置
  3. LCD屏幕参数

查看之后发现引脚相同,所以只需要调整LCD参数。

屏幕使用时是4.3寸的屏幕,找到其对应参数,将其填入之后,具体参数如下:

struct display_info_t const displays[] = {{
	.bus = MX6UL_LCDIF1_BASE_ADDR,
	.addr = 0,
	.pixfmt = 24,
	.detect = NULL,
	.enable	= do_enable_parallel_lcd,
	.mode	= {
		.name			= "TFT4384",
		.xres           = 800,
		.yres           = 480,
		.pixclock       = 32258,
		.left_margin    = 88,
		.right_margin   = 40,
		.upper_margin   = 32,
		.lower_margin   = 13,
		.hsync_len      = 48,
		.vsync_len      = 3,
		.sync           = 0,
		.vmode          = FB_VMODE_NONINTERLACED
} } };

之后进行编译下载,发现LCD屏幕正常点亮。

2.4.2 网络驱动修改

根据原理图查看开发板和参考板的硬件区别是什么,然后对其就行修改。

(懒了,以后补

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

iMX6ULL-UBoot移植 的相关文章

  • 我们如何在使用循环时调用 ansible playbook 中的变量

    我有两个文件 其中这些文件包含server names and server IP s 我想更改 替换一些特定的server names and IP addressees根据要求在两个文件中 这与这篇文章 因为它被要求开设一个新职位 ht
  • Qt 嵌入式触摸屏 QMouseEvents 在收到 MouseButtonRelease 之前未收到

    我在带有触摸屏的小型 ARM 嵌入式 Linux 设备上使用 Qt 4 8 3 我的触摸屏配置了 tslib 并对其进行了校准 因此 etc 中有一个 pointcal 文件 我的触摸事件的位置工作得很好 但无论如何我都会在鼠标按下或鼠标释
  • 如何在 Vim 中突出显示 Bash 脚本?

    我的 Vim 编辑器自动突出显示 PHP 文件 vim file php HTML 文件 vim file html 等等 但是当我输入 vim file在里面写一个Bash脚本 它不会突出显示它 我如何告诉 Vim 将其突出显示为 Bas
  • 选择fasta文件中氨基酸超过300个且“C”出现至少4次的序列

    我有一个包含蛋白质序列的 fasta 文件 我想选择超过 300 个氨基酸且半胱氨酸 C 氨基酸出现超过 4 次的序列 我使用此命令来选择具有超过 300 个 aa 的序列 cat 72hDOWN fasta fasta bioawk c
  • 任何退出 bash 脚本但不退出终端的方法

    当我使用exitshell 脚本中的命令 该脚本将终止终端 提示符 有什么方法可以终止脚本然后停留在终端中吗 我的剧本run sh预计通过直接获取或从另一个脚本获取来执行 编辑 更具体地说 有两个脚本run2 sh as run sh ec
  • 对于任何真实数据集,数据压缩比的最小可能值是多少

    我在写信ZLIB类似于嵌入式硬件压缩器的 API 它使用 deflate 算法来压缩给定的输入流 在进一步讨论之前 我想解释一下数据压缩率 数据压缩率定义为未压缩大小与压缩大小之间的比率 压缩比通常大于一 这意味着压缩数据通常比未压缩数据小
  • 如何获取与 shell 中的文件名模式匹配的所有文件的总文件大小?

    我正在尝试仅使用 shell 来计算与文件名模式匹配的所有文件 在目录树中 的总大小 以字节为单位 这是我到目前为止所拥有的 find name undo exec stat c s awk 总计 1 END 打印总计 有没有更简单的方法来
  • 使用 shell 脚本发送 HTML 邮件

    如何使用 shell 脚本发送 HTML 电子邮件 首先 您需要撰写消息 最低限度由这两个标头组成 MIME Version 1 0 Content Type text html 以及适当的消息正文 p Hello world p 获得后
  • MySQL 与 PHP 的连接无法正常工作

    这是我的情况 我正在尝试使用 Apache 服务器上的 PHP 文件连接到 MySQL 数据库 现在 当我从终端运行 PHP 时 我的 PHP 可以连接到 MySQL 数据库 使用 php f file php 但是当我从网页执行它时 它只
  • Ruby:在 Ubuntu 上安装 rmagick

    我正在尝试在 Ubuntu 10 04 上安装 RMagick 看起来here https stackoverflow com questions 1482823 is there an easy way to install rmagic
  • Crontab 每 5 分钟一次 [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我如何告诉 crontab 每 5 分钟运行一次 但从每小时的第二分钟开始 换句话说 我想在以下时间执行我的脚本minute 5 2 例如 我的脚本应
  • 嵌入清单文件以要求具有 mingw32 的管理员执行级别

    我正在 ubuntu 下使用 i586 mingw32msvc 交叉编译应用程序 我很难理解如何嵌入清单文件以要求 mingw32 具有管理员执行级别 对于我的例子 我使用了这个hello c int main return 0 这个资源文
  • 为 Linux 编译 Objective-C 应用程序(API 覆盖范围)

    我可能在这里问一些奇怪的问题 但我不确定从哪里开始 问题是我正在考虑使用 Obj C 和 Foundation 类在 Mac 上编写一个命令行工具 但存在一个非常大的风险 那就是我希望能够为不同的 Linux 发行版编译它 以便将来作为服务
  • 如何才能将 TCP 连接返回到同一端口?

    机器是 RHEL 5 3 内核 2 6 18 有时我在 netstat 中注意到我的应用程序有连接 建立了 TCP 连接本地地址 and 国外地址是一样的 其他人也报告了同样的问题 症状与链接中描述的相同 客户端连接到本地运行的服务器的端口
  • ssh 连接超时

    我无法在 git 中 ssh 到 github bitbucket 或 gitlab 我通常会收到以下错误消息 如何避免它 输出 ssh T email protected cdn cgi l email protection i ssh
  • 在内核代码中查找函数的最佳方法[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我开始浏览内核代码 遇到的一件事是如何跟踪函数调用 结构定义等 有没有一种好的方法可以快速跳转到函数定义并退出 我尝试过 Source N
  • 相当于Linux中的导入库

    在 Windows C 中 当您想要链接 DLL 时 您必须提供导入库 但是在 GNU 构建系统中 当您想要链接 so 文件 相当于 dll 时 您就不需要链接 为什么是这样 是否有等效的 Windows 导入库 注意 我不会谈论在 Win
  • ALSA:snd_pcm_writei 调用时缓冲区不足

    当运行我最近从灰烬中带回来的旧程序时 我遇到了缓冲区不足的情况 该程序将原始声音文件完全加载到内存中 2100 字节长 525 帧 并准备 ALSA 进行输出 44 1khz 2 通道 有符号 16 位 if err snd pcm set
  • 适用于 Linux 的轻量级 IDE [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 我们真的应该使用 Chef 来管理 sudoers 文件吗?

    这是我的问题 我担心如果 Chef 破坏了 sudoers 文件中的某些内容 可能是 Chef 用户错误地使用了说明书 那么服务器将完全无法访问 我讨厌我们完全失去客户的生产服务器 因为我们弄乱了 sudoers 文件并且无法再通过 ssh

随机推荐

  • mapboxgl 添加带注记marker

  • 现有的评分和排名算法

    前言 在之前的文章 投票 公平 中已经得到了一个令人沮丧的结论 只有道德上的相对民主 没有制度上的绝对公平 投票是对不同选项或个体的排序 在投票中我们关注更多的是相对位置这样定性的结论 例如 积分前三名的同学才能进入下一环节 但有的时候我们
  • [python网站开发] 一.Django入门知识及创建第一个网站

    随着Python应用越来越广泛 学习Python相关知识越来越多的人选择 最新研究 Python已成为美国top高校最受欢迎的语言 同时国内用Python开发的网站越来越多 比较知名的网站如知乎 豆瓣 果壳等 再加上之前自己数据分析和网络爬
  • 本地部署 langchain-ChatGLM

    简介 什么是 langchain ChatGLM 一种利用 ChatGLM 6B langchain 实现的基于本地知识的 ChatGLM 应用 增加 clue ai ChatYuan 项目的模型 ClueAI ChatYuan large
  • 成为机器人工程师需要学习那些技术

    机器人工程师是未来比较吃香的工作岗位 要成为机器人工程师 ChatGPT的回答是 建议你需要学习以下技术 1 机械工程 了解机械结构 运动学和动力学 以及机械设计和制造方面的知识 2 电子工程 学习电路设计 电子元件选择和电子系统集成 以及
  • 初识Python装饰器

    Python装饰器 听过Python的人 肯定也听过装饰器的名头 但是好多人不明白装饰器是什么 是如何工作的 原理又是什么 先看看装饰器的定义 如果想要修改某个函数的功能 但是又不想修改这个函数的定义 这种在函数运行期间动态增加功能的方式成
  • ABP-使用Dapper框架

    ABP使用Dapper框架已经有很成熟的第三方包 简单的几句代码就能完成 一 首先准备好一个数据库建一个表 二 建一个实体表 Table BasBloodLevel public class BasBloodLevel Entity
  • 《设计模式》-代码质量评价标准和设计原则

    系列文章目录 设计模式 代码质量评价标准和设计原则 设计模式 创建型 单例模式 工厂模式 建造者模式 原型模式 设计模式 结构型 代理模式 装饰者模式 适配器模式 桥接模式 门面模式 组合模式 亨元模式 文章目录 系列文章目录 前言 一 代
  • 第10章 近似推断

    10 近似推断 在概率模型的应用中 一个中心任务是在给定观测 可见 数据变量X的条件下 计算潜在变量Z的后验概率分布 p Z X p Z X p Z X 以及计算
  • element表格翻页后回到顶部

  • Linux mode命令,linux命令

    一 inode节点号 在linux中 每一个文件都有唯一的inode号 inode号也是系统识别的唯一编码 而文件名仅仅是为了使用者区分辨认 inode index node 表中包含文件系统所有文件列表 一个节点 索引节点 是在一个表项
  • 数字IC设计——跨时钟域篇2(亚稳态)

    数字IC设计 跨时钟域篇2 亚稳态 一 建立时间与保持时间 前提条件 对任何一种触发器 在时钟触发沿前 后的一个小时间窗口内 输入信号必须稳定 输入信号应提前时钟上升沿 假设上升沿有效 T时间到达芯片 这个T就是建立时间Setup time
  • 海思3518E V200中RTSP实验自己构建RTP发送的函数代码及VLC播放器的一个播放注意事项

    在VLC播放器中 工具 首选项 设置里面需要注意必须使用下图中红色框圈出来的设置 如果选择的是后面的 RTP over RTSP TCP 的话会播放不出画面 具体原因未去深入探究 另可以参考他人的代码完成其他功能 网址如下 https bl
  • msi afterburner怎么设置最好?推荐设置

    msi afterburner是一款为显卡超频和监控提供的软件 广泛应用于游戏玩家和电脑爱好者之间 通过适当的设置 可以显著提升显卡的性能 下面就给大家介绍一下msi afterburner推荐设置 纯净之家 win7纯净版系统 win7
  • 使用Prometheus实现大规模的应用程序监视

    Prometheus是一个越来越受欢迎的开源工具 这有充分的理由 它可以为应用程序和服务器提供监视和警报 Prometheus的强大优势在于监视服务器端指标 并将其存储为时间序列数据 尽管Prometheus不适合应用程序性能管理 主动控制
  • 【转】一个FAE(AE)的体会和大家交流

    原文网址 http www 52rd com bbs dispbbs asp boardID 63 ID 228682 本人在国内某芯片设计公司工作近5年时间岗位是AE和FAE 两个工作量各一半吧 今日闲来无事写一些自己的体会与大家分享 不
  • 【一、搭建通用Arm平台的QT交叉编译环境】

    搭建通用Arm平台的QT交叉编译环境 前言 准备 一 下载arm平台交叉编译工具链 1 下载工具链 2 解压到交叉编译平台 Ubuntu 3 配置环境变量 二 下载QT源码 版本与交叉编译工具链版本保持一致 三 下载并编译tslib库 1
  • 微信小程序实现下载功能(以下载视频为例)

    首先 采用 wx downloadFile 方法 访问视频对应的Url 回调函数返回一个该视频文件的临时路径 wx downloadFile url app serverUrl me data videoInfo videoPath suc
  • getDerivedStateFromProps和componentDidUpdate的使用

    react 17版本 使用getDerivedStateFromProps接收外部数据同步到本地state componentDidUpdate里面发送异步请求 Foo js import useState from react impor
  • iMX6ULL-UBoot移植

    U Boot移植 文章目录 U Boot移植 1 获取源码 1 1 从u boot官网获取 1 2 从芯片厂商获取 1 3 从开发板厂商获取 2 移植 2 1 生成自己的配置文件 2 1 1 拷贝参考板的配置文件 2 1 2 生成修改配置文