0
点赞
收藏
分享

微信扫一扫

U-boot移植学习


U-boot移植学习_uboot学习


U-boot移植学习_寄存器_02

U-boot移植学习_uboot学习_03

结构体初始化赋值可以这样:

U-boot移植学习_uboot学习_04


U-boot移植学习_linux_05


代码才会执行(目前只测试了 LAN8720A,SMSC 公司其他的芯片还未测试)。第 229 行读取

LAN8720A 的 BMCR 寄存器(寄存器地址为 0),此寄存器为 LAN8720A 的配置寄存器,这里先

读取此寄存器的默认值并保存起来。230 行向寄存器 BMCR 寄存器写入 BMCR_RESET(值为

0X8000),因为 BMCR 的 bit15 是软件复位控制位,因此 230 行就是软件复位 LAN8720A,复位

完成以后此位会自动清零。第 231~233 行等待 LAN8720A 软件复位完成,也就是判断 BMCR

的 bit15 位是否为 1,为 1 的话表示还没有复位完成。第 234 行重新向 BMCR 寄存器写入以前

的值,也就是 229 行读出的那个值。


U-boot移植学习_开发板_06

U-boot移植学习_uboot学习_07

U-boot移植学习_寄存器_08


boootcmd就是一个启动命令环境变量,直接shell中调bootcmd就可以启动了。run bootcmd。

U-boot移植学习_开发板_09



uboot 移植到此结束,简单总结一下 uboot 移植的过程:

①、不管是购买的开发板还是自己做的开发板,基本都是参考半导体厂商的 dmeo 板,而

半导体厂商会在他们自己的开发板上移植好 uboot、linux kernel 和 rootfs 等,最终制作好 BSP

包提供给用户。我们可以在官方提供的 BSP 包的基础上添加我们的板子,也就是俗称的移植。

②、我们购买的开发板或者自己做的板子一般都不会原封不动的照抄半导体厂商的 demo

板,都会根据实际的情况来做修改,既然有修改就必然涉及到 uboot 下驱动的移植。

③、一般 uboot 中需要解决串口、NAND、EMMC 或 SD 卡、网络和 LCD 驱动,因为 uboot

的主要目的就是启动 Linux 内核,所以不需要考虑太多的外设驱动。

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


U-boot移植学习_uboot学习_10


举报

相关推荐

0 条评论