CM-T3530: WinCE: Updater
Contents
Introduction
The CM-T3530 Updater Framework is based on general CompuLab Updater framework for Windows CE.
The CM-T3530 demo image installation flow is described in Getting Started Guide. This article presents an overview of the CM-T3530 target media layout, Updater application installation flow and the demo image installation XML script located in LiveDisk\script.xml
Updater Customization for CM-T3530
Target Media Layout
The WinCE demo image requires the following logical layout of the CM-T3530 512 MB NAND flash:
- boot section (CMT35-nand.raw) that contains bootstrap, bootloader and bootloader parameters
- 4 copies of XLDR (CM-T3530 bootstrap)
- Eboot (CM-T3530 bootloader)
- Eboot parameters (at offset 0xBF800)
- splashscreen parameters (at offset 0xBF900)
- splashscreen (at offset 0xC0000)
- MBR
- BINFS partition (for NK.bin)
- TFAT partition for user data storage
The above layout settings are defined in the <target_storage> sections of the installation script.
Please refer to Target storage XML section description for the XML syntax details |
Update Flow
The Updater application invokes the following actions according to the <actions> section of the installation script.xml:
- Reserve 10 blocks at the end of NAND (used to compensate bad block variations among different NAND chips)
- Store and reserve bootstrap, bootloader and bootloader parameters (CMT35-nand.raw)
- Store and reserve splashscreen
- Erase non reserved NAND area including existing OS partitions
- Create MBR
- Create BINFS partition for NK.bin storage
- Create user data partition
- Format user data partition with TFAT
- Store NK.bin file into BINFS partition
- Update splashscreen parameters (optional)
See Update flow actions XML section for the XML syntax details |
Demo Image Installation XML Script
<updater version="1.0.0.99"> <source_storage> <access_information> <device_type>SD</device_type> <device_name>DSK1:</device_name> <mount_path>\Storage Card</mount_path> </access_information> <logger_information> <updater_logger> <file_name>updater_log.txt</file_name> <append_log>false</append_log> <verbosity>debug</verbosity> </updater_logger> <system_logger> <file_name>system_log.txt</file_name> <append_log>false</append_log> </system_logger> </logger_information> </source_storage> <target_storage> <device id="nand1"> <config type="nand" chipid="0" sectorsize="0x800" blocksize="0x20000" length="detected"></config> <region id="boot_region"> <config type="boot" start="0x0" alignment="blocksize"></config> <entity id="boot_content"> <config type ="raw" offset="0x0000" length="0xC0000" alignment="blocksize"></config> <source file="CMT35-nand.raw" format="raw"></source> </entity> <entity id="boot_parameters"> <config type ="raw" offset="0xBF800" length="0x800" alignment="sectorsize"></config> </entity> <entity id="splashscreen"> <config type ="raw" length="auto" alignment="blocksize"></config> <source file="splashscreen.bmp" format="raw"></source> </entity> </region> <region id="os_region"> <config type="os" alignment="blocksize"></config> <source file="os_region.nb0" format="raw"></source> <entity id="os_partition_table"> <config type="partition_table"></config> </entity> <entity id="partition_nk"> <config type="partition" name="nk" length="auto" reserve="10%" alignment="sectorsize"></config> <source file="nk.bin" format="bin"></source> </entity> <entity id="partition_system"> <config type="partition" name="system" alignment="sectorsize"></config> </entity> </region> <!-- Compensate for bad blocks variance among differnt NAND chips --> <region id="reserve_region"> <config type="reserve" length="blocksize" replication="10" alignment="blocksize"></config> </region> </device> </target_storage> <actions> <action type="reserve"> <target id="reserve_region" alignment="blocksize"></target> <params oem_attribute="reserved_readonly"></params> </action> <action type="store" subtype="raw"> <target id="boot_content"></target> <params block_status="reserved" oem_attribute="reserved_readonly"></params> </action> <action type="store" subtype="raw"> <target id="splashscreen"></target> <params block_status="reserved" oem_attribute="reserved_readonly"></params> </action> <action type="erase"> <target id="os_region"></target> </action> <action type="partition_create"> <target id="partition_nk"></target> <params part_type="bootsection" active="false"></params> </action> <action type="partition_create"> <target id="partition_system"></target> <params part_type="dos32_fat" active="false"></params> </action> <action type="store" subtype="raw"> <target id="partition_nk"></target> </action> <action type="update_parameter" subtype="offset"> <target id="boot_parameters"></target> <params param_offset="0x100" param_length="4" param_value="0x4c434453" param_type="number"></params> <!-- Signature--> <params param_offset="0x104" param_length="4" param_value="0x280" param_type="number"></params> <!-- Height--> <params param_offset="0x108" param_length="4" param_value="0x1e0" param_type="number"></params> <!-- Width--> <params param_offset="0x10C" param_length="4" param_value="0x20" param_type="number"></params> <!-- HorizontalSyncPulseWidth--> <params param_offset="0x110" param_length="4" param_value="0x0" param_type="number"></params> <!-- HorizontalSyncPolarity--> <params param_offset="0x114" param_length="4" param_value="0x17" param_type="number"></params> <!-- HorizontalBackPorch--> <params param_offset="0x118" param_length="4" param_value="0x8" param_type="number"></params> <!-- HorizontalFrontPorch--> <params param_offset="0x11C" param_length="4" param_value="0x1" param_type="number"></params> <!-- VerticalSyncPulseWidth--> <params param_offset="0x120" param_length="4" param_value="0x0" param_type="number"></params> <!-- VeritcalSyncPolairty--> <params param_offset="0x124" param_length="4" param_value="0x3" param_type="number"></params> <!-- VerticalBackPorch--> <params param_offset="0x128" param_length="4" param_value="0x4" param_type="number"></params> <!-- VerticalFrontPorch--> <params param_offset="0x12C" param_length="4" param_value="0x17D7840" param_type="number"></params> <!-- PixelClockFrequency--> <params param_offset="0x130" param_length="4" param_value="0x1" param_type="number"></params> <!-- PixelClockPolarity--> <params param_offset="0x134" param_length="4" param_value="0x0" param_type="number"></params> <!-- IsDVIEnabled--> </action> </actions> </updater>
See Updater Application XML section for the XML syntax details |