U盘PE| w764位旗舰版下载 | U盘装win7系统 | U盘启动 |win7pe | win10下载 |加入收藏土豆PE官网U盘PE,U盘装win7系统,win7pe,U盘启动,U盘装系统,w764位旗舰版下载站!
当前位置:主页 > 帮助中心 > U盘常识 >

SD卡烧写Linux kernel——SD卡分区,并烧写uboot,kernel,DTB及filesystem

来源:http://www.tudoupe.com时间:2022-01-30

Ubuntu18.04下对SD卡分区,并烧写uboot,kernel,DTB及filesystem

  • 一、对于U-Boot启动内核的小知识
    • 1、对于启动文件的理解
    • 2、对于存储介质的理解
    • 3、对于启动的理解
    • 4、对于文件类型的理解
  • 二、Ubuntu18.04下对SD卡分区
    • 1、将读卡器挂接到虚拟机,使用如下指令之一找到自己盘符
    • 2、对SD卡进行分区[^3]
    • 3、格式化分区
  • 三、烧写uboot,kernel,DTB及filesystem
    • 1、烧写uboot
    • 2、复制kernel和DTB
    • 3、复制fs
  • 四、启动exynos4412

一、对于U-Boot启动内核的小知识

1、对于启动文件的理解

有了设备树之后(Kernel-3.x加入设备树),嵌入式Linux开发一般需要四个文件:Bootloader(Uboot)、Kernel(uImage)、设备树(DTB)、根文件系统(rootfs)。

2、对于存储介质的理解

一般开发板上有多个存储介质,如:内存(NorFlash、SDRAM),大容量Flash(Nand Flash、SD卡等),网络也算特殊的一种。
Bootloader(Uboot)、Kernel(uImage)、设备树(DTB)、根文件系统(rootfs)这四个文件,理论上可以放在板上的任一存储介质里面。但由于一些特殊原因,往往有所限制。比如,Nor Flash比较小,一般只放Uboot,放不下rootfs。
因此,一般常见的方式是把Uboot放在Nor Flash或者SDRAM,其它的放在Nand Flash,就像JZ2440;或者全都放在SD卡,就像Ti的AM437X;又或者都放在emmc,像Tiny4412;总之就是以上的存储介质组合,根据实际情况而定。1

3、对于启动的理解

开发板上电后,先执行内部ROM中的固化代码,初始化时钟、总线等一些必要的东西。然后根据启动引脚的电平,读取相应的存储介质上的Uboot到RAM。接着,启动Uboot。U-Boot再根据用户传的参数加载内核、设备树、根文件系统。

4、对于文件类型的理解

Linux支持的文件系统以不同的介质来分类,如下所示2

? 磁盘
FAT16、 FAT16、FAT32、NTFS、ext、ext2 、ext3、ext4
? 光盘
ISO9660、
? Flash
jffs2, yaffs, yaffs2、cramfs, romfs
? 内存
Ramdisk、tmpfs & ramfs
? 虚拟
rootfs、proc、sysfs、usbfs、devpts、NFS
所以,在移植跟文件系统的时候要考虑存储介质的类型。

二、Ubuntu18.04下对SD卡分区

1、将读卡器挂接到虚拟机,使用如下指令之一找到自己盘符

我的盘符是/dev/sdb

2、对SD卡进行分区3

sudo fdisk /dev/sdb,回车输入n,p,1。其中,p是指主分区,1是指第一个分区。输入起始扇区2048和结束扇区22528,完成了添加第一个分区,该分区占用的空间为SD卡第2048~22528扇区共10M,用来存放kernel image和DTB。
继续按照上述步骤,回车输入n,p,2。输入起始扇区24576和结束扇区1253376,添加第二个分区。该分区占用的空间为SD卡第24576~1253376扇区共600M,用来存放rootfs。
添加完成后执行w保存退出fdisk。

分区结束cat /proc/partitions,可以看到三个sdb,分别是/dev/sdb,/dev/sdb1,/dev/sdb2

3、格式化分区

输入mkfs.vfat /dev/sdb1将第1个分区格式化成fat。
输入mkfs -t ext4 /dev/sdb2将第二个分区格式化成ext2,ext3或者ext4。

三、烧写uboot,kernel,DTB及filesystem

1、烧写uboot

本质上用dd命令烧写。我是用Samsung提供的烧写脚本,自动烧写的。不会影响其他分区里的文件。原理请参考以下博文:
Ubuntu18.04烧录U-Boot时格式化SD卡的文件类型(RAW 格式)

2、复制kernel和DTB

思路是在/mnt目录下新建2个文件夹/mnt/sd1和/mnt/sd2,然后挂载分别挂载/dev/sdb1和/dev/sdb2。再分别把uImage、DTB和rootfs复制到/mnt/sd1和/mnt/sd2中。最后解挂。

3、复制fs

思路是在/mnt目录下新建2个文件夹/mnt/sd1,然后挂载挂载SD卡分区。先查看SD卡分区的设备名称,然后挂载,再复制,最后解挂。
我对SD卡做了3个分区,用cat /proc/partitions,可以看到三个sdb,分别是/dev/sdb,/dev/sdb1,/dev/sdb2,/dev/sdb3。看官根据自己的实际情况,也可能是/dev/sdc、/dev/sdd等。

ls /mnt/sd1就可以看到根文件系统中的目录了。

四、启动exynos4412

把SD卡插入exyno4412开发板,设置启动引脚为SD卡启动。上电以后,就可以启动u-boot。通过cuteCom串口助手,输入u-boot命令,设置u-boot的环境变量,然后tftp下载Linux内核和设备树,bootm命令启动内核从SD卡挂载根文件系统。

各位看官根据自己的实际情况修改bootargs参数中的root=/dev/mmcblk0p3

  1. Exynos4412——SD卡启动 ↩︎

  2. 嵌入式Linux系统移植的四大步骤 ↩︎

  3. 在Exynos4412上使用SD卡烧写Linux ↩︎

Copyright © 2012-2014 Www.tudoupe.Com. 土豆启动 版权所有 意见建议:tdsky@tudoupe.com

土豆系统,土豆PE,win7系统下载,win7 64位旗舰版下载,u盘启动,u盘装系统,win10下载,win10正式版下载,win10 RTM正式版下载,win8下载,电脑蓝屏,IE11修复,网络受限,4K对齐,双系统,隐藏分区,系统安装不了,U盘装系统,笔记本装系统,台式机装系统,diskgenius运用,GHSOT装系统,U盘修复,U盘技巧,U盘速度,U盘不能格式化,U盘复制发生错误,U盘加密,U盘选购,开机黑屏,蓝屏,进不了系统,上不了网,打不开程序,点击无反应,系统设置,PE个性化,PE添加网络,PE维护系统

点击这里给我发消息