文章目录

  • 前言
  • 一、搭建开发环境
  • 二、获取官方资料
    • 1. 获取官方开发板资料
    • 2. 获取官方 U-Boot 源码
  • 总结

前言

去年入手了一块正点原子的 I.MX6U-ALPHA 开发板,跟着其配套的指导文档一步一步操作,很轻松就完成了 u-boot 移植、内核移植以及根文件系统的构建。就我个人感觉而言,我仅仅是跟着教程完成了操作,得到了想要的结果,但是并不知道个中原因,有种 知其然而不知其所以然 的感觉。

为此,我查阅了 NXP 提供的官方指导文档,按照官方提供的资料将 NXP 提供的 u-boot 一步一步的移植到正点原子的 I.MX6U-ALPHA 开发板上,在此过程中,我感觉收获良多,此前很多不解的问题也在官方文档上找到了答案,所以我打算将这次探索的过程写成文章,分享给更多需要的小伙伴!


一、搭建开发环境

我的开发环境是在 WSL 下搭建的,关于如何在 WSL 下搭建嵌入式开发环境,我在此前的文章中有做介绍,感兴趣的小伙伴可以去看看。

WSL嵌入式开发系列教程 1 —— 安装指南
WSL嵌入式开发系列教程 2 —— Windows 与 Linux 的文件互传
WSL嵌入式开发系列教程 3 —— 安装交叉编译工具链
WSL嵌入式开发系列教程 4 —— 安装VS code

在虚拟机环境下搭建开发环境操作也是一样的,小伙伴不必纠结这个问题。

二、获取官方资料

正点原子的 I.MX6U-ALPHA 开发板设计参考的是 NXP 官方的 I.MX6ULL EVK 开发板,因此我们需要到 NXP 官网上查找 I.MX6ULL EVK 开发板相关的资料。


1. 获取官方开发板资料

NXP的英文网站和中文网站有点差异,并不是完全一样,不过这不影响我们查找资料,这里我以中文网站为例,讲讲如何在 NXP 官网上查找 I.MX6ULL EVK 开发板相关的资料。

点击进入 ==> NXP官方中文网站
点击进入 ==> NXP官方英文网站


首先进入 NXP 官网,在设计版块上可以看到有 I.MX 系列开发板的相关信息,点击进入 ==>

点击查看全部 ==>

然后我们可以看到 I.MX6ULL EVK 开发板的相关信息,点击进入 ==>

可以看出,这里就是 I.MX6ULL EVK 开发板资料的下载页面了。

继续往下翻,可以看到有个快速入门,这里有个快速入门指导文档和最新发布的镜像文件,当前最新的镜像文件是 L4.1.15_2.0.1 版本,如果你有 I.MX6ULL EVK 开发板,那么就可以下载这个压缩包,将里面的镜像文件烧录到 I.MX6ULL EVK 开发板上进行测试。


快速入门手册里面主要是介绍了 I.MX6ULL EVK 开发板的硬件资源,以及如何使用 I.MX6ULL EVK 开发板。


点击下载 ==> i.MX 6ULL EVK 开发板快速入门手册

点击下载 ==> L4.1.15_2.0.1-patch_images_MX6ULLEVK


很明显,这些资料并不是我现在最想要的资料,因为我手上并没有 i.MX 6ULL EVK 开发板,继续往下看,在支持信息里面,有很多 DOCS 结尾的文档,根据下面的描述,可以知道这些就是 NXP 官方关于 BSP 的指导文档,足足有 10 个版本。

那么问题来了,那么多个版本的文档,选择哪一个版本的文档才是我们需要的呢?

说实话,我也不知道哪个合适,所以我的选择是全部都下载下来看一下再决定选择哪一个版本。其实,不管你打开哪个版本的文档,其实里面的内容都差不多,其中都有一个以 ''Porting_Guide" 结尾的文档,这个就是跟移植相关的指导文档。

我查阅了这 10 个版本的 ''Porting_Guide" ,发现主要有两种不同的移植方式:一种是传统的修改源码的移植方式,另一种是基于 Yocto Project 的移植方式。

例如我打开 L4.14.98_2.0.0 这个版本的 ''Porting_Guide" ,找到里面关于 U-Boot 移植的内容如下:

可以看到,这个指导文档的基于 Yocto Project 的移植,我的建议呢,是先使用传统的修改源码的方式来移植U-Boot,熟练掌握U-Boot的移植以后,再学习基于 Yocto Project 的移植,所以这个不是我想寻找,继续。

这里顺便讲一下这个版本号的意义,我们打开 L4.14.98_2.0.0 版本的Release_Notes,在 Release contents 章节可以看到版本号的含义,其他版本号的含义。

好,继续我们的查找,最终,我在 L4.1.15_2.0.0 版本的 ''Porting_Guide" 中找到了我想要的内容:

点击下载 ==> L4.1.15_2.0.0 版本文档


注意看,这里有两个重点:第一个重点是 step-by-step guide,手把手教你移植基于 I.MX6 和 I.MX7 的 U-Boot 到自己的板子上;第二个重点是用到的 U-Boot 是基于 v2016.03 这个版本的。


继续往下看,有如下内容,这个就是NXP官方 U-Boot 的移植教程了。


2. 获取官方 U-Boot 源码

NXP 官方的 U-Boot 移植教程我们是成功找到了,但是 NXP 官方 U-Boot 源码我们应该上哪里找呢?

开始,我看到是基于 v2016.03 版本的 U-Boot 进行移植的,所以我就去 U-Boot 的官网上下载了 v2016.03 版本的源码,然后跟着文档一步一步移植,发现不少地方对应不上,后来我才猛然想起,我应该是要去下载 NXP 基于v2016.03 版本修改后发布 U-Boot 源码,而不是直接下载 v2016.03 版本的 U-Boot 源码。


我在 NXP 官网找了好几遍,也没有找到 U-Boot 相关下载页面,然后在百度搜索 "imx u-boot" 关键字,一下就找到了,哈哈!


点击进入 ==> uboot-imx


页面最下面是 GitHub 的仓库地址,所以我们可以 GitHub 上导入该仓库,然后再下载我们需要的源码。


点击进入 ==> GitHub

点击左上角的 “导入仓库”

然后填入需要导入的仓库地址和仓库名称,点击开始导入。

https://source.codeaurora.org/external/imx/uboot-imx

开始导入后,可以看到进度条,导入的速度很慢,耐心等待即可。

导入完成后,直接点击进度条下面的路径即可进入仓库。

上面说了,我们需要下载 v2016.03 这个版本的U-Boot ,点击 “master” ,往下拉,找到 “v2016.03_4.1.15_2.0.0” 这个版本的源码,这个版本的源码刚好就对应我们上面下载的 L4.1.15_2.0.0 版本的官方指导文档。

选择好 U-Boot 源码版本后,选择下载方式下载即可,我这里选择下载 ZIP 压缩包。


从 GitHub 上下载源码的速度比较慢,我们可以到 “码云” 上下载,速度相对快一点。

点击进入 ==> 码云 gitee

跟 GitHub 操作一样,导入仓库。

把 NXP 官方 U-Boot 源码仓库地址填入时,可以看到提示目前导入仓库在 Gitee 上已有公开同步仓库,你可以直接点击访问,也可以继续导入。

后续的操作和 GitHub 上的操作一样,选择相应的版本,然后下载源码即可。

点击获取 ==> NXP 官方 v2016.03_4.1.15_2.0.0 版本 U-Boot 源码


总结

至此,我们已经下载好了我们需要的 NXP 官方指导文档以及U-Boot 源码了,前期准本工作已完成,下一步就可以开始移植 U-Boot 到开发板上了。

I.MX6ULL 官方 U-Boot 移植系列教程 1 —— 前期准备相关推荐

  1. STM32MP157系列教程连载-Linux系统移植篇4:STM32MP1微处理器之Bootloader移植

    STM32MP157系列教程连载-Linux系统移植篇4:STM32MP1微处理器之Bootloader移植 第 1 章 BootLoader(Uboot)移植 1.1 实验原理 1.1.1 概念 简 ...

  2. maven web项目导入sts_Spring Boot2 系列教程(二)创建 Spring Boot 项目的三种方式

    我最早是 2016 年底开始写 Spring Boot 相关的博客,当时使用的版本还是 1.4.x ,文章发表在 CSDN 上,阅读量最大的一篇有 43W+,如下图: 2017 年由于种种原因,就没有 ...

  3. docker 打包镜像_Spring Boot2 系列教程(四十一)部署 Spring Boot 到远程 Docker 容器

    不知道各位小伙伴在生产环境都是怎么部署 Spring Boot 的,打成 jar 直接一键运行?打成 war 扔到 Tomcat 容器中运行?不过据松哥了解,容器化部署应该是目前的主流方案. 不同于传 ...

  4. 玩转RT-Thread系列教程(6)--移植STemwin

    玩转RT-Thread系列教程(6)–移植STemwin 一.STemwin介绍 在实际应用中我们时常需要制作 UI 界面来实现人机交互,简单的 UI 我们可以自己直接写代码,但是对于那些复杂的交互方 ...

  5. Provisioning Services 7.8 入门系列教程之十三 使用 Boot Device Management(BDM)

    续Provisioning Services 7.8 入门系列教程之十二 实现高可用性 可以使用 Boot Device Management 实用程序将 IP 和引导信息(引导设备)交付给目标设备, ...

  6. springboot整合oracle_SpringBoot2.x系列教程67--Spring Boot整合分布式事务简介

    SpringBoot2.x系列教程67--Spring Boot整合分布式事务简介 作者:一一哥 一. 分布式事务简介 1. 什么是分布式事务 百度百科对分布式事务的解释如下: 分布式事务就是指事务的 ...

  7. freemarker ftl模板_Spring Boot2 系列教程(十)Spring Boot 整合 Freemarker

    今天来聊聊 Spring Boot 整合 Freemarker. Freemarker 简介 这是一个相当老牌的开源的免费的模版引擎.通过 Freemarker 模版,我们可以将数据渲染成 HTML ...

  8. spring boot 跨域请求_SpringBoot 系列教程 web 篇之自定义请求匹配条件 RequestCondition...

    191222-SpringBoot 系列教程 web 篇之自定义请求匹配条件 RequestCondition 在 spring mvc 中,我们知道用户发起的请求可以通过 url 匹配到我们通过@R ...

  9. channelfuture怎么拿到数据_SpringBoot2.x系列教程66--Spring Boot整合分布式事务之数据库事务回顾

    SpringBoot2.x系列教程66--Spring Boot整合分布式事务之数据库事务回顾 作者:一一哥 本节主要内容 一. 事务出现的原因 转账是生活中常见的操作,比如从A账户转账100元到B账 ...

最新文章

  1. react项目部署nginx服务器
  2. spring之旅第四篇-注解配置详解
  3. oracle怎么设置sql每隔一段时间执行一次_Oracle大规模数据快速导出文本文件
  4. python返回元组_python – numpy.where返回一个元组的目的是什么?
  5. 雷蛇鼠标安全漏洞 装上就能获得管理员权限
  6. assets目录与res/raw目录下文件的区别
  7. .Net 2.0 文档生成工具
  8. flex----其他交互设计
  9. 重磅!阿里巴巴Blink正式开源,重要优化点解读\n
  10. [NOIP2013] 华容道
  11. android 获得资源图片,快速获取app(ios和安卓)资源图片
  12. RS-485 接口电路--转载
  13. Ubuntu下载工具uGet+aira2
  14. github协同工作流程(一)
  15. 畅购商城_第9章SpringSecurity整合Oauth2
  16. 读书记:认知觉醒(三)元认知、自控力
  17. VBox 快照备份虚拟机
  18. selenum登录163邮箱
  19. java start with_Java中startWith方法的使用!
  20. Java正则表达式email

热门文章

  1. 动态代理是基于什么原理?
  2. 使用Blob实现文件下载
  3. 福州24小时图文打印店在哪里?
  4. 浅谈垃圾对象回收之《三色标记法》
  5. 推特开发者申请标准化流程20190117
  6. 梁启超写给梁思成及儿女的信
  7. QQ图文分享卡片如何制作,将链接转换为可编辑图文卡片
  8. 《御龙弑天》隐私声明
  9. U盘解决写保护和无法读取问题
  10. ECP认证辅导,如果供应商未能按自我审核中的要求提交相关文件,ECP将不会得到批准