内核和文件系统的烧写和启动配置

时间:2022-08-20 20:12:14
本篇博客主要讲基于bootloader,怎么烧录 内核 和根文件系统

1/编译内核

编译内核


2/制作文件系统

根文件系统的制作


3/烧录内核

烧录内核可以通过串口,可以通过网口,烧录,下面介绍通过网口来烧录
如果bootloader 能够联网的话,建议用网口来烧录.
网口烧录

因为接下来的操作要用到tftp,所以要配置网关/本机ip,serverip

因为要用到tftp,所以要在服务器主机上装tftpd,并配置/etc/default/tftpd-hpa

setenv gatewayip 192.168.1.1
setenv ipaddr 192.168.1.252
setenv serverip 192.168.1.250
mw.b 82000000 ff 200000;tftp 82000000 uImage;sf probe 0;sf erase 30000 200000;sf write 82000000 30000 200000

参数详解

按二进制写 ff 到 以内存82000000起始地址的200000字节
从tftp配置文件夹下载uImage到内存82000000

选择spi 0
对 spi 0,以30000为起始地址,200000大小字节,清spi
对 spi 0,将内存82000000上的200000字节写到spi flash地址30000,写的大小为200000
串口烧录

4/烧录文件系统

mw.b 82000000 ff 5d0000;tftp 0x82000000 rootfs_uclibc_64k.jffs2;sf probe 0;sf erase 230000 5d0000;sf write 82000000 230000 5d0000

参数详解

按二进制写ff到以内存82000000起始地址的5d0000字节
从tftp配置文件夹下载rootfs_uclibc_64k.jffs2到内存0x82000000

选择spi 0
对 spi 0,以230000为起始地址,5d0000大小字节,清spi
对 spi 0,将内存82000000上的5d0000字节写到spi flash地址230000,写的大小为5d0000

综上

  • flash 0上30000到230000,为uImage镜像
  • flash 0上230000到800000,为文件系统

5/uboot环境设置

setenv bootcmd 'sf probe 0;sf read 0x82000000 0x30000 0x200000;bootm 0x82000000'
setenv bootargs 'mem=32M console=ttyAMA0,115200 root=/dev/mtdblock2 rootfstype=jffs2 mtdparts=hi_sfc:192k(boot),2048k(kernel),5952k(rootfs)'
sa
//root=/dev/mtdblock2 这里 说的是mtd 设备的第三个分区 rootfs

命令详解

setenv bootcmd 'sf probe 0;sf read 0x82000000 0x30000 0x200000;bootm 0x82000000'

选择spi0
从spi0偏移量0x30000读到内存0x82000000,共读0x200000个字节.
从0x82000000启动. --------------------------------------------------------------------------------------------
有些uboot支持下面这种命令
setenv bootcmd movi read kernel 41000000\;movi read dtb 42000000\;movi read rootfs 43000000 300000\;bootm 41000000 43000000 42000000

从flash上的kernel地址读入内存41000000
从flash上的dtb地址读入内存42000000
从flash上的rootfs地址读入内存43000000

依次从41000000/43000000/42000000启动

6/启动

如果能够启动到文件系统,则表示启动成功