富瀚MC6630,uboot的bootargs和bootcmd参数详解,以及在uboot中用flash命令烧写内核的操作
bootargs
这个参数设置要传递给内核的信息,主要用来告诉内核分区信息和根文件系统所在的分区
bootargs=mem=128M earlycon console=ttyS0,115200 root=/dev/mtdblock3 rootfstype=squashfs mtdparts=spi-nor:960K(boot),64K(encrypt),3M(zImage),8704K(rootfs),2560K(res),1M(config)
#解析:
bootargs=mem=128M(系统用的内存) earlycon console=ttyS0,115200(串口比特率)
#console: 控制台参数。console=ttyAMA0,115200表示使用串口0作为控制台设备 波特率为115200
root=/dev/mtdblock3(挂载文件系统的分区,在这里我们roots在第四个所以就是mtdblock3,如果是第三个就是2) rootfstype=squashfs(文件系统的格式)
mtdparts=spi-nor(flash的类型):960K(boot),64K(encrypt),3M(zImage),8704K(rootfs),2560K(res),1M(config)[各个分区的大小]
bootcmd
bootcmd是自动启动时默认执行的一些命令,因此你可以在当前环境中定义各种不同配置,不同环境的参数设置,然后设置bootcmd为你经常使用的那种参数。
bootcmd 'help;sf probe 0;sf read 0x80008000 0x100000 0xf00000;bootz 0x80008000 - 0x81000000'
#解析
bootcmd 'help;sf probe 0(申请flash使用);
sf read 0x80000000 0x100000 0xf00000(以0x0为基地址偏移0x100000读取长度0xf00000到0x80000000中);
bootz 0x80000000 - 0x81000000'
用MolDownload烧录工具烧录
- 先在MolDownload目录下的uart
放入你编译好的uboot(总共三个文件)
然后打开软件,按图中顺次依次点击最后重新上电即可
顺序3设置:
方法1:用uboot命令烧录内核
uboot烧录后,先用setnev设置好板端地址,tftp服务器地址
#setenv serverip 172.20.10.57 //修改服务器地址
#setenv ipaddr 172.20.10.58 //修改IP地址
#setenv gatewayip 172.20.10.1 //修改网关
#setenv netmask 255.255.255.0 //修改子网掩码
#saveenv //保存设置
最后使用mw.b命令和flash命令进行烧写
mw.b 0x80000000 0xFF 0xf00000; //从0x80108000开始写入0xff,写入长度为0xf00000(相当于复位)
tftpboot 0x80000000 zImage-dtb; //把内核文件zImage-dtb写入到0x80108000中
sf probe 0; //申请flash
sf erase 0x100000 0xf00000; //从flash0x100000开始擦除,范围是0xf00000
sf write 0x80000000 0x100000 0xf00000; //从0x80108000写入到flash0x100000中,大小为0xf00000
//0x8开头为ddr的起始地址,步骤是先下载到DDR然后再从DDR写入到flash
方法2:用MolDownload烧录工具烧录内核
在MolDownload目录下
箭头所指参考方法1自行修改
打开软件
修改好板端地址点下载ok!(点下载后要不要重新上电,我忘记了自己试一下)
富瀚用命令去把分区二进制数据读存为文件
/progs # cat /proc/mtd*
dev: size erasesize name
mtd0: 000f0000 00010000 "boot"
mtd1: 00010000 00010000 "encrypt"
mtd2: 00300000 00010000 "zImage"
mtd3: 00880000 00010000 "rootfs"
mtd4: 00280000 00010000 "res"
mtd5: 00100000 00010000 "config"
/progs # cat /dev/mtd1 > /mnt/showmaker