SMP865X广告机之XENV

    技术2026-06-07  3

    /*******************************************************************• 此文章解释权归windsome所有,如要转载无须联系本人。• 转载需要包含此抬头信息,如有疑问,欢迎联系本人。• QQ: 35327864• msn: fgwf1@hotmail.com• mail: agooou@gmail.com ********************************************************************/smp8652, smp8653, smp8654, smp8655

    XENV是SMP863X及之后SMP865X用来保存参数的数据结构,最大大小为64K。每条记录都是可变大小的,用Key-value方式保存数据,特别类似windows的注册表结构。结构如下:0-3 :4个字节,envSize4-23:20个字节,SHA1值(对除前24字节的内容做的SHA值)24--:具体的记录其中第二部分SHA值对于不同的系统和不同的SHA算法可能不一样的,比如我的smp8652就是32个字节。具体记录就从36开始了。xenv项结构:0-2:2个字节,其中最高4位表示属性(XENV_ATTR_RW/XENV_ATTR_RO/XENV_ATTR_OTP之一),剩余位表示此项的字节数(包含此2个字节)。key:项名,字符串,以0结尾value:值,可以是整数,可以是数组XENV存储块:1,内部串行flash中(sxenv),最大为4K。xos用来存储sector ownership and binding information,以及xmboot使用。2,外部flash(zxenv),最大为16K。存储在外部flash的开头。(SMP8634是在NOR中,8644/8654是在NAND中)3,可读写loacalram(lwxenv),最大为628字节。在8654/8644的local RAM(8634没有),保存数据结构的地址,并用于processors和DSPs/RISCs之间通讯。4,只读localram(lrxenv),最大为628字节。在8654/8644的local RAM(8634没有),保存数据结构的地址,并用于processors和DSPs/RISCs之间通讯。XENV的命名方式:x.* 被xos解析y.* YAMON解析,会被解析成YAMON的环境变量z.* zbootl.* Linuxw.* WindowsCElrrw.* and lrro.* 在local ram中a.* 通用必须使用的keys。。。。。。。。。zxenv块:位于外部flash,最大为16K,SMP8644/SMP8654在nand中,任何时候内存中有一个备份。通过LR_ZBOOTXENV_LOCATION (GR32 0x61994)可以得到存储地址。配置文件及XENV定制:    你可以在ezboot (smp86xx_ezboot_0x90.tar.bz2)包中同时编译ezboot(stage1 bootloader)和XENV,并且2者将组合成一个physical block#0 image(因为NAND的擦除单位为128K,而XENV才16K,2者合并还不足128K)。    配置文件是文本文件格式,在smp86xx_ezboot_0x90/xos/xboot2/xmasboot/configs/中。其中有几个主配置文件:SMP8644.config, SMP8652.config 和 SMP8654.config。其他都是基于这些文件的patch。xos keys:8634独有:x.pll.0.pll = 0x01010062 x.mux = 0x501 8644/8654独有:PLL-releted......CPU/System clock    LR_XOS_F_SYS_HZ(GR32 0x61f7c)读取当前频率ddr setting......Memory Attribution and Dimensioning:有一部分zxenv的键值被ezboot解析到lwxenv的键。z.log2_xpu0_size=22 z.log2_xpu1_size=21 z.dsp0_size=1818624 z.dsp1_size=540672 z.zdata0_size=16384 z.uzdata0_size=49152 z.zdata1_size=32768 z.uzdata1_size=81920z.ruamm0_offset=0x42233 z.ruamm1_offset=143333333 z.xos_public_mm=1 z.log2_xos_public_size=17 z.channel_index_mm=1z.ih_api_mm=1z.ih_api_maxsize=0x00010000z.ios_mm=0 z.ios_size=7000001 Stage1:x.boot = 0x5800 (offset from NAND phyblock#0) z.stage1_ga = 0x81600000z.boot0 = 0x00080000z.interactive_boot_idx_sel = 1z.default_boot = 0z.splashscreen_enabled = 1具体内容请看英文文档

     

    如何解析xenv内容请看:

    http://blog.csdn.net/fgwf1/archive/2011/03/31/6290788.aspx

    最新回复(0)