运行厂商u-boot的前提:

运行u-boot,需要DDR或者DRAM,串口,SD卡驱动、EMMC、NAND,这些要和厂商的开发板一致,就能直接在自己板子上运行u-boot

开机流程:
当把u-boot.bin下载到SD卡上时,由于整个u-boot的起始地址为87800000,所以开始从SD卡启动IMX6ULL时,arm内核从sd卡中取指令,在DDR的87800000上运行u-boot,接着就是整个u-boot的启动流程,再通过bootcmd来自动从emmc中拷贝zImage和dtb根文件到指定地址的DDR中运行linux,bootz启动linux(其中分为从emmc启动linux,还是从网络tftp上启动linux),其中通过bootargs=console=ttymxc0,115200 root=/dev/mmcblk1p2, 来将参数告诉linux,让linux知道从imx6ull从ttymxc0串口与linux进行交互,并且设置115200波特率,且根文件系统要保存在/dev/mmcblk1p2(也就是emmc的第二个分区)。由于下载的zImage是压缩包,linux想要运行就必须先进行自解压缩,这就需要linux的第一行代码为kernel_entry(),它就是将linux进行解压的函数,在uboot的启动最后阶段会按照kernel_entry()的要求给其传入三个参数,在启动前做如下操作:

①、关闭 MMU。
②、关闭 D-cache。
③、 I-Cache 无所谓。
④、 r0=0。
⑤、 r1=machine nr(也就是机器 ID)。
⑥、 r2=atags 或者设备树(dtb)首地址。

一旦进入kernel_entry()函数,u-boot的使命结束,linux开始工作。

linux启动所做的工作:

1、确保CPU处于SVC模式且关闭所有中断,检查是否支持该CPU,验证设备树是否存在,使能MMU,调用 start_kernel 来启动 Linux 内核。(linux内核的第一阶段,接下来进入C语言)

2、未完待续。。。。

u-boot移植流程:(几个移植的重要文件)

mx6ull_14x14_evk_emmc_defconfig(添加开发板默认配置文件

uboot的configs 目录下有很多配置文件,可想而知,每一个配置文件就对应一块开发板。
我们找到 mx6ull_14x14_evk_emmc_defconfig, 这是nxp官方的配置文件,我们就是参考它做修改。

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

mx6ullevk.h(添加自己开发板的头文件)

在include/configs 下拷贝mx6ullevk.h 并修改。

在这个头文件中有许多宏定义,这些宏基本用于配置uboot,也有一些I.MX6ULL 的配置项目。
如果我们想要禁用uboot的某些功能,在这个头文件中修改即可。

mx6ullevk.h 文件中基本都是“CONFIG_”开头的宏定义,这也说明 mx6ull_alientek_emmc.h 文件的主要功能就是配置或者裁剪 uboot如果需要某个功能的话就在里面添加这个功能对应的 CONFIG_XXX 宏即可,如果不需要某个功能的话就删除掉对应的宏即可。(在具体u-boot的启动流程中,会有ifdefine CONFIG_XXX ,则运行下面的代码,如果你没有定义或者删除改宏定义,则下面的代码就不会运行,相当与对u-boot进行了裁剪)

mx6ullevk.h 中包含了 mx6_common.h,如果没有在mx6ullevk.h中发现某个功能或命令,但uboot中又确实存在,可以去mx6_common.h 中寻找。

mx6ull_alientek_emmc(添加开发板对应的板级文件夹)

uboot中每一块板子都拥有一个板级文件夹,用来存放板级文件。比如开发板上的外设驱动文件等。

NXP 的 I.MX 系列芯片的所有板级文件夹都存放在 board/freescale 目录下,imx6ull 对应的板级文件夹是mx6ullevk。同样备份重命名。

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

1、修改板级文件夹目录下的 Makefile 文件

将文件名修改为刚刚改的文件,这样才会编译mx6ull_my_emmc.c这个文件。

2、修改 imximage.cfg 文件

PLUGIN 这一项路径改成我们自己文件夹的路径。

3、修改 Kconfig 文件

4、修改 MAINTAINERS 文件

5、修改 U-Boot 图形界面配置文件

uboot 是支持图形界面配置

LCD 驱动修改

一般 uboot 中修改驱动基本都是在 xxx.h 和 xxx.c 这两个文件中进行的, xxx 为板子名称,比如 mx6ull_alientek_emmc.h 和 mx6ull_alientek_emmc.c 这两个文件。

一般修改 LCD 驱动重点注意以下几点:
①、 LCD 所使用的 GPIO,查看 uboot 中 LCD 的 IO 配置是否正确。
②、 LCD 背光引脚 GPIO 的配置。
③、 LCD 配置参数是否正确。

总结
①、不管是购买的开发板还是自己做的开发板,基本都是参考半导体厂商的 dmeo 板,而半导体厂商会在他们自己的开发板上移植好 uboot、linux kernel 和 rootfs 等,最终制作好 BSP包提供给用户。
我们可以在官方提供的 BSP 包的基础上添加我们的板子,也就是俗称的移植。
②、我们购买的开发板或者自己做的板子一般都不会原封不动的照抄半导体厂商的 demo板,都会根据实际的情况来做修改,既然有修改就必然涉及到 uboot 下驱动的移植。
③、一般 uboot 中需要解决串口、NAND、EMMC 或 SD 卡、网络和 LCD 驱动,因为 uboot的主要目的就是启动 Linux 内核,所以不需要考虑太多的外设驱动。
④、在 uboot 中添加自己的板子信息,根据自己板子的实际情况来修改 uboot 中的驱动。

u-boot启动流程

uboot启动流程图以及boot启动linux流程图相关推荐

  1. spring boot 启动事件

    spring boot 启动事件 展示 boot 启动过程中事件 @SpringBootApplication public class BootCuratorApplication {public ...

  2. uboot启动流程概述_Alibaba Cloud Linux 2 LTS OS 启动优化实践

    Alibaba Cloud Linux 2 (原Aliyun Linux 2)是阿里云操作系统团队基于社区版 4.19 LTS 内核打造的一款针对云产品优化的下一代 Linux 操作系统发行版,不仅提 ...

  3. omapl138移植uboot系列之启动TI官方移植的Linux内核(启动内核第一篇)

    启动TI官方移植的Linux内核 和编译uboot一样,Linux内核的编译也是三板斧,首先修改Makefile中的ARCH和CROSS_COMPILE,然后找到你要编译的板卡执行make xx_de ...

  4. 【迅为iMX6Q】开发板 u-boot 2020.04 SD卡 启动

    前言 iMX6Q 支持多种启动方式,如 emmc启动.SD 卡启动等,这里简单的记录一下 SD卡启动的流程 下载u-boot 使用 NXP 官方提供的 uboot-imx,代码地址为: https:/ ...

  5. 安装Linux双系统取消快速启动,为什么在双启动时禁用Windows 8上的快速启动?

    问题描述 如果你和Ubuntu一起安装,为什么每个人都一直提到在Windows 8上禁用快速启动?是仅针对UEFI计算机推荐的内容还是对旧版BIOS计算机的建议?是因为它使Windows分区无法从Li ...

  6. linux 6中启动模式,linux6.x启动流程

    1.运行级别介绍 0 - halt (Do NOT set initdefault to this)系统直接关机 1 - Single user mode 单用户模式 2 - Multiuser, w ...

  7. 安装linux并卸载windows,如何在安装双启动后卸载 Windows 或者 Linux

    这个过程其实非常简单,但很多人安装双系统后第一次遇到这类问题时总会向我们求助,因此我们决定把方法写在这里,以便大家能够很容易看到.当你想卸载某个操作系统时,只需要找到它在哪里,然后把对应的分区删除就可 ...

  8. linux 单步启动_Linux系统的启动

    一.启动步骤和GRUB 1.Linux启动过程分析 (1)BIOS自检 l硬件检测及初始化 l引导启动设备 (2)引导启动设备 l软盘(0磁道第一个扇区) l光盘(最外围存储轨道) l硬盘(MBR) ...

  9. linux系统制作usb启动盘,教你制作Linux操作系统的USB启动盘

    USB闪存存储装置(优盘)由于具有轻巧精致.使用方便.便于携带等优点,特别是对比软盘具有容量较大.安全可靠.读取速度较快等特性,越来越多人使用这种装置取代了软驱与软盘,在PC之间交换文件.目前新出的主 ...

最新文章

  1. asp.net获取网站路径
  2. 6.QT信号槽的时序分析
  3. 如何查看本机端口_怎样查看Mac的端口号以及占用情况
  4. 数据包接收系列 — IP协议处理流程(一)
  5. 每一个程序员都是自学成才?
  6. 论如何入门地使用vscode
  7. 动手学深度学习(PyTorch实现)(十二)--批量归一化(BatchNormalization)
  8. Java JDBC Statement
  9. scala写入mysql_spark rdd转dataframe 写入mysql的实例讲解
  10. Linux环境搭建 | 全能终端神器——MobaXterm
  11. C# 绘制矩形方框读写内存类 cs1.6人物透视例子
  12. 少年派的奇幻漂流-对于日货轮出事故主人公侥幸得生后发生的事情。
  13. 谷歌 TensorFlow Roadshow 北京站
  14. 【Luogu】P7995 [USACO21DEC] Walking Home B
  15. 坐标转换中的七参数详谈
  16. ATA工厂测试AT_MODE下震动不振问题分析
  17. 家居网络营销:定制家具行业如何做好全网营销?
  18. 腾讯云TSF微服务平台及ServiceMesh技术实践
  19. Duplicate Removal
  20. MySQL 不四舍五入取整、取小数、四舍五入取整、取小数、向下、向上取整

热门文章

  1. 【Unity技巧】四元数(Quaternion)和旋转
  2. windows碎片文件-SHS
  3. Spring Boot(5)一个极简且完整的后台框架
  4. heroku mysql_Heroku简明教程
  5. 2004年雅典奥运会会歌《Pass the Flame》铃声 2004年雅典奥运...
  6. 【小结】——简约的生活
  7. 为什么e的x次方的导数等于它自身
  8. 机器学习-NLP(二):LSTM假新闻检测
  9. 圣诞节特别篇:网站美化圣诞雪花
  10. 不玩虚的,金融科技和我们每个人有关