Mstar晨星机芯的智能电视固件语法说明
MMC命令语法说明#以康佳LED37R5200PDE为例,版本:99010600,机芯:6a800c
升级包(固件)名:MstarUpgrade.bin
语法如下:
mmc slc 0 1
↑ 格式:mmc slc size reliable_write
设置slc分区大小,size为0表示不设置,自动向上取整,保证不小于输入的size。
mmc rmgpt
↑ 移除当前所有分区
创建各分区:
格式:mmc create 分区名 长度
(按顺序创建分区,第1个分区是misc,最后一个是customercfg)
mmc create misc 0x00080000
mmc create recovery 0x00A00000
mmc create boot 0x00400000
mmc create system 0x019000000
mmc create userdata 0x32000000
mmc create cache 0x12C00000
mmc create tvservice 0x05000000
mmc create tvcustomer 0x01000000
mmc create tvdatabase 0x00800000
mmc create customercfg 0x00800000
写入数据到分区:
filepartload 50000000 MstarUpgrade.bin 4000 5d0fec
↑ 从MstarUpgrade.bin的起始地址为0x4000开始,读取0x5d0fec大小的数据,存入以0x50000000为起始地址内存处:
(0x50000000为临时存放起始地址)
mmc erase.p recovery
↑ 擦除recovery分区内容
mmc write.p 50000000 recovery 5d0fec 1
从内存地址0x50000000处读取大小为0x5d0fec的数据,存入recovery分区,“1”表示忽略空白
filepartload 50000000 MstarUpgrade.bin a04000 3834a2
mmc erase.p boot
mmc write.p 50000000 boot 3834a2 1
mmc erase.p system
filepartload 50000000 MstarUpgrade.bin e04000 6400000
mmc write.p.continue 50000000 system 0 6400000 1
mmc write.p.continue命令是将数据写到指定分区偏移处
这里是将大小为0x6400000的数据写入system分区的第0块偏移处
(每块是512字节)
filepartload 50000000 MstarUpgrade.bin 7204000 6400000
mmc write.p.continue 50000000 system 32000 6400000 1
↑ 这里是将大小为0x6400000的数据写入system分区的第0x32000块偏移处
(512字节 = 0x200)
(0x32000 = 0x6400000 / 0x200)
(0x7204000 = 0xe04000 0x6400000)
此处的偏移地址是以块为单位,有时也用字节为单位
具体用哪个通过 ? mmc或help mmc来查询自己系统支持的格式
另外nand的相关命令也不一样
filepartload 50000000 MstarUpgrade.bin d604000 6400000
mmc write.p.continue 50000000 system 64000 6400000 1
filepartload 50000000 MstarUpgrade.bin 13a04000 6400000
mmc write.p.continue 50000000 system 96000 6400000 1
filepartload 50000000 MstarUpgrade.bin 19e04000 3aa082
mmc erase.p userdata
mmc unlzo 50000000 3aa082 userdata 1
↑ 解压从内存地址0x50000000开始的长度为0x3aa082的数据,并写入userdata分区
filepartload 50000000 MstarUpgrade.bin 1a1b4000 13467b
mmc erase.p cache
mmc unlzo 50000000 13467b cache 1
filepartload 50000000 MstarUpgrade.bin 1a2f4000 5000000
mmc erase.p tvservice
mmc write.p 50000000 tvservice 5000000 1
filepartload 50000000 MstarUpgrade.bin 1f2f4000 1000000
mmc erase.p tvcustomer
mmc write.p 50000000 tvcustomer 1000000 1
filepartload 50000000 MstarUpgrade.bin 202f4000 800000
mmc erase.p tvdatabase
mmc write.p 50000000 tvdatabase 800000 1
filepartload 50000000 MstarUpgrade.bin 20af4000 800000
mmc erase.p customercfg
mmc write.p 50000000 customercfg 800000 1
设置环境参数:
setenv MIU0_GROUP_SELMIU 0000:0000:0000:0000
setenv MIU1_GROUP_SELMIU 4E00:0000:0000:0100
setenv MS_MEM LX_MEM=0x9600000 EMAC_MEM=0x100000 DRAM_LEN=0x20000000 LX_MEM2=0x50E00000,0xD900000 LX_MEM3=0xB0000000,0x0000000
setenv root ROOT=/dev/ram rw rootwait
↑ ROOT是变量,变量值是root=/dev/ram rw rootwait
用来指定根文件系统rootfs的位置(挂载点)
此处的文件系统是:ramdisk、可读写、rootwait指定内核等所有设备节点都加载后,在挂载检查rootfs的合法性。
(通常由于没有指定initrd,所以这个ramdisk镜像存在flash中,
此时应该在bootm命令中指定ramdisk镜像在flash中的地址,bootm kernel_addr ramdisk_addr 。)
(ramdisk: 是一种基于内存的虚拟磁盘技术,即把内存当磁盘用,默认采用ext2文件系统)
setenv bootargs console=ttyS0,115200 androidboot.console=ttyS0 $(ROOT) init=/init $(MS_MEM)
setenv MstarUpgrade_complete 1
setenv upgrade_mode 0
setenv db_table 0
setenv verify n
saveenv
setenv filesize 3834a2
setenv bootcmd mmc read.p 0x45000000 boot 0x400000\; bootm 0x45000000
↑ bootcmd是启动命令,后可接多条命令语句,中间用分号隔开。
read.p 从boot分区读取长度为0x400000的数据到内存地址为0x45000000开始处。
bootm 0x45000000 表示从内存地址为0x45000000处开始启动。
init=/init内核启动后运行的第一个程序
printenv
setenv MstarUpgrade_complete 1
saveenv 保存变量
printenv
% <-this is end of file symbol
*=================================
其它命令说明 :filepartload 40300000 MstarUpgrade.bin 1000 4000000
mmc write 40300000 740b 4000000
filepartload 40300000 MstarUpgrade.bin 4001000 4000000
mmc write 40300000 2740b 4000000
↑ 从内存地址0x40300000读出长度为0x4000000的数据,写入第0x2740b块开始处
0x2740b = 0x740b 0x4000000 / 0x200
(有的地方格式是:
mmc write addr blk# cnt
最后一个参数cnt是多少块,而不是字节长度)
filepartload 20200000 MstarUpgrade.bin d1e000 5da9658
mmc unlzo 20200000 5da9658 system 1
filepartload 20200000 MstarUpgrade.bin 6ac8000 65eb073
mmc unlzo.cont 20200000 65eb073 system 1
↑ 读取起始地址是512的整数倍处(分段压缩时按512字节/块)
连续解压后写入分区的尾部,不用指定偏移。
filepartload 20200000 MstarUpgrade.bin 255dd000 12800
mmc write.boot 1 20200000 0 12800
setenv bootcmd mmc read.p 0x25000000 boot 0x00500000\; bootm 0x25000000
setenv recoverycmd mmc read.p 0x25000000 recovery 0x00B00000\; bootm 0x25000000
↑ recoverycmd :设置recovery的启动命令
mmc erase
↑ 擦除整个chip
mmc erase 0 0x800000
↑ 从第0个block处开始擦除8M大小数据
mmc erase tvdatabase 0x800000
↑ 擦除tvdatabase分区开始之后的8M数据
mmc remove recovery
↑ 移除recovery分区(慎用)
reset
↑ 重置命令
*=================================
bootfile 定义缺省的下载文件
bootargs 定义传递给Linux内核的命令行参数
bootcmd 定义自动启动时执行的几条命令
bootdelay 执行自动启动(bootcmd中的命令)的延时秒数
serverip 定义tftp服务器端的IP地址