Mstar晨星机芯的智能电视固件更新MMC的语法说明

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地址

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
MStar固件是指由MStar半导体公司开发的固件,用于控制其产品的操作系统和功能。解包和打包MStar固件可以用于修改或定制设备的功能和界面。 要解包MStar固件,您可以按照以下步骤进行操作: 1. 获取MStar固件文件:从设备或官方渠道获取MStar固件文件,通常是一个.bin或.img文件。 2. 使用解包工具:使用专门的解包工具,如MStar Firmware Tool,将固件文件解包成可读取的格式。这些工具通常提供了命令行或图形界面的方式来执行解包操作。 3. 分析解包后的文件:解包后,您将得到一系列的文件和文件夹。其中包含了设备的操作系统、应用程序、资源文件等。您可以通过分析这些文件来了解固件的结构和内容。 要打包MStar固件,您可以按照以下步骤进行操作: 1. 准备修改后的文件:根据您的需求,修改解包后的文件,可以是替换应用程序、修改配置文件等。 2. 使用打包工具:使用相应的打包工具,如MStar Firmware Tool,将修改后的文件打包成固件格式。这些工具通常提供了命令行或图形界面的方式来执行打包操作。 3. 生成新的固件文件:打包完成后,您将得到一个新的固件文件,通常是一个.bin或.img文件。该文件包含了您所做的修改。 需要注意的是,解包和打包MStar固件需要使用专门的工具,并且对固件结构和文件格式有一定的了解。此外,修改固件可能会涉及到设备的安全性和稳定性问题,请谨慎操作并确保您有足够的技术知识和经验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

知行电子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值