【正点原子I.MX6ULL】U-BOOT/Kernel/Rootfs

举报
ReCclay 发表于 2022/02/22 00:58:06 2022/02/22
【摘要】 文章目录 U-BOOTUboot 图形化配置 Linuxrootfs 必须插ENET2 U-BOOT 首先在 Ubuntu 中安装 ncurses 库, 否则编译会报错,安装命令如下...

必须插ENET2

U-BOOT

首先在 Ubuntu 中安装 ncurses 库, 否则编译会报错,安装命令如下:

sudo apt-get install libncurses5-dev

  
 
  • 1
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- distclean
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- mx6ull_14x14_ddr512_emmc_defconfig
make V=1 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j12

  
 
  • 1
  • 2
  • 3
export PATH=$PATH:/usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin

  
 
  • 1

u-boot.bin 就是编译出来的 uboot 二进制文件,uboot是个裸机程序,因此需要在其前面加上头部(IVT、DCD等数据)才能在I.MX6U 上执行。u-boot.imx 文件就是添加头部以后的 u-boot.bin, u-boot.imx 就是我们最终要烧写到开发板中的 uboot 镜像文件。

在 uboot 中,通过“make xxx_defconfig”来配置 uboot, xxx_defconfig就是不同板子的配置文件,这些配置文件都在 uboot/configs 目录中。

MMC通常指的是EMMC或SD卡,正点原子U-BOOT打印信息有:“MMC: FSL_SDHC: 0, FSL_SDHC: 1”,其中FSL_SDHC(0)接的 SD(TF)卡,FSL_SDHC(1)接的 EMMC。

setenv ipaddr 192.168.1.6
setenv ethaddr 00:04:9f:04:d2:35
setenv gatewayip 192.168.1.1
setenv netmask 255.255.255.0
setenv serverip 192.168.1.5
saveenv


  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

在 uboot 中可以 ping 其他的机器,其他机器不能 ping uboot,因为 uboot 没有对 ping命令做处理,如果用其他的机器 ping uboot 的话会失败!

NFS

sudo apt-get install nfs-kernel-server rpcbind
sudo vim /etc/exports
/home/clay/linux/nfs *(rw,sync,no_root_squash)
sudo /etc/init.d/nfs-kernel-server restart

  
 
  • 1
  • 2
  • 3
  • 4
nfs 80800000 192.168.1.5:/home/clay/linux/nfs/zImage

  
 
  • 1

TFTP

sudo apt-get install tftp-hpa tftpd-hpa
sudo apt-get install xinetd
mkdir /home/clay/linux/tftpboot
chmod 777 tftpboot
sudo vim /etc/xinetd.d/tftp

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
server tftp
{
	socket_type = dgram
	protocol = udp
	wait = yes
	user = root
	server = /usr/sbin/in.tftpd
	server_args = -s /home/clay/linux/tftpboot/
	disable = no
	per_source = 11
	cps = 100 2
	flags = IPv4
}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
sudo service tftpd-hpa start

  
 
  • 1
sudo vim /etc/default/tftpd-hpa

  
 
  • 1
# /etc/default/tftpd-hpa

TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/home/clay/linux/tftpboot"
TFTP_ADDRESS=":69"
TFTP_OPTIONS="-l -c -s"

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
sudo service tftpd-hpa restart

  
 
  • 1

拷贝zImage文件到tftp目录下,并赋予 777 权限。

tftp 80800000 zImage

  
 
  • 1

测试移植U-BOOT

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

  
 
  • 1
  • 2
  • 3

root 用来设置根文件系统的位置, root=/dev/mmcblk1p2 用于指明根文件系统存放在mmcblk1 设备的分区 2 中。 EMMC 版本的核心板启动 linux 以后会存在/dev/mmcblk0、/dev/mmcblk1、 /dev/mmcblk0p1、 /dev/mmcblk0p2、 /dev/mmcblk1p1 和/dev/mmcblk1p2 这样的文件,其中/dev/mmcblkx(x=0~n)表示 mmc 设备,而/dev/mmcblkxpy(x=0n,y=1n)表示 mmc 设备x 的分区 y。在 I.MX6U-ALPHA 开发板中/dev/mmcblk1 表示 EMMC,而/dev/mmcblk1p2 表示EMMC 的分区 2。

EMMC设备的第 0 个分区保存 uboot,第 1 个分区保存 linux 镜像和设备树,第 2 个分区为 Linux 系统的根文件系统。

检查一下 EMMC 的分区 1 中有没有zImage 文件和设备树文件,输入命令 ls mmc 1:1

uboot 移植到此结束,简单总结一下 uboot 移植的过程:
①、不管是购买的开发板还是自己做的开发板,基本都是参考半导体厂商的 dmeo 板,而半导体厂商会在他们自己的开发板上移植好 uboot、 linux kernel 和 rootfs 等,最终制作好 BSP包提供给用户。我们可以在官方提供的 BSP 包的基础上添加我们的板子,也就是俗称的移植。
②、我们购买的开发板或者自己做的板子一般都不会原封不动的照抄半导体厂商的 demo板,都会根据实际的情况来做修改,既然有修改就必然涉及到 uboot 下驱动的移植。
③、一般 uboot 中需要解决串口、 NAND、 EMMC 或 SD 卡、网络和 LCD 驱动,因为 uboot的主要目的就是启动 Linux 内核,所以不需要考虑太多的外设驱动。
④、在 uboot 中添加自己的板子信息,根据自己板子的实际情况来修改 uboot 中的驱动。

Uboot 图形化配置

ubuntu 需要预装的库:

sudo apt-get install build-essential
sudo apt-get install libncurses5-dev

  
 
  • 1
  • 2

Linux

tar -jxvf xxx
sudo apt-get install lzop
./mx6ull_alientek_emmc.sh

  
 
  • 1
  • 2
  • 3

编译完成以后就会在目录 arch/arm/boot 下生成 zImage 镜像文件。在 arch/arm/boot/dts 目录下生成 imx6ull-alientek-emmc.dtb 文件

rootfs

setenv bootargs 'console=ttymxc0,115200 root=/dev/nfs nfsroot=192.168.1.5:/home/clay/linux/nfs/rootfs,proto=tcp rw ip=192.168.1.6:192.168.1.5:192.168.1.1:255.255.255.0::eth0:off'
saveenv
boot

  
 
  • 1
  • 2
  • 3

文章来源: recclay.blog.csdn.net,作者:ReCclay,版权归原作者所有,如需转载,请联系作者。

原文链接:recclay.blog.csdn.net/article/details/119090771

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。