uboot移植_听枫要靠谱的博客-程序员信息网

技术标签: uboot  

一、NXP官方Uboot编译与测试
1、将NXP提供的uboot拷贝到ubuntu中。

一个开发板也好运行uboot,DDR或者叫DRAM,串口,SD、EMMC、NAND。板子能工作。

测似结果:
1、uboot能正常启动
2、LCD驱动要根据所使用的屏幕修改。
3、NET初始化失败。

二、移植NXP官方uboot到ALPHA开发板
2.1 添加板子默认配置文件
借鉴NXP官方6ULL EVK开发板,默认配置文件也用他的,

2.2添加板子对应的头文件
不同的板子,有一些需要配置的信息,一般是在一个头文件里面配置,每个板子有一个。对于NXP官方的6ULL EVK板子,这个头文件就是

2.3 添加板子对应的板级文件夹
每个板子都有特有的文件,也叫做板级文件。这里我们将6ULL EVK的板级文件直接拷贝过来。

2.4 修改uboot的配置界面

2.5 使用新添加的板子配置并编译Uboot

2.6 LCD驱动修改
1、确定LCD IO初始化正确,mx6ull_alientek_emmc.c中的lcd_pads。
2、LCD参数,mx6ull_alientek_emmc.c中的displays。fb_videomode表示RGB LCD参数。
MX6ULL_LCDIF1_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x48000)
AIPS2_OFF_BASE_ADDR (ATZ2_BASE_ADDR + 0x80000)
ATZ2_BASE_ADDR AIPS2_ARB_BASE_ADDR
AIPS2_ARB_BASE_ADDR 0x02100000
MX6ULL_LCDIF1_BASE_ADDR = 0x02100000 + 0x80000 + 0x48000 = 0x21c8000

Panel环境变量表示LCD ID。

2.7 网络驱动修改
6ULL网络方案采用内部MAC+外部PHY,6ULL官方开发板使用的PHY芯片就是KSZ8081。正点原子的ALPHA开发板没有使用KSZ8081,我们使用的LAN8720A。因此要修改驱动。
LAN872有一个管理接口,叫做MDIO,两根线,MDIO和MDC,一个MDIO接口可以管理32个PHY芯片。MIDO通过PHY ADDR来确定访问那个PHY芯片。ALPHA开发板ENET1的PHY ADDR是0x0,ENET2的PHY ADDR是0X1.
每个LAN8720都有一个复位引脚,ENET1是SNVS_TAMPER7,ENET2是SNVS_TAMPER8。

LAN8720驱动,因为所有的PHY,其前32个寄存器一模一样,因此uboot里面已经写好了通用PHY驱动,所以理论上不需要修改。

驱动修改
1、修改PHY ADDR
2、删除原有的74LV595相关代码。
3、添加ALPHA开发板的网络复位IO

2.8 其他需要修改的地方

三、bootcmd和bootargs环境变量
3.1 bootcmd环境变量
宏CONFIG_BOOTCOMMAND也可以设置bootcmd的值。

   "run findfdt;" \
   "mmc dev ${mmcdev};" \
   "mmc dev ${mmcdev}; if mmc rescan; then " \
	   "if run loadbootscript; then " \
		   "run bootscript; " \
	   "else " \
		   "if run loadimage; then " \
			   "run mmcboot; " \
		   "else run netboot; " \
		   "fi; " \
	   "fi; " \
   "else run netboot; fi"

Findfdt 设置fdt_file环境变量,也就是dtb文件名字。

mmc dev 1 //切换到emmc
fatload mmc 1:1 80800000 zImage
fatload mmc 1:1 83000000 imx6ull-14x14-evk.dtb
booz 80800000 - 83000000

"loadbootscript=" \
	"fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${script};\0" \
展开以后:fatload mmc 1:1 80800000 boot.scr

loadimage=fatload mmc m m c d e v : {mmcdev}: mmcdev:{mmcpart} ${loadaddr} ${image}\0"
展开:fatload mmc 1:1 80800000 zImage

“loadfdt=fatload mmc m m c d e v : {mmcdev}: mmcdev:{mmcpart} ${fdt_addr} ${fdt_file}\0”
展开
fatload mmc 1:1 83000000 imx6ull-14x14-evk.dtb

bootz ${loadaddr} - ${fdt_addr};
booz 80800000 - 83000000

3.2 bootargs环境变量
宏CONFIG_BOOTARGS也可以设置bootargs的值

mmcargs=setenv bootargs console= c o n s o l e , {console}, console,{baudrate} "
CONFIG_BOOTARGS_CMA_SIZE
“root=${mmcroot}\0”
展开以后就是:
bootargs console= ttymxc0,115200 root=/dev/mmcblk1p2

Bootargs是会传递给Linux内核,设置了一些东西

Bootargs环境变量也叫做命令行参数。

四、uboot启动Linux测试
4.1 从EMMC启动
1、首先查看EMMC里面是否有系统,linux镜像zImage和.dtb文件。先将当前设备切换到EMMC:
mmc dev 1 //切换到EMMC
fatls mmc 1:1 //查看EMMC分区1里面的文件
fatload mmc 1:1 80800000 zImage //将zimage下载到DDR的0x80800000处
fatload mmc 1:1 83000000 imx6ull-14x14-emmc-7-1024x600-c.dtb //将dtb读取到0X83000000
bootz 80800000 – 83000000 //启动内核

如果内核启动成功,说明uboot支持emmc启动,验证成功。

4.2 从网络启动
tftp 80800000 zImage //从tftp服务器下载zimage
tftp 83000000 imx6ull-14x14-emmc-7-1024x600-c.dtb //从tftp服务器下载.dtb
bootz 80800000 – 83000000 //启动系统

五、uboot DDR初始化
1、裸 机
imxdownload软件下载,会在bin文件头部添加IVT DCD数据,

2、uboot
uboot编译生成u-boot.imx。u-boot.imx已经包含了IVT DCD数据。
u-boot.imx的头部信息是怎么添加的?
u-boot.imx的DCD中的DDR初始化代码该怎么修改。
uboot编译会输出

./tools/mkimage -n board/freescale/mx6ull_alientek_emmc/imximage.cfg.cfgtmp -T imximage -e 0x87800000 -d u-boot.bin u-boot.imx

可以看出uboot使用/tools/mkimage工具,向u-boot.bin添加board/freescale/mx6ull_alientek_emmc/imximage.cfg.cfgtmp文件信息,从而得到u-boot.imx。

默认只有imximage.cfg文件,imximage.cfg里面保存的就是DCD数据。DDR初始化也此文件里面。
我们要修改DDR初始化代码,就需要修改imximage.cfg文件。此文件默认拷贝的NXP给IMX6ULL EVK开发板写的,默认是给512MB DDR3L写的。
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_45761493/article/details/118660330

智能推荐

实时渲染入门:(四)光栅化、遮蔽和G-Buffer_weixin_42111061的博客-程序员信息网

光栅化光栅化就是把3D数据转换为像素的过程。如果要渲染一个三角形,那么我们要知道哪些像素块要被染色。这个过程就是光栅化的过程。而这个过程是在后台进行的,我们无法进行改动。在光栅化中有一个性质,一个像素点永远只会同时用于显示一个多边形。而在光栅化过程中,并不是逐个像素询问的,而是以22大小的矩形进行询问的。过度着色让着色范围超出本应有的区域。比如这里有两个三角形,左侧的三角形犹豫22大小的访问机制,会遍历12个像素块,另一方面,应该着色的部分就会被着色。但是这个时候旁边有一个三角形,在决定要

Android工作经验三年总结。(零基础自学Android)_服装学院的IT男的博客-程序员信息网_android工作经历

开篇两年前写过一篇 Android工作经验一年总结 之后还是不少的小伙伴加到了我的QQ分享经验,现在基本上都找到了比较满意的工作踏上了脱发之路。大概又20几个吧,都是经历和我差不多,也是愿意是吃过和学习的,只有一个是想着啥也不干就能学会很多东西的,我也是很快的拒绝了与其沟通。你的薪资多少取决于你脑子里有多少东西,脑子里的东西是需要自己思考和学习的。三年后的我毕业三年了,离上一篇记录文章也过去两年了,现在的我与之前有和区别:待遇,2020年是不容易的一年,疫情之下,发生了太多,经过了一些毕生难忘的

深度学习(一):深度学习基础知识_平行的空间的博客-程序员信息网_深度学习基础知识

随着数据(越来越多的数据集,数据收集和存储越来越容易),软件(tensorflow等),硬件(GPU等)的发展,深度学习受到越来越多的人的青睐。深度学习有多个不同的算法,这些算法大都由神经网络构成,神经网络又是由一个一个神经元构成。神经网络详细介绍可以参考这篇文章:神经网络浅讲:从神经元到深度学习。下面我们对深度学习的一些基础知识点进行一下介绍。前向传播:图1描述的是感知机的前向传播。...

黑马程序员__基础视频day6_lisi0221的博客-程序员信息网

---------------------- android培训、java培训、期待与您交流! ----------------------    看完了第六天的视频内容,感觉收获好多了,光是在本子上做的笔迹就有4页。越学越觉得java好强大,能实现的功能好多啊。由于最近学习任务挺重的所以能抽出来看视频的时间也没那么集中了,第六天的视频也是分两天才看完的。废话不多说,下面就总结下第六天视频的一

Self-Supervised Multi-Channel Hypergraph Convolutional Network for Social Recommendation_ZZZ___bj的博客-程序员信息网_超图卷积

摘要:在推荐系统中,当用户-物品交互数据比较稀疏时,通常使用社会关系来提高推荐质量。大多数现有的社交推荐模型利用成对关系来挖掘潜在的用户偏好。然而,现实生活中用户之间的互动非常复杂,用户关系可能是高阶的。Hypergraph提供了一种自然的方法来建模复杂的高阶关系,而它在改善社会推荐方面的潜力还有待开发。在本文中,我们填补了这一空白,提出了一个多通道超图卷积网络,利用高阶用户关系来增强社交推荐。从技术上讲,网络中的每个通道都通过超图卷积来编码一个超图,该超图描绘了一个常见的高阶用户关系模式。通过聚合多个渠

随便推点

linux笔记:Xmanager远程Ubuntu系统图像化界面_布衣小张的博客-程序员信息网_xmanager 远程ubuntu

目录一、xmanager远程Ubuntu1604LTS1、比较下老新四种方案:二、ubuntu1604具体设置1、安装gdm3与lightdm2、配置lightdm3、安装xubuntu-desktop4、关闭防火墙5、配置/usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf6、实测效果图一、xmanager远程U...

好程序员web前端教程分享CSS技巧!_weixin_30247781的博客-程序员信息网

现在学web人越来越多,小白的问题也越来越多,那么今天就为大家分享一下CSS学习技巧!在web前端工作中离不开css的使用。为了帮助大家提高自己的css使用技巧,下面让我们一起来看一看吧!1、使用 :not() 为导航添加/取消边框很多人会这样给导航添加边框,然后给最后一个取消掉:/* add border */.nav li {border-right: 1px ...

Golang 301永久重定向_weixin_34410662的博客-程序员信息网

为什么80%的码农都做不了架构师?>>> ...

程序员视角的餐饮行业_zzm_的博客-程序员信息网

实习时间:2016/02/16 ——2016/02/23实习地点:广西省贺州市富川瑶族自治县古城镇横山街福建云吞实习报告: 此次寒假实习目的是把所学理论知识应用与实践,锻炼社会实践能力,并在工作中学习新知识,对所学的知识进行总结提升,以指导未来的学习重点和发展方向,为以后毕业进一步走向社会打下坚实的基础,也是我们走向工作岗位的第一步。 我这次实习选择的是在爸妈的...

程序员代码面试指南刷题--第四章.最长公共子串_一年而已的博客-程序员信息网

题目描述:给定两个字符串str1和str2,输出两个字符串的最长公共子串,如果最长公共子串为空,输出-1。输入描述:输入包括两行,第一行代表字符串srr1,第二行代表字符串str2。输出描述:输出包括一行,代表最长公共子串。示例1输入1AB2345CD12345EF输出2345解法一:动态规划思路: 还是难在确定如何抽象import java.io.*;imp...

区块链基础理论与研究概况(前沿版)_蔚1的博客-程序员信息网

内容简介全球新一轮产业变革和科技革命持续深入,信息技术引领世界技术竞争新高地。区块链作为密码学、分布式系统、共识机制、博弈论的集大成者,推动多领域学术研究的蓬勃发展,也为相关产业提供诸多机遇。为了总结区块链基础理论研究及概况,我们编写了此份研究报告。其主要内容包括:区块链基本概念梳理和国内外区块链发展现状分析区块链基础理论国内外研究现状分析区块链典型应用场景及典型应用分析最后,基于对...