uboot移植主要思路
针对正点原子的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移植主要思路相关推荐
- 三星官方smdkv210 uboot移植到我的s5pv210开发板
北京 2020-7-26 19:44 周日 昨天外面闷热 今日凉快.空调一开啥事没有!O(∩_∩)O 用了差不多两个周末蹲家里移植的.进度比较慢,算是把uboot相关的一些东西基本了解了. uboot ...
- uboot移植新手入门实践
版权声明:bug实验室原创 https://blog.csdn.net/weixin_43349284/article/details/82958451 u-boot移植新手入门实践视频 前言 视频介 ...
- X-007 FriendlyARM tiny4412 u-boot移植之内存初始化
<<<<<<<<<<<<<<<<<<<<<<<<< ...
- U-Boot移植教程之二:移植
内容来自 韦东山<嵌入式Linux应用开发完全手册> 一.U-Boot移植 开发板smdk2410的配置适用于大多数S3C2410单板,或是只需要极少的修改即可使用.但是目前U-Boot中 ...
- u-boot移植重要问题说明
u-boot移植重要问题说明 一.从SD卡拷贝BL2到内存的函数 函数名字叫copy_uboot_to_ram,位置在board/samsung/real210/mmc_boot.c 其中有这个一部分 ...
- X-003 FriendlyARM tiny4412 uboot移植之添加相应目录文件
X-003 FriendlyARM tiny4412 uboot移植之添加相应目录文件 <<<<<<<<<<<<<< ...
- linux mpc boot 串口初始化,uboot移植阶段二--3串口终结篇
2011-03-20 23:00:37 前天U-boot移植串口后,能成功显示数据. 今天的主要目的是再次进行U-boot移植.看是否成功.花了40分钟,很顺利. 接着就是要把之前有问题的U-boot ...
- 嵌入式linux开发环境 cpu,嵌入式Linux开发环境的搭建之:U-Boot移植-嵌入式系统-与非网...
5.2 U-Boot移植 5.2.1 Bootloader介绍 1.概念 简单地说,Bootloader就是在操作系统内核运行之前运行的一段程序,它类似于PC机中的BIOS程序.通过这段程序,可以 ...
- u-boot移植随笔:u-boot的内存分布图
花了两天时间来专门研究u-boot的内存分布,这个图网上已经有了,但只是大致图形,没有详细.深入解析.所以自己就专门画了图,添加一些东西. 此外,还专门测试了一下u-boot下全局变量.未初始化变量等 ...
- u-boot移植随笔:u-boot shell与ASCII码
u-boot移植随笔:u-boot shell与ASCII码 前几天让u-boot的shell更接近"shell",发现可以使用Ctrl-p等等来控制,心里总在想它们是怎么实现的, ...
最新文章
- Spring Initializr 构建Spring Boot/Cloud工程
- 如何在各类控件中输入/输出数据(学习笔记)
- java的外部引用_Java 调用外部程序
- mmcv 对比 cv2 处理视频速度
- OpenCV | 基于OpenCV的双目图像采集源代码(相机标定)
- Linux shell删除变量
- 【BJDCTF 2nd—Web】做题+复现记录
- linux中lsattr命令,在Linux中用chattr和lsattr命令管理文件和目录属性
- QQ群一键加群代码调用官方API
- nedtworking
- git本地项目怎么上传到仓库
- chart控件怎么使x轴标签全部显示出来
- hadoop-1.2.1运行过程中遇到的问题
- appium java动态等待_appium封装显示等待Wait类和ExpectedCondition接口
- NOD32 AntiVirus v2.70.16杀毒软件
- memset函数的使用
- NCBI数据上传(二):转录组测序(RNA-Seq)数据
- 获两个千亿IPO投资人王刚:要逼自己在质上进取,不是在量上贪婪
- 疫情当前,企业数字化进程加速
- 证明 可逆矩阵A的各列线性无关