针对正点原子的i.mx6ull (a7处理器)

官方的uboot编译、烧写和启动

启动后====先看看与自己的有哪些不一样,

根据的自己的板子进行修改

这个阶段基本上,就是在这官方的bsp包,,肯定支持最多开发板,我们只需建立相同的文件,修改等等,

最多就是基本的外设驱动: 串口 lcd 网络 外置的mmc或者sd

uboot与内核联系的重要的参数bootcmd和bootargs

## bootcmd环境变量,
#define CONFIG_BOOTCOMMAND \ "run findfdt;" \ =============设备树文件"mmc dev ${mmcdev};" \ "mmc dev ${mmcdev}; if mmc rescan; then " \ //看看有没有sd卡和emmc存在"if run loadbootscript; then " \ //如果加载文件成功就运行bootscript"run bootscript; " \ "else " \ "if run loadimage; then " \ //加载不成功就把mmc中zImage到内存中"run mmcboot; " \ "else run netboot; " \ "fi; " \ "fi; " \ "else run netboot; fi"

mmcboot

     "mmcboot=echo Booting from mmc ...; " \ "run mmcargs; " \ //用来设置bootargs"if test ${boot_fdt} = yes || test ${boot_fdt} = try; then " \ "if run loadfdt; then " \ //加载evk.dtb到83000000处linux文件"bootz ${loadaddr} - ${fdt_addr}; " \ //bootz 80800000-83000000"else " \ "if test ${boot_fdt} = try; then " \ "bootz; " \ "else " \ "echo WARN: Cannot load the DT; " \ "fi; " \ "fi; " \ "else " \ "bootz; " \ "fi;\0" \

//整个bootcmd的功能就是
emmc Dev 1
fatload mmc 1:1 0x80800000 zImage //加载文件zImage 到0x80800000处
fatload mmc 1:1 0x83000000 imx6ull-14x14-evk.dtb //读取设备树到0x83000000处
bootz 0x80800000 - 0x83000000

bootargs(mmcargs设置的)环境变量

作用就是保存着uboot传递给Linux内核的的参数

mmcargs=setenv bootargs console=console,{console},console,{baudrate} root=${mmcroot}
也就是
mmcargs=setenv bootargs console= ttymxc0, 115200 root= /dev/mmcblk1p2 rootwait rw

  • //console
    原来设置linux终端,通过什么设备(串口ttymxc 还是lcd)和linux就行交互

  • //root
    root用来设置根文件系统的位置,root=dev/mmcblk1p2用于指明根文件系统存放在mmcblk1设备分区2中
    这里的/dev/mmcblk1表示EMMC,而/dev/mmcblk1p2表示EMMC的分区2

  • //rootfstype
    一般配置root一起使用,rootfdtype用于指定根文件系统类型
    如果根文件系统为ext 格式的话此选项无所谓。如果根文件系统是 yaffs、jffs 或 ubifs 的话就需要设置此选项

uboot启动linux系统

从emmc启动也就是:

将编译出来的 ”linux镜像文件zImage“ 和 ”设备树文件“保存在EMMC中===》uboot从EMMC中读取这两个文件并启动

》》》先要保证emmmc里面有这两个必要的文件。:
ls mmc 1:1 看看有没有文件

》》再设置uboot的环境变量 bootcmd 和 bootargs:
setenv bootargs ‘console=ttymxc0,115200 root=/dev/mmcblk1p2 rootwait rw’
setenv bootcmd ‘mmc dev 1;fatload mmc 1:1 80800000 zImage; fatload mmc 1:1 83000000 imx6ull-alientek-emmc.dtb; bootz 80800000 - 83000000;’
saveenv

》》》再直接boot就可以启动

从网络启动(目的为了调试)可以用nfs或者tftp

每次修改linux系统文件或者linux下的某个驱动以后都要将其烧写到EMMC中去测试,这样实在太麻烦了

》》》在ubuntu建立一个文件夹叫做tftp ,把zImage镜像文件(linux内核)和设备树文件 放进去

》》》设置环境变量bootcmd 和 bootargs
setenv bootargs ‘console=ttymxc0,115200 root=/dev/mmcblk1p2 rootwait rw’
setenv bootcmd ‘tftp 80800000 zImage; tftp 83000000 imx6ull-alientek-emmc.dtb; bootz 80800000 - 83000000’
saveenv

》》》boot

这样有个缺点下次启动的时候还是要远端传驱动文件,而不是像本地直接使用

uboot DDR初始化

裸机

imxdownload软件下载,会在bin文件头部添加IVT DCD数据

uboot

uboot编译生成的u-boot.imx
u-boot.imx已经包含了IVT DCD数据

需要用官方的工具找出需要校准的寄存器的值,比对board/freescale/mx6ull_alientek_emmc/imximage.cfg进行修改

//Read DQS Gating calibration
setmem /32  0x021b083c =    0x0140013C  // MPDGCTRL0 PHY0//Read calibration
setmem /32  0x021b0848 =    0x40403036  // MPRDDLCTL PHY0//Write calibration
setmem /32  0x021b0850 =    0x4040322E  // MPWRDLCTL PHY0

总结

  • 不管是自己购买的开发板还是自己做的开发板,基本都需要参考半导体厂商的dmeo板(贵),
    半导体厂商会在他们的开发板上移植好uboot、linux kernel和sysytemfs等最终做好BSP包给用户。

    这个时候我们可以在官方提供的BSP包的基础上添加我们自己的板子,====俗称移植

  • 我们不会原封不动的照抄半导体的demo板,有修改就必然会涉及到uboot下驱动的移植

  • 一般uboot中需要解决 串口 (交互)、 NAND、EMMC或SD卡 (用来保存启动文件)、 网络驱动(用来调试) 、屏幕驱动(交互),uboot的主要目的就是启动内核,所以不要考虑太多的外设驱动

  • 在uboot中添加自己的板子信息,根据实际的情况来修改uboot中的驱动

uboot移植主要思路相关推荐

  1. 三星官方smdkv210 uboot移植到我的s5pv210开发板

    北京 2020-7-26 19:44 周日 昨天外面闷热 今日凉快.空调一开啥事没有!O(∩_∩)O 用了差不多两个周末蹲家里移植的.进度比较慢,算是把uboot相关的一些东西基本了解了. uboot ...

  2. uboot移植新手入门实践

    版权声明:bug实验室原创 https://blog.csdn.net/weixin_43349284/article/details/82958451 u-boot移植新手入门实践视频 前言 视频介 ...

  3. X-007 FriendlyARM tiny4412 u-boot移植之内存初始化

    <<<<<<<<<<<<<<<<<<<<<<<<< ...

  4. U-Boot移植教程之二:移植

    内容来自 韦东山<嵌入式Linux应用开发完全手册> 一.U-Boot移植 开发板smdk2410的配置适用于大多数S3C2410单板,或是只需要极少的修改即可使用.但是目前U-Boot中 ...

  5. u-boot移植重要问题说明

    u-boot移植重要问题说明 一.从SD卡拷贝BL2到内存的函数 函数名字叫copy_uboot_to_ram,位置在board/samsung/real210/mmc_boot.c 其中有这个一部分 ...

  6. X-003 FriendlyARM tiny4412 uboot移植之添加相应目录文件

    X-003 FriendlyARM tiny4412 uboot移植之添加相应目录文件 <<<<<<<<<<<<<< ...

  7. linux mpc boot 串口初始化,uboot移植阶段二--3串口终结篇

    2011-03-20 23:00:37 前天U-boot移植串口后,能成功显示数据. 今天的主要目的是再次进行U-boot移植.看是否成功.花了40分钟,很顺利. 接着就是要把之前有问题的U-boot ...

  8. 嵌入式linux开发环境 cpu,嵌入式Linux开发环境的搭建之:U-Boot移植-嵌入式系统-与非网...

    5.2  U-Boot移植 5.2.1  Bootloader介绍 1.概念 简单地说,Bootloader就是在操作系统内核运行之前运行的一段程序,它类似于PC机中的BIOS程序.通过这段程序,可以 ...

  9. u-boot移植随笔:u-boot的内存分布图

    花了两天时间来专门研究u-boot的内存分布,这个图网上已经有了,但只是大致图形,没有详细.深入解析.所以自己就专门画了图,添加一些东西. 此外,还专门测试了一下u-boot下全局变量.未初始化变量等 ...

  10. u-boot移植随笔:u-boot shell与ASCII码

    u-boot移植随笔:u-boot shell与ASCII码 前几天让u-boot的shell更接近"shell",发现可以使用Ctrl-p等等来控制,心里总在想它们是怎么实现的, ...

最新文章

  1. Spring Initializr 构建Spring Boot/Cloud工程
  2. 如何在各类控件中输入/输出数据(学习笔记)
  3. java的外部引用_Java 调用外部程序
  4. mmcv 对比 cv2 处理视频速度
  5. OpenCV | 基于OpenCV的双目图像采集源代码(相机标定)
  6. Linux shell删除变量
  7. 【BJDCTF 2nd—Web】做题+复现记录
  8. linux中lsattr命令,在Linux中用chattr和lsattr命令管理文件和目录属性
  9. QQ群一键加群代码调用官方API
  10. nedtworking
  11. git本地项目怎么上传到仓库
  12. chart控件怎么使x轴标签全部显示出来
  13. hadoop-1.2.1运行过程中遇到的问题
  14. appium java动态等待_appium封装显示等待Wait类和ExpectedCondition接口
  15. NOD32 AntiVirus v2.70.16杀毒软件
  16. memset函数的使用
  17. NCBI数据上传(二):转录组测序(RNA-Seq)数据
  18. 获两个千亿IPO投资人王刚:要逼自己在质上进取,不是在量上贪婪
  19. 疫情当前,企业数字化进程加速
  20. 证明 可逆矩阵A的各列线性无关

热门文章

  1. mysql中文模糊查询_解决mysql中文模糊查询问题的方法
  2. Core Location 电子围栏:入门
  3. pyc文件反编译成py文件
  4. Hudson poll scm 时间格式说明
  5. Java、JSP基于Java的题库管理系统的设计与实现
  6. 免费的身份证归属地查询接口
  7. Android MTP 模式 驱动无法安装解决方案
  8. 11.6 通信实例与ASCII码
  9. 一个萌新关于电脑安装软件错误提示“1402”的应对方法
  10. 为什么老实人很难当上领导?因为他们身上有这个致命弱点