SlideShare uma empresa Scribd logo
1 de 16
Baixar para ler offline
Application Note
5065
2 July 2010
                        Production Programming of
120-5065-000A
                        EM35x Chips
                        This document describes the flash programming interface of EM35x chips, and is intended for
                        production programming of chips on a manufacturing line. The description assumes all chips
                        being programmed are new from the distributor and have never been programmed before,
                        but may still contain test code in the MFB. The process described in this document is
                        intended to program a final, fixed image and is not intended for use during application
                        development. This document also assumes the connection between the chip being
                        programmed and the programmer is reliable and error free.

                        Contents
                        Introduction .................................................................................................. 3

                        Pin Connections ............................................................................................. 3

                        Serial Wire and JTAG Interface ........................................................................... 5

                        Memory Organization ....................................................................................... 6

                          Flash ........................................................................................................ 6

                          RAM ......................................................................................................... 7

                        Description and Creation of Programming Image ...................................................... 7

                          File Format ................................................................................................ 7

                          Creation of a Programming Image ..................................................................... 8

                        Programming Overview ..................................................................................... 8

                        Programming Details ........................................................................................ 8

                          Power up and CPU Capture ............................................................................. 8

                          Install and Execute Flashloader Firmware ............................................................ 9

                          Disable Read/Write Protection ......................................................................... 9

                          Mass Erase MFB .......................................................................................... 10

                          Program MFB ............................................................................................. 10

                          Program CIB .............................................................................................. 10

                          Final Verification ........................................................................................ 10
 Ember Corporation
                        Gang Programming ......................................................................................... 10
 47 Farnsworth Street
 Boston, MA 02210       Serialization ................................................................................................. 10
 +1 (617) 951-0200
 www.ember.com
ARM® CortexTM-M3 CPU Manipulation Details .......................................................... 11

  Halting Core Reset ...................................................................................... 11

  Stack Pointer Write ..................................................................................... 11

  Program Counter Write ................................................................................. 11

  Single Step ................................................................................................ 11

  Run......................................................................................................... 11

Flashloader Firmware Timing ............................................................................ 11

Flashloader Firmware and Interface .................................................................... 12
Page 3




Introduction            Production programming of flash on EM35x chips is accomplished using flashloader firmware.
                        The programmer communicates with the chip using the Serial Wire and JTAG Interface (SWJ).
                        The SWJ allows the programmer to read from any address and write to any RAM or register
                        address. The SWJ is used to install, execute, and communicate with the flashloader firmware
                        in RAM. The flashloader performs all of the flash manipulation operations using a simple set
                        of commands that operate on shared memory buffers. This application note focuses on the
                        use of the flashloader firmware to manipulate flash contents, how the flashloader should be
                        used in a production programming environment, and the issues surrounding flashloader use
                        including program image, gang programming, and serialization.

Pin Connections         Table 1 lists all of the EM35x pins, their names, and their descriptions as they apply to
                        production programming. Refer to the EM35x Datasheet (120-035X-000) for further
                        information on the chip’s pins and all of their functionality.

                                 Part orientation errors may be detected by monitoring VREG_OUT after the part is
                                 released from reset during the Power up and CPU Capture step. Once nRESET is
                                 released, the 1.8 V plane sourced by VREG_OUT on Pin 15 of the EM35x should
                                 stabilize between 1.7 and 1.9 volts. If the voltage measured is outside of this range,
                                 a wrong orientation error should be indicated.




Production Programming of EM35x Chips                                                                120-5065-000A
Page 4




                        Table 1. Programming Pin Usage

                         EM35x    Name            Description
                          Pin
                        1         VDD_24MHZ       1.8 V supply
                        2         VDD_VCO         1.8 V supply
                        3         RF_P            Not required for programming
                        4         RF_N            Not required for programming
                        5         VDD_RF          1.8 V supply
                        6         RF_TX_ALT_P     Not required for programming
                        7         RF_TX_ALT_N     Not required for programming
                        8         VDD_IF          1.8 V supply
                        9         NC              Do not connect
                        10        VDD_PADSA       1.8 V supply
                        11        PC5             Not required for programming
                        12        nRESET          Active low chip reset (internal pull-up)
                        13        PC6             Not required for programming
                        14        PC7             Not required for programming
                        15        VREG_OUT        Regulator output (1.8 V)
                        16        VDD_PADS        2.1-3.6 V pads supply
                        17        VDD_CORE        1.25 V digital core supply decoupling
                        18        PA7             Not required for programming
                        19        PB3             Not required for programming
                        20        PB4             Not required for programming
                        21        PA0             Not required for programming
                        22        PA1             Not required for programming
                        23        VDD_PADS        2.1-3.6 V pads supply
                        24        PA2             Not required for programming
                        25        PA3             Not required for programming
                        26        PA4             Not required for programming
                        27        PA5             Not required for programming
                        28        VDD_PADS        2.1-3.6 V pads supply
                        29        PA6             Not required for programming
                        30        PB1             Not required for programming
                        31        PB2             Not required for programming
                        32        SWCLK           Serial Wire clock input/output with debugger
                                                  Selected when in Serial Wire mode (see JTMS description, Pin
                                                  35)
                                  JTCK            JTAG clock input from debugger
                                                  Selected when in JTAG mode (default mode, see JTMS
                                                  description, Pin 35)
                                                  Internal pull-down is enabled
                        33        JTDO            JTAG data out to debugger
                                                  Selected when in JTAG mode (default mode, see JTMS
                                                  description, Pin 35)




Production Programming of EM35x Chips                                                        120-5065-000A
Page 5




                         EM35x    Name             Description
                          Pin
                        34        JTDI             JTAG data in from debugger
                                                   Selected when in JTAG mode (default mode, see JTMS
                                                   description, Pin 35)
                                                   Internal pull-up is enabled
                        35        JTMS             JTAG mode select from debugger
                                                   Selected when in JTAG mode (default mode)
                                                   JTAG mode is enabled after power-up or by forcing nRESET
                                                   low
                                                   Select Serial Wire mode using the ARM-defined protocol
                                                   through a debugger
                                                   Internal pull-up is enabled
                                  SWDIO            Serial Wire bidirectional data to/from debugger
                                                   Enable Serial Wire mode (see JTMS description)
                                                   Select Serial Wire mode using the ARM-defined protocol
                                                   through a debugger
                                                   Internal pull-up is enabled
                        36        PB0              Not required for programming
                        37        VDD_PADS         2.1-3.6 V pads supply
                        38        PC1              Not required for programming
                        39        VDD_MEM          1.8 V supply
                        40        JRST             JTAG reset input from debugger
                                                   Selected when in JTAG mode (default mode, see JTMS
                                                   description)
                                                   Internal pull-up is enabled
                        41        PB7              Not required for programming
                        42        PB6              Not required for programming
                        43        PB5              Not required for programming
                        44        VDD_CORE         1.25 V digital core supply decoupling
                        45        VDD_PRE          1.8 V supply
                        46        VDD_SYNTH        1.8 V supply
                        47        OSCB             24 MHz crystal oscillator or left open when using external
                                                   clock input on OSCA
                        48        OSCA             24 MHz crystal oscillator or external clock input. External
                                                   clock input is a 1.8 V square wave.
                        49        GND              Ground supply pad in the bottom center of the package forms
                                                   Pin 49. See Ember’s various EM35x Reference Design
                                                   documentation for PCB considerations.



Serial Wire and         The EM35x includes a standard Serial Wire and JTAG (SWJ) Interface. Serial Wire is an ARM®
JTAG Interface          standard, bi-directional, two-wire protocol designed to replace JTAG, and provides all the
                        normal JTAG debug and test functionality. JTAG is a standard five-wire protocol providing
                        debug and test functionality. In addition, the two Serial Wire signals (SWDIO and SWCLK) are
                        overlaid on two of the JTAG signals (JTMS and JTCK). This keeps the design compact and
                        allows tools to switch between Serial Wire and JTAG as needed, without changing pin
                        connections. Therefore, a programmer interfacing with the EM35x may choose Serial Wire or
                        JTAG as desired.



Production Programming of EM35x Chips                                                              120-5065-000A
Page 6




                        The key functionality that the SWJ provides is the ability to read and write 8, 16, and 32 bit
                        quantities to absolute memory addresses in the chip. The programmer uses standard memory
                        reads and writes to access a small selection of memory-mapped registers, as well as to load
                        and interact with the RAM-based flashloader. All memory reads and writes used during
                        production programming are 32 bit.

                        The details of the Serial Wire and JTAG protocols, as well as the debug port and access port
                        in the EM35x that implement the SWJ, are beyond the scope of this document. Since Serial
                        Wire and JTAG are standard protocols, they are described in other ARM® documents. For
                        further information on the SWJ, refer to the ARM® CoreSightTM Components Technical
                        Reference Manual (DDI 0314C). This document is available from ARM’s Infocenter website,
                        http://infocenter.arm.com, and Ember support.


                            Note: The maximum clock speed of the SWJ, as seen on the SWCLK/JTCK pin, is
                            2.5 MHz.


Memory                  This discussion on the EM35x flash and RAM organization is derived from the EM35x Datasheet
Organization            (120-035X-000) and highlights specific aspects of the flash especially relevant to production
                        programming. Refer to the EM35x Datasheet (120-035X-000) for complete details of the flash
                        and RAM, including memory layout diagrams.

                        Flash
                        The EM35x flash memory is divided into three separate blocks:

                        •     Main Flash Block (MFB) – The MFB is the largest block of flash and holds the executable
                              image being programmed into the device. The MFB begins at address 0x08000000. The
                              MFB on EM351 chips is 128 kB large; therefore the top of the MFB on EM351 chips is
                              0x0801FFFF. The MFB on EM357 chips is 192kB large; therefore the top of the MFB on
                              EM357 chips is 0x0802FFFF.

                        •     Fixed Information Block (FIB) – The FIB stores manufacturing data that is fixed by Ember
                              during chip production and is not writable.

                        •     Customer Information Block (CIB) – The CIB stores customer data that is not executable,
                              including manufacturing tokens. The first eight half-words of the CIB are dedicated to
                              special storage called option bytes. Option bytes are tied directly to certain chip
                              behavior including read protection and write protection of flash. The CIB is identical on
                              EM351 and EM357 chips and is 2 kB large. The bottom of the CIB is address 0x08040800
                              and the top is 0x08040FFF.

                        The flashloader executing on chip will validate the addresses being programmed and indicate
                        an invalid address error if the programmer attempts to modify invalid addresses. All
                        addresses are referred to as full 32 bit absolute addresses. The smallest writable unit of flash
                        is a half-word, 16 bits, and the smallest erasable unit of flash is a page, 2 kB. The erased
                        state of flash is 0xFFFF. Flash can be read in 8, 16, and 32 bit quantities.

                        While it is possible to erase the MFB one page at a time and therefore erase only a subset of
                        the MFB, it is recommended that production programming always starts by performing a mass
                        erase of the MFB. This ensures the MFB is put into a clean state and saves time, since the
                        mass erase takes the same amount of time as a single page erase.




Production Programming of EM35x Chips                                                                120-5065-000A
Page 7




                          Note: Mass erase erases only the MFB, and erases the entire MFB.


                        The eight option bytes at the bottom of the CIB have special behavior that differs from all
                        other flash. The chip’s flash interface requires that each option byte be written with a
                        companion byte that is the inverse of the option byte. Therefore, a single option byte
                        requires writing a full 16 bit, structured quantity. One of the option bytes configures flash
                        read protection and two (EM351) or three (EM357) option bytes control flash write
                        protection. Refer to the EM35x Datasheet (120-035X-000) for complete details of the option
                        bytes.


                          Note: Because the option bytes configure flash read and write protection, special care
                          must be taken when manipulating the option bytes. Read and write protection, as
                          defined by the option bytes, is only updated when the nRESET pin is asserted and the
                          chip is reset. Therefore, it is valid to erase and write read and write protection and
                          then manipulate other flash as long as the nRESET pin is not asserted. Once read
                          protection or write protection is set and nRESET is asserted, no further flash read or
                          write operations should be attempted, except for disabling read or write protection (by
                          reprogramming the option bytes).

                          Note: Read protection is only disabled by writing the value 0xA5 to the read protection
                          byte. Any other value, including the erased state of 0xFF, will enable read protection.

                          Note: It is the programming image creator’s responsibility to ensure any option bytes
                          being programmed contain the correct inverse option byte value. If the inverse option
                          byte is not correct, the programming operation will fail verification.


                        RAM
                        The EM35x RAM memory exists as a single block of memory. The bottom of the RAM is address
                        0x20000000 and the top of the RAM is address 0x20002FFF. The flashloader s37 image file
                        does not define a value for every byte in the RAM, but does define an address and value for
                        every byte that must be programmed. Any byte in RAM that is not defined by the flashloader
                        s37 image file may be left in any state.

                        While RAM is executable, it does not execute out of reset. Therefore, one of the
                        programming steps defines how to capture the CPU and execute the flashloader after the
                        flashloader has been written into RAM.

Description and         File Format
Creation of             Production programming uses the standard Intel HEX-32 file format. The normal development
Programming             process for EM35x chips involves creating and programming images using the Motorola S-
Image                   record file format, specifically the S37 file format. The s37 files are intended to hold
                        applications, bootloaders, manufacturing data, and other information to be programmed
                        during development. The s37 files, though, are not intended to hold a single image for an
                        entire chip. For example, it is often the case that there is an s37 file for the bootloader, an
                        s37 file for the application, and an s37 file for manufacturing data. Since production
                        programming is primarily about installing a single, complete image with all the necessary
                        code and information, the file format used is Intel HEX-32 format. While s37 and hex files are
                        functionally the same – they simply define addresses and the data to be placed at those
                        addresses – Ember has adopted the conceptual distinction that a single hex file contains a
                        single, complete image often derived from multiple s37 files.




Production Programming of EM35x Chips                                                               120-5065-000A
Page 8




                        Since no special addressing or programming is used with EM35x chips, standard hex file
                        formats are used and can be interpreted without extra knowledge. All bytes in flash have
                        their own absolute 32 bit address. There is no strict requirement that a hex image defines
                        every byte to be programmed on a chip. If a byte must be programmed and is not defined by
                        the hex image, the byte should be programmed to the erased state, 0xFF. Any byte that is
                        not programmed will be left in the erased state, 0xFF, when programming is complete, due
                        to the fact that a mass erase is performed and the CIB is page erased. The only restriction is
                        that the smallest writable quantity is 16 bits. The addresses of any data provided to the
                        flashloader must be 16 bit aligned, and the data must be multiples of 16 bits.

                        Creation of a Programming Image
                        Programming images in the hex format are created from the standard em3xx_load.exe
                        development tool, which is part of the ISA3 Utilities. The ISA3 Utilities are part of the
                        EmberZNet 4.0 or later stack release. The em3xx_load.exe tool is very versatile and capable
                        of generating hex files from a variety of sources. The sources include multiple s37 files,
                        existing chips, and manual file patching operations. Ultimately, em3xx_load.exe allows the
                        developer to merge a variety of sources into a final hex image and modify individual bytes in
                        that image if necessary.

Programming             The Programming Details section is organized in the general programming flow. The basic
Overview                production programming flow is as follows:

                        1.   Power up and CPU Capture
                        2.   Install and Execute Flashloader Firmware
                        3.   Disable Read/Write Protection
                        4.   Power up and CPU Capture
                        5.   Install and Execute Flashloader Firmware
                        6.   Mass Erase MFB
                        7.   Program MFB
                        8.   Program CIB
                        9.   Final Verification
                        If the Program CIB step enables read or write protection, the new protection setting will not
                        take effect until the chip is next reset by either asserting the nRESET pin or performing a
                        standard power-on-reset. Therefore, the programming flow does not have to worry about
                        flash protection because protection will not take effect until production programming has
                        completed.
Programming             This section details all of the individual steps that comprise the complete production
Details                 programming process.


                          Note: The numerical values provided in these programming steps are values intrinsic to
                          the EM35x chip and will never change. The names in all capital letters are values tied to
                          a specific flashloader image and are defined in the header files that accompany the
                          flashloader s37 image file.


                        Power up and CPU Capture
                        1.   Apply power while nRESET is held low.
                        2.   Hold nRESET low and wait 10 µs after power has stabilized.




Production Programming of EM35x Chips                                                               120-5065-000A
Page 9




                        3.   Do not release nRESET less than 30 µs after asserting nRESET.
                        4.   While nRESET is low, logically attach the programmer to the SWJ by setting the
                             CDBGPWRUPREQ and CSYSPWRUPREQ signals defined by ARM®.
                        5.   Release nRESET and wait 100 µs.
                        6.   Validate the SWJ communications path is operational by reading the Silicon ID at address
                             0x40004000 and verifying this value is 0x069A962B.
                        7.   Perform a standard ARM® CortexTM-M3 CPU Halting Core Reset.

                        Install and Execute Flashloader Firmware
                        1.   Write the value 0x00000307 to the address 0x40000018.
                        2.   Write the entire flashloader firmware image to the chip’s RAM. The flashloader image is
                             a standard s37 file format indicating what bytes to write and the 32-bit absolute
                             addresses to write to in the memory map.
                        3.   Read the flashloader firmware image from RAM to verify the flashloader is installed
                             properly.
                        4.   Write the address of the bottom of RAM, 0x20000000, to the address 0xE000ED08.
                        5.   Write the stack pointer value to the CPU’s stack pointer register, R13, using a standard
                             ARM® CortexTM-M3 CPU Stack Pointer Write. The stack pointer value is a literal, 32-bit
                             number named STACK_POINTER_INIT, and is defined with the flashloader image.
                        6.   Write the program counter value to the CPU’s program counter register, R15, using a
                             standard ARM® CortexTM-M3 CPU Program Counter Write. The program counter value is a
                             literal, 32-bit number named PROGRAM_COUNTER_INIT, and is defined with the
                             flashloader image.
                        7.   Perform a standard ARM® CortexTM-M3 CPU Single Step.
                        8.   Using a CPU Stack Pointer Write, rewrite the stack pointer with the STACK_POINTER_INIT
                             literal.
                        9.   Using a CPU Program Counter Write, rewrite the program counter with the
                             PROGRAM_COUNTER_INIT literal.
                        10. Clear the flashloader’s command and status shared memory by writing 0x00000000 to
                            SHAREDMEM_COMMAND and SHAREDMEM_STATUS, defined with the flashloader image.
                        11. Perform a standard ARM® CortexTM-M3 CPU Run.
                        12. Read from SHAREDMEM_COMMAND, until this address contains the value COMMAND_IDLE.
                        13. Read from SHAREDMEM_STATUS, until this address contains the value STATUS_BOOTED.

                        Disable Read/Write Protection
                        1.   Initiate disabling of read protection by writing the value COMMAND_DISABLE_RDPROT to
                             SHAREDMEM_COMMAND. This inherently disables write protection as well.
                        2.   Read from SHAREDMEM_COMMAND, until this address contains the value COMMAND_IDLE.
                        3.   Read from SHAREDMEM_STATUS. If SHAREDMEM_STATUS does not contain the value
                             STATUS_SUCCESS, the operation failed and the chip should be recorded as failed.
                        4.   Repeat the step Power up and CPU Capture.
                        5.   Repeat the step Install and Execute Flashloader Firmware.




Production Programming of EM35x Chips                                                               120-5065-000A
Page 10




                        Mass Erase MFB
                        1.   Initiate a mass erase by writing the value COMMAND_MASS_ERASE to
                             SHAREDMEM_COMMAND.
                        2.   Read from SHAREDMEM_COMMAND, until this address contains the value
                             COMMAND_IDLE.
                        3.   Read from SHAREDMEM_STATUS. If SHAREDMEM_STATUS does not contain the value
                             STATUS_SUCCESS, the operation failed and the chip should be recorded as failed.

                        Program MFB
                        The target flash address must be 16 bit aligned. A minimum of 16 bits and a maximum of 2 kB
                        of data may be written in a single program command.

                        Loop over all MFB data, programming a block, at most 2kB, per program command:

                        1.   Write the starting address for this block to SHAREDMEM_DATAADDRESS.
                        2.   Write the data to be installed into flash to SHAREDMEM_DATABUFFER.
                        3.   Write the size, in bytes, of the block of data to be programmed to
                             SHAREDMEM_DATALENGTH. This size must be a multiple of 16 bits.
                        4.   Initiate a write operation by writing the value COMMAND_PAGE_WRITE to
                             SHAREDMEM_COMMAND.
                        5.   Read from SHAREDMEM_COMMAND, until this address contains the value COMMAND_IDLE.
                        6.   Read from SHAREDMEM_STATUS. If SHAREDMEM_STATUS does not contain the value
                             STATUS_SUCCESS, the operation failed and the chip should be recorded as failed.

                        Program CIB
                        Programming the CIB follows the same sequence of steps described in Program MFB.

                        Final Verification
                        After programming activities have completed, the programmer should directly readout all
                        MFB and CIB addresses and verify those addresses match the data in the source hex image.
                        Addresses not defined by the hex image should be verified as still being in the erased state,
                        0xFF.

                        At this point, production programming is complete.

Gang                    Because the production programming process described in this document relies on the SWJ
Programming             interface and uses a lot of handshake style communication with the chip, it is impractical to
                        share GPIO between EM35x chips and drive multiple chips from a single controller. Because
                        the Serial Wire interface uses a single bidirectional data line for all communications, it is not
                        possible to tie the SWDIO pin from multiple chips together, and therefore each chip must be
                        controlled independently. It is possible to link multiple chips together in a standard JTAG
                        scan chain configuration and access memory on each chip individually. In theory, it might be
                        possible to tie the JTAG interface of multiple chips together, as long as the controller can
                        still access the JTDO pin of each chip individually. Ember has not attempted this mode of
                        operation, cannot say if it will or will not work, and cannot say if it is practical.

Serialization           The EM35x comes pre-programmed with an EUI64 when shipped from the factory. This Ember
                        EUI64 exists in the FIB and is not modifiable. It may, however, be desirable for a customer to
                        override the default EUI64 with their own unique serial numbers for each chip, or set other



Production Programming of EM35x Chips                                                                 120-5065-000A
Page 11




                        per-chip unique manufacturing tokens. This can be done by customizing the CIB programming
                        so that the values to be written to flash are taken from some other source, such as a
                        database, in addition to the programming image.

                        Details of pre-defined manufacturing tokens in the CIB are available in Ember application
                        notes and HAL source header. Refer to Bringing Up Custom Devices for the EM35x SoC
                        Platform (120-5064-000), Setting Manufacturing Certificates and Installation Codes (120-5058-
                        000), and hal/micro/cortexm3/token-manufacturing.h. These documents are available from
                        Ember support.

ARM® CortexTM-M3        The following sections give an overview of the basic CPU manipulation necessary to
CPU Manipulation        accomplish production programming. The CPU manipulation is standard CortexTM-M3
Details                 functionality. Refer to the ARM CortexTM-M3, r1p1, Technical Reference Manual (DDI 0337D)
                        for all the necessary details. Specifically, the Core Debug chapter and the Nested Vectored
                        Interrupt Controller chapter of the Technical Reference Manual describe the registers needed
                        and how to use them. This document is available from ARM’s Infocenter website,
                        http://infocenter.arm.com, and Ember support.

                        Halting Core Reset
                        While a pin reset – asserting nRESET – is used during powerup to reset the entire chip, this
                        type of reset leaves the CPU executing code. The purpose of the Halting Core Reset is to
                        reset the CPU and leave the CPU in a halted state at the reset vector so no code is executed.
                        The Debug Exception and Monitor Control Register provides a means of halting the running
                        system if a core reset occurs. The Application Interrupt Register provides a means of
                        resetting the system while the reset vector catch is enabled.

                        Stack Pointer Write
                        The Core Debug registers are used to write the Stack Pointer to a specific value.

                        Program Counter Write
                        The Core Debug registers are used to write the Program Counter to a specific value.

                        Single Step
                        The Core Debug registers are used to perform a single step of the CPU.

                        Run
                        The Core Debug registers are used to halt and run the CPU.

Flashloader             Table 2 shows the timing of the flashloader commands. The timing was measured on-chip,
Firmware Timing         from the moment the flashloader left the idle state, COMMAND_IDLE, until the flashloader
                        returned to the idle state.

                          Note: The timing of COMMAND_PAGE_WRITE is for the worst case scenario. The worst
                          case scenario is defined as writing a full 2 kB of data where all data is 0x0000.




Production Programming of EM35x Chips                                                                 120-5065-000A
Page 12




                        Table 2. Flashloader Firmware Timing

                             Flashloader command          Execution time of command
                        COMMAND_MASS_ERASE                109 ms
                        COMMAND_PAGE_ERASE                21 ms
                        COMMAND_PAGE_WRITE                56 ms
                        COMMAND_DISABLE_RDPROT            21 ms



Flashloader             The following are the three files that define the flashloader firmware and the interface with
Firmware and            the firmware. While these three files are added to the document here, the latest versions are
Interface               available to download from the developer support site.

                        •     flashloader-cmd-stat.h defines the COMMAND and STATUS values used when interacting
                              with the flashloader.

                        •     flashloader-em35x.h defines the memory addresses used when interacting with the
                              flashloader.

                        •     flashloader-em35x.s37 is Motorola S-record file that defines the actual flashloader
                              firmware that is to be loaded into and executed from RAM.

                        The following is the flashloader-cmd-stat.h file:


                            /*
                             * Header file for flashloader-<micro>.[h|s37], defining the command
                             * and status values needed in order to interact with the flashloader.
                             *
                             */
                            #ifndef __FLASHLOADER_CMD_STAT_H__
                            #define __FLASHLOADER_CMD_STAT_H__

                            #define   COMMAND_IDLE                  0xC0000001
                            #define   COMMAND_PAGE_ERASE            0xC0000002
                            #define   COMMAND_PAGE_WRITE            0xC0000003
                            #define   COMMAND_DISABLE_RDPROT        0xC0000004
                            #define   COMMAND_MASS_ERASE            0xC0000005
                            #define   STATUS_BOOTED                 0xA0000001
                            #define   STATUS_INVALID_CMD            0xA0000002
                            #define   STATUS_SUCCESS                0xA0000003
                            #define   STATUS_BUSY                   0xA0000004
                            #define   STATUS_VERIFY_ERASE_FAIL      0xA0000005
                            #define   STATUS_PROG_FAIL              0xA0000006
                            #define   STATUS_VERIFY_PROG_FAIL       0xA0000007
                            #define   STATUS_BAD_ADDR_OR_LEN        0xA0000008

                            #endif //__FLASHLOADER_CMD_STAT_H__




                        The following is the flashloader-em35x.h file:


                            /*
                             * Header file for flashloader-em35x.s37, defining the values
                             * needed in order to interface with this flashloader.




Production Programming of EM35x Chips                                                                120-5065-000A
Page 13




                           *
                           * NOTE: This file is autogenerated.             Do NOT edit this file directly.
                           *
                           */
                          #ifndef __FLASHLOADER_SHAREDMEM_H__
                          #define __FLASHLOADER_SHAREDMEM_H__

                          #define   CHIP_NAME                  "EM35X"
                          #define   PROGRAM_COUNTER_INIT       0x20000220
                          #define   STACK_POINTER_INIT         0x20000200
                          #define   SHAREDMEM_COMMAND          0x200027f0
                          #define   SHAREDMEM_DATAADDRESS      0x200027f8
                          #define   SHAREDMEM_DATALENGTH       0x200027fc
                          #define   SHAREDMEM_STATUS           0x200027f4
                          #define   SHAREDMEM_DATABUFFER       0x20002800

                          #endif //__FLASHLOADER_SHAREDMEM_H__




                        The following is the flashloader-em35x.s37 file:


                          S0180000656D3378782D666C6173686C6F616465722E73333735
                          S315200002000002002021020020B5020020B5020020B5
                          S31520000210A70E010100000000000000000000000001
                          S31520000220084840F20731016007480849016072B664
                          S3152000023007480168490849000160064859210160BC
                          S3152000024000F00AB81800004008ED00E00002002087
                          S31520000250FCED00E00080004080B50C480C494FF0D2
                          S31520000260CD3200F021F80B480B490C4A03E050F838
                          S31520000270043B41F8043B9142F9D30948094900223D
                          S3152000028000F012F800F05EFA00BEFEE70000002043
                          S3152000029000020020F4080020EC270020F027002090
                          S315200002A0000000000000000001E040F8042B884216
                          S315200002B0FBD370470348002101604160024803498F
                          S315200002C0016070471C4000400CED00E00400FA0578
                          S315200002D0084809490160094A026041604260AE4906
                          S315200002E001220A604A68D207FCD58168C907FCD476
                          S315200002F0704700BF0480004023016745AB89EFCDDE
                          S3152000030010B50446FFF7E4FFA24A4FF40071DFF868
                          S31520000310BC05022C1BD1022353608368936083683B
                          S31520000320422050601068C007FCD4202010609A48F4
                          S315200003304468A407FCD40024046080205060DFF8C1
                          S3152000034000041468E40615D51021116010BD032C95
                          S315200003500DD14FF408735360DFF888350068DFF855
                          S315200003607845A04200D100214FF41870D9E7DFF874
                          S31520000370640510BD002201E0521C92B28A4205D2C9
                          S3152000038053F8044B14F1010FF6D010BDFCE070B504
                          S31520000390804A53684FF4007454604FF404755560D6
                          S315200003A0DFF8405505EB400001801568ED07FCD4C9
                          S315200003B0202515601568142635420DD010201060B2
                          S315200003C004201060744841688907FCD4002101602C
                          S315200003D080205060534870BD0078884211BFB648CF
                          S315200003E054605360DFF8E80470BD00002DE9F8433F
                          S315200003F0FFF76EFF674C40F201206060DFF8CC54B7
                          S31520000400AE680027DFF8C084DFF8C49402E0B61C8B
                          S31520000410781C87B26048E968B7EB510F33D2318830
                          S3152000042038F817209142F2D038F817104FF6FF729D
                          S315200004309142ECD07900AA688A18DFF8A8349A424B
                          S315200004400DD3AA6889181B4A914208D238F817108A




Production Programming of EM35x Chips                                                           120-5065-000A
Page 14




                          S31520000450C9B2F8B2FFF79BFF4845D8D027E038F855
                          S31520000460171031802168C907FCD42021216021681A
                          S3152000047014221142CBD0102121600421216000F0EA
                          S315200004801BF8284813E000F017F8AE68002701E0B3
                          S31520000490781C87B2E868B7EB500F07D236F8020B04
                          S315200004A038F817108842F3D0834800E04846BDE864
                          S315200004B0F28300BF1008040841688907FCD4002194
                          S315200004C0016080206060704780B5FFF701FF3148EA
                          S315200004D04FF404714160DFF80C144AF2A5520A80E9
                          S315200004E00168C907FCD4202101602B490268142326
                          S315200004F01A420CD01022026004220260802242603E
                          S3152000050048688007FCD400200860064802BD4A6877
                          S315200005109207FCD400220A6080214160DFF8B003F4
                          S3152000052002BD0000060000A010B5FFF7D1FE194954
                          S3152000053004204860442048600868C007FCD4202076
                          S315200005400860154842689207FCD400220260802089
                          S3152000055048607B480A68D20602D510220A6010BD80
                          S315200005604FF00061DFF874231268094B9A1892083D
                          S31520000570002300E05B1C934205D251F8044B14F192
                          S31520000580010FF7D010BD00BFDFF8440310BD00BF38
                          S31520000590010000F80C8000402C40004070B5DFF8C8
                          S315200005A02C43FFF7C1FF6060C94D6068A84225D182
                          S315200005B00020C549A26821F81020401CB0F5806FA4
                          S315200005C0F8D34FF40060E0604FF00060A060C34EA7
                          S315200005D009E0FFF70BFF60606068A8420ED1A068B3
                          S315200005E000F50060A0603068A1688842F1D2FFF76C
                          S315200005F09BFF60606068A84200D1656070BD000006
                          S3152000060008490968C9074CBF4FF4F7614FF4777161
                          S3152000061048434FF47A71B0FBF1F008B1401EFDD18A
                          S31520000620704700BF1C40004070B505460C46434E3F
                          S315200006300820F066F06E000701D4A94870BD356029
                          S31520000640F06E4FF41471084300F038F8F06E4FF452
                          S3152000065080710843F0662046A90747BF4FF6FF7111
                          S3152000066041EA00401349084330670C20FFF7C8FFD2
                          S31520000670F06E40F02000F0661620FFF7C1FFF06E06
                          S3152000068020F02000F0660120FFF7BAFFF06E20F47C
                          S31520000690007000F013F8F06E20F4A870F0660320C6
                          S315200006A0FFF7AEFF0020F0662888A04214BF02485C
                          S315200006B0874870BD0000FFFF070000A0F0660720F6
                          S315200006C09EE738B51D4C0820E066E06E000701D491
                          S315200006D0834832BD7D48816821608568E06E40F0A0
                          S315200006E04000E066E06E40F40160E066FFF7E7FF59
                          S315200006F0E06E4FF480710843E06645F2F050FFF754
                          S315200007007FFFE06E20F40060E066FFF7D8FFE06E22
                          S3152000071020F4A870E0660320FFF772FF0020E06651
                          S3152000072055F8041B11F1010F01D0054832BD401CBC
                          S315200007304FF400718842F3DB654832BD14800040D7
                          S31520000740050000A02DE9F84F5448006880070BD417
                          S315200007505348017841B94178012905D1C07802284A
                          S3152000076002D15E484F4901600024DFF85C814FF6D4
                          S31520000770FF7A00F0B9F8FCDB544EDFF82CB1C6F84E
                          S3152000078000B04A487060DFF8489103E05148706035
                          S31520000790C6F800B030685845FCD045487060B76848
                          S315200007A0F5683E480068800705D530684A49884282
                          S315200007B001D0002030604948006831683D4A891AD6
                          S315200007C008D0491E21D0491E57D0491E5FD0491E48
                          S315200007D060D0DBE7F90701D54148D8E7B7F1006FCC
                          S315200007E005D3B84203D30220FFF78AFDCFE73D4861
                          S315200007F0874204D330488742EED20320F4E72F48BD
                          S315200008008742E9D3FFF75DFFC1E707F0010105F055
                          S315200008100102114302D03248706029E0E919B7F18C




Production Programming of EM35x Chips                                      120-5065-000A
Page 15




                          S31520000820006F05D3401C884202D3FFF7DFFDF3E7B4
                          S315200008302C48874205D32248814205D2FFF7D6FDB0
                          S31520000840EAE71E488742E6D31E488142E3D20024C7
                          S3152000085002E0BF1C641CA4B2B4EB550F08D238F8D2
                          S3152000086014103846FFF7E0FE706070684845F0D0F7
                          S31520000870002400F039F88BDAFBE7FFF725FE03208A
                          S31520000880FFF73EFDFFF720FEC6F8049080E7FFF74E
                          S315200008904BFE7CE7FFF782FE7AE700BF1C80004014
                          S315200008A096070408FFFF0208010000C0010000A00F
                          S315200008B0040000A0020000C0001004080000040884
                          S315200008C0011004080108040800280020F027002051
                          S315200008D0030000A0020000A0040000C0EC270020B6
                          S315200008E0080000A00008040828F814A0641CB4F529
                          S30D200008F0806F7047FFFF01082D
                          S70520000221B7

After reading this      If you have questions or require assistance with the procedures described in this document,
document                contact Ember Customer Support. The Ember Customer Support portal provides a wide array
                        of hardware and software documentation such as FAQ’s, reference designs, user guides,
                        application notes, and the latest software available to download. To obtain support on all
                        Ember products and to gain access to the Ember Customer Support portal, visit
                        http://www.ember.com/support_index.html.




Production Programming of EM35x Chips                                                             120-5065-000A
Copyright © 2006–2010 Ember Corporation. All rights reserved.

The information in this document is subject to change without notice. The statements,
configurations, technical data, and recommendations in this document are believed to be
accurate and reliable but are presented without express or implied warranty. Users must
take full responsibility for their applications of any products specified in this document. The
information in this document is the property of Ember Corporation.

Title, ownership, and all rights in copyrights, patents, trademarks, trade secrets, and other
intellectual property rights in the Ember Proprietary Products and any copy, portion, or
modification thereof, shall not transfer to Purchaser or its customers and shall remain in
Ember and its licensors.

No source code rights are granted to Purchaser or its customers with respect to all Ember
Application Software. Purchaser agrees not to copy, modify, alter, translate, decompile,
disassemble, or reverse engineer the Ember Hardware (including without limitation any
embedded software) or attempt to disable any security devices or codes incorporated in the
Ember Hardware. Purchaser shall not alter, remove, or obscure any printed or displayed legal
notices contained on or in the Ember Hardware.

Ember, Ember Enabled, EmberZNet, InSight, and the Ember logo are trademarks of Ember
Corporation.

All other trademarks are the property of their respective holders.

Mais conteúdo relacionado

Mais procurados

LAPTOP REPAIR TRAINING COURSE DETAIL
LAPTOP REPAIR TRAINING COURSE DETAIL LAPTOP REPAIR TRAINING COURSE DETAIL
LAPTOP REPAIR TRAINING COURSE DETAIL Abdullah Khan
 
AMD PGA 452 Processor VIA KT333/ VT8233A-CE Chipset Winbond 8369 HF-VF LPC I/O
AMD PGA 452 Processor VIA KT333/ VT8233A-CE Chipset Winbond 8369 HF-VF LPC I/OAMD PGA 452 Processor VIA KT333/ VT8233A-CE Chipset Winbond 8369 HF-VF LPC I/O
AMD PGA 452 Processor VIA KT333/ VT8233A-CE Chipset Winbond 8369 HF-VF LPC I/OWrath Of Dragon
 
Basys3 rm
Basys3 rmBasys3 rm
Basys3 rmemicaya
 
Expanding The Micro Blaze System
Expanding  The Micro Blaze  SystemExpanding  The Micro Blaze  System
Expanding The Micro Blaze Systemiuui
 
Honeywell 5828-and-honeywell-5828v-install-guide
Honeywell 5828-and-honeywell-5828v-install-guideHoneywell 5828-and-honeywell-5828v-install-guide
Honeywell 5828-and-honeywell-5828v-install-guideAlarm Grid
 
Introduction to NanoBoard-3000 FPGA
Introduction to NanoBoard-3000 FPGA Introduction to NanoBoard-3000 FPGA
Introduction to NanoBoard-3000 FPGA Premier Farnell
 
9800301 04 8080-8085_assembly_language_programming_manual_may81
9800301 04 8080-8085_assembly_language_programming_manual_may819800301 04 8080-8085_assembly_language_programming_manual_may81
9800301 04 8080-8085_assembly_language_programming_manual_may81satolina
 
Understanding panel drive, gamma, mlg
Understanding panel drive, gamma, mlgUnderstanding panel drive, gamma, mlg
Understanding panel drive, gamma, mlgVikas Deoarshi
 
Wcdma Rno Handover Algorithm Analysis And Parameter Configurtaion Guidance 20...
Wcdma Rno Handover Algorithm Analysis And Parameter Configurtaion Guidance 20...Wcdma Rno Handover Algorithm Analysis And Parameter Configurtaion Guidance 20...
Wcdma Rno Handover Algorithm Analysis And Parameter Configurtaion Guidance 20...guest42b2673
 
Laptop Chip level repairing(CPU section)
Laptop Chip level repairing(CPU section)Laptop Chip level repairing(CPU section)
Laptop Chip level repairing(CPU section)chiptroniks
 
Pcs7 7sj6x 6md63_e_mapping_file
Pcs7 7sj6x 6md63_e_mapping_filePcs7 7sj6x 6md63_e_mapping_file
Pcs7 7sj6x 6md63_e_mapping_fileFTorres Torres
 
Laptop syllabus 1 month
Laptop syllabus 1 monthLaptop syllabus 1 month
Laptop syllabus 1 monthchiptroniks
 
Syllabus 3 month pclr
Syllabus 3 month pclrSyllabus 3 month pclr
Syllabus 3 month pclrchiptroniks
 
Ln multipilot32 connectors_spec rev 2.1
Ln multipilot32 connectors_spec rev 2.1Ln multipilot32 connectors_spec rev 2.1
Ln multipilot32 connectors_spec rev 2.1Roberto Navoni
 
Ht usb5130-v2
Ht usb5130-v2Ht usb5130-v2
Ht usb5130-v2handson28
 

Mais procurados (20)

LAPTOP REPAIR TRAINING COURSE DETAIL
LAPTOP REPAIR TRAINING COURSE DETAIL LAPTOP REPAIR TRAINING COURSE DETAIL
LAPTOP REPAIR TRAINING COURSE DETAIL
 
AMD PGA 452 Processor VIA KT333/ VT8233A-CE Chipset Winbond 8369 HF-VF LPC I/O
AMD PGA 452 Processor VIA KT333/ VT8233A-CE Chipset Winbond 8369 HF-VF LPC I/OAMD PGA 452 Processor VIA KT333/ VT8233A-CE Chipset Winbond 8369 HF-VF LPC I/O
AMD PGA 452 Processor VIA KT333/ VT8233A-CE Chipset Winbond 8369 HF-VF LPC I/O
 
Sv200ma mi1e
Sv200ma mi1eSv200ma mi1e
Sv200ma mi1e
 
Basys3 rm
Basys3 rmBasys3 rm
Basys3 rm
 
Nsk products
Nsk productsNsk products
Nsk products
 
At89c2051 Data sheet
At89c2051 Data sheetAt89c2051 Data sheet
At89c2051 Data sheet
 
Expanding The Micro Blaze System
Expanding  The Micro Blaze  SystemExpanding  The Micro Blaze  System
Expanding The Micro Blaze System
 
Honeywell 5828-and-honeywell-5828v-install-guide
Honeywell 5828-and-honeywell-5828v-install-guideHoneywell 5828-and-honeywell-5828v-install-guide
Honeywell 5828-and-honeywell-5828v-install-guide
 
Introduction to NanoBoard-3000 FPGA
Introduction to NanoBoard-3000 FPGA Introduction to NanoBoard-3000 FPGA
Introduction to NanoBoard-3000 FPGA
 
9800301 04 8080-8085_assembly_language_programming_manual_may81
9800301 04 8080-8085_assembly_language_programming_manual_may819800301 04 8080-8085_assembly_language_programming_manual_may81
9800301 04 8080-8085_assembly_language_programming_manual_may81
 
Understanding panel drive, gamma, mlg
Understanding panel drive, gamma, mlgUnderstanding panel drive, gamma, mlg
Understanding panel drive, gamma, mlg
 
25l8005
25l800525l8005
25l8005
 
Wcdma Rno Handover Algorithm Analysis And Parameter Configurtaion Guidance 20...
Wcdma Rno Handover Algorithm Analysis And Parameter Configurtaion Guidance 20...Wcdma Rno Handover Algorithm Analysis And Parameter Configurtaion Guidance 20...
Wcdma Rno Handover Algorithm Analysis And Parameter Configurtaion Guidance 20...
 
Laptop Chip level repairing(CPU section)
Laptop Chip level repairing(CPU section)Laptop Chip level repairing(CPU section)
Laptop Chip level repairing(CPU section)
 
Pcs7 7sj6x 6md63_e_mapping_file
Pcs7 7sj6x 6md63_e_mapping_filePcs7 7sj6x 6md63_e_mapping_file
Pcs7 7sj6x 6md63_e_mapping_file
 
Laptop syllabus 1 month
Laptop syllabus 1 monthLaptop syllabus 1 month
Laptop syllabus 1 month
 
Syllabus 3 month pclr
Syllabus 3 month pclrSyllabus 3 month pclr
Syllabus 3 month pclr
 
Ln multipilot32 connectors_spec rev 2.1
Ln multipilot32 connectors_spec rev 2.1Ln multipilot32 connectors_spec rev 2.1
Ln multipilot32 connectors_spec rev 2.1
 
Ht usb5130-v2
Ht usb5130-v2Ht usb5130-v2
Ht usb5130-v2
 
Nexys2 rm
Nexys2 rmNexys2 rm
Nexys2 rm
 

Destaque

120-5065-000_Production_Programming_of_EM35x_Chips
120-5065-000_Production_Programming_of_EM35x_Chips120-5065-000_Production_Programming_of_EM35x_Chips
120-5065-000_Production_Programming_of_EM35x_ChipsDenz Choe
 
Contents Page Analysis
Contents Page AnalysisContents Page Analysis
Contents Page Analysiselliekaye
 
Introducción wordpress: crea webs profesionales
Introducción wordpress: crea webs profesionalesIntroducción wordpress: crea webs profesionales
Introducción wordpress: crea webs profesionalesBorja Mulleras
 
Wharton Single Family Office benchmark
Wharton Single Family Office benchmarkWharton Single Family Office benchmark
Wharton Single Family Office benchmarkIldar Khabibullin
 
Hyponatremia in cirrhosis of liver indore pedicon 2014
Hyponatremia in cirrhosis of liver  indore pedicon 2014 Hyponatremia in cirrhosis of liver  indore pedicon 2014
Hyponatremia in cirrhosis of liver indore pedicon 2014 Rajesh Kulkarni
 
Bcg the battle_to_regain_strength_may_2012_tcm80-106998
Bcg the battle_to_regain_strength_may_2012_tcm80-106998Bcg the battle_to_regain_strength_may_2012_tcm80-106998
Bcg the battle_to_regain_strength_may_2012_tcm80-106998Ildar Khabibullin
 
BCG Report - Riding a Wave of Growth
BCG Report - Riding a Wave of GrowthBCG Report - Riding a Wave of Growth
BCG Report - Riding a Wave of GrowthIldar Khabibullin
 
Nutritional refeeding syndrome kwashiorkar and marasmus indore pedicon 2014
Nutritional refeeding syndrome kwashiorkar and marasmus indore pedicon 2014Nutritional refeeding syndrome kwashiorkar and marasmus indore pedicon 2014
Nutritional refeeding syndrome kwashiorkar and marasmus indore pedicon 2014Rajesh Kulkarni
 
Hypokalemia and hyperkalemia indore pedicon 2014 final
Hypokalemia and hyperkalemia indore pedicon 2014 finalHypokalemia and hyperkalemia indore pedicon 2014 final
Hypokalemia and hyperkalemia indore pedicon 2014 finalRajesh Kulkarni
 
Ors indore pedicon 2014 workshop
Ors indore pedicon 2014 workshopOrs indore pedicon 2014 workshop
Ors indore pedicon 2014 workshopRajesh Kulkarni
 

Destaque (17)

120-5065-000_Production_Programming_of_EM35x_Chips
120-5065-000_Production_Programming_of_EM35x_Chips120-5065-000_Production_Programming_of_EM35x_Chips
120-5065-000_Production_Programming_of_EM35x_Chips
 
Contents Page Analysis
Contents Page AnalysisContents Page Analysis
Contents Page Analysis
 
Sport
SportSport
Sport
 
Sport
SportSport
Sport
 
PWC key venture
PWC key venturePWC key venture
PWC key venture
 
Deccan Odyssey Itinerary
Deccan Odyssey ItineraryDeccan Odyssey Itinerary
Deccan Odyssey Itinerary
 
Introducción wordpress: crea webs profesionales
Introducción wordpress: crea webs profesionalesIntroducción wordpress: crea webs profesionales
Introducción wordpress: crea webs profesionales
 
Linking elements
Linking elementsLinking elements
Linking elements
 
CSS: webs con estilo
CSS: webs con estiloCSS: webs con estilo
CSS: webs con estilo
 
Wharton Single Family Office benchmark
Wharton Single Family Office benchmarkWharton Single Family Office benchmark
Wharton Single Family Office benchmark
 
Hyponatremia in cirrhosis of liver indore pedicon 2014
Hyponatremia in cirrhosis of liver  indore pedicon 2014 Hyponatremia in cirrhosis of liver  indore pedicon 2014
Hyponatremia in cirrhosis of liver indore pedicon 2014
 
Bcg the battle_to_regain_strength_may_2012_tcm80-106998
Bcg the battle_to_regain_strength_may_2012_tcm80-106998Bcg the battle_to_regain_strength_may_2012_tcm80-106998
Bcg the battle_to_regain_strength_may_2012_tcm80-106998
 
BCG Report - Riding a Wave of Growth
BCG Report - Riding a Wave of GrowthBCG Report - Riding a Wave of Growth
BCG Report - Riding a Wave of Growth
 
Guide to VC Term Sheet
Guide to VC Term SheetGuide to VC Term Sheet
Guide to VC Term Sheet
 
Nutritional refeeding syndrome kwashiorkar and marasmus indore pedicon 2014
Nutritional refeeding syndrome kwashiorkar and marasmus indore pedicon 2014Nutritional refeeding syndrome kwashiorkar and marasmus indore pedicon 2014
Nutritional refeeding syndrome kwashiorkar and marasmus indore pedicon 2014
 
Hypokalemia and hyperkalemia indore pedicon 2014 final
Hypokalemia and hyperkalemia indore pedicon 2014 finalHypokalemia and hyperkalemia indore pedicon 2014 final
Hypokalemia and hyperkalemia indore pedicon 2014 final
 
Ors indore pedicon 2014 workshop
Ors indore pedicon 2014 workshopOrs indore pedicon 2014 workshop
Ors indore pedicon 2014 workshop
 

Semelhante a 120 5065-000 production-programming_of_em35x_chips

Basics of peripheral devices and Working
Basics of peripheral devices and WorkingBasics of peripheral devices and Working
Basics of peripheral devices and WorkingDr.YNM
 
esp32-pico-d4_datasheet_en.pdf
esp32-pico-d4_datasheet_en.pdfesp32-pico-d4_datasheet_en.pdf
esp32-pico-d4_datasheet_en.pdfraimon ribal
 
Basics Of Embedded Systems
Basics Of Embedded SystemsBasics Of Embedded Systems
Basics Of Embedded Systemsarlabstech
 
ARINC-429-DATA-MANAGEMENT-ENGINE
ARINC-429-DATA-MANAGEMENT-ENGINEARINC-429-DATA-MANAGEMENT-ENGINE
ARINC-429-DATA-MANAGEMENT-ENGINEMassimo Talia
 
Lmb162 abc manual-rev0.2
Lmb162 abc manual-rev0.2Lmb162 abc manual-rev0.2
Lmb162 abc manual-rev0.2aibad ahmed
 
PIC16F877A C Programming.ppt
PIC16F877A C Programming.pptPIC16F877A C Programming.ppt
PIC16F877A C Programming.pptIlaiyarajaS1
 
Tutorial on avr atmega8 microcontroller, architecture and its applications
Tutorial on avr atmega8 microcontroller, architecture and its applicationsTutorial on avr atmega8 microcontroller, architecture and its applications
Tutorial on avr atmega8 microcontroller, architecture and its applicationsEdgefxkits & Solutions
 
IRJET- A Review Paper on Development of General Purpose Controller Board
IRJET- A Review Paper on Development of General Purpose Controller BoardIRJET- A Review Paper on Development of General Purpose Controller Board
IRJET- A Review Paper on Development of General Purpose Controller BoardIRJET Journal
 
FPGA Board (Xilinx Arty A7 -35 T) User Guide.pdf
FPGA Board (Xilinx Arty A7 -35 T) User Guide.pdfFPGA Board (Xilinx Arty A7 -35 T) User Guide.pdf
FPGA Board (Xilinx Arty A7 -35 T) User Guide.pdfssuser6a66ac2
 
Atmel microcontrollers-a tmega328-p_datasheet
Atmel microcontrollers-a tmega328-p_datasheetAtmel microcontrollers-a tmega328-p_datasheet
Atmel microcontrollers-a tmega328-p_datasheetAlexTronciu
 
Benefits of a relay barrier
Benefits of a relay barrierBenefits of a relay barrier
Benefits of a relay barrierrns-usa
 
selfridge_alec_chipspec
selfridge_alec_chipspecselfridge_alec_chipspec
selfridge_alec_chipspecAlec Selfridge
 
Atmel-7735-Automotive-Microcontrollers-ATmega169P_-968165.pdf
Atmel-7735-Automotive-Microcontrollers-ATmega169P_-968165.pdfAtmel-7735-Automotive-Microcontrollers-ATmega169P_-968165.pdf
Atmel-7735-Automotive-Microcontrollers-ATmega169P_-968165.pdfMiguel Angel Sejas Villarroel
 

Semelhante a 120 5065-000 production-programming_of_em35x_chips (20)

Basics of peripheral devices and Working
Basics of peripheral devices and WorkingBasics of peripheral devices and Working
Basics of peripheral devices and Working
 
esp32-pico-d4_datasheet_en.pdf
esp32-pico-d4_datasheet_en.pdfesp32-pico-d4_datasheet_en.pdf
esp32-pico-d4_datasheet_en.pdf
 
Basics Of Embedded Systems
Basics Of Embedded SystemsBasics Of Embedded Systems
Basics Of Embedded Systems
 
12C5XX.PDF
12C5XX.PDF12C5XX.PDF
12C5XX.PDF
 
ARINC-429-DATA-MANAGEMENT-ENGINE
ARINC-429-DATA-MANAGEMENT-ENGINEARINC-429-DATA-MANAGEMENT-ENGINE
ARINC-429-DATA-MANAGEMENT-ENGINE
 
Presentation
PresentationPresentation
Presentation
 
Lmb162 abc manual-rev0.2
Lmb162 abc manual-rev0.2Lmb162 abc manual-rev0.2
Lmb162 abc manual-rev0.2
 
PIC16F877A C Programming.ppt
PIC16F877A C Programming.pptPIC16F877A C Programming.ppt
PIC16F877A C Programming.ppt
 
Tutorial on avr atmega8 microcontroller, architecture and its applications
Tutorial on avr atmega8 microcontroller, architecture and its applicationsTutorial on avr atmega8 microcontroller, architecture and its applications
Tutorial on avr atmega8 microcontroller, architecture and its applications
 
IRJET- A Review Paper on Development of General Purpose Controller Board
IRJET- A Review Paper on Development of General Purpose Controller BoardIRJET- A Review Paper on Development of General Purpose Controller Board
IRJET- A Review Paper on Development of General Purpose Controller Board
 
Plc operation part 2
Plc operation part 2Plc operation part 2
Plc operation part 2
 
FPGA Board (Xilinx Arty A7 -35 T) User Guide.pdf
FPGA Board (Xilinx Arty A7 -35 T) User Guide.pdfFPGA Board (Xilinx Arty A7 -35 T) User Guide.pdf
FPGA Board (Xilinx Arty A7 -35 T) User Guide.pdf
 
At89s51
At89s51At89s51
At89s51
 
Atmel microcontrollers-a tmega328-p_datasheet
Atmel microcontrollers-a tmega328-p_datasheetAtmel microcontrollers-a tmega328-p_datasheet
Atmel microcontrollers-a tmega328-p_datasheet
 
Atmega8u2 mur
Atmega8u2 murAtmega8u2 mur
Atmega8u2 mur
 
Final Presentation
Final PresentationFinal Presentation
Final Presentation
 
Benefits of a relay barrier
Benefits of a relay barrierBenefits of a relay barrier
Benefits of a relay barrier
 
Embedded system
Embedded systemEmbedded system
Embedded system
 
selfridge_alec_chipspec
selfridge_alec_chipspecselfridge_alec_chipspec
selfridge_alec_chipspec
 
Atmel-7735-Automotive-Microcontrollers-ATmega169P_-968165.pdf
Atmel-7735-Automotive-Microcontrollers-ATmega169P_-968165.pdfAtmel-7735-Automotive-Microcontrollers-ATmega169P_-968165.pdf
Atmel-7735-Automotive-Microcontrollers-ATmega169P_-968165.pdf
 

Último

Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesBoston Institute of Analytics
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfhans926745
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 

Último (20)

Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 

120 5065-000 production-programming_of_em35x_chips

  • 1. Application Note 5065 2 July 2010 Production Programming of 120-5065-000A EM35x Chips This document describes the flash programming interface of EM35x chips, and is intended for production programming of chips on a manufacturing line. The description assumes all chips being programmed are new from the distributor and have never been programmed before, but may still contain test code in the MFB. The process described in this document is intended to program a final, fixed image and is not intended for use during application development. This document also assumes the connection between the chip being programmed and the programmer is reliable and error free. Contents Introduction .................................................................................................. 3 Pin Connections ............................................................................................. 3 Serial Wire and JTAG Interface ........................................................................... 5 Memory Organization ....................................................................................... 6 Flash ........................................................................................................ 6 RAM ......................................................................................................... 7 Description and Creation of Programming Image ...................................................... 7 File Format ................................................................................................ 7 Creation of a Programming Image ..................................................................... 8 Programming Overview ..................................................................................... 8 Programming Details ........................................................................................ 8 Power up and CPU Capture ............................................................................. 8 Install and Execute Flashloader Firmware ............................................................ 9 Disable Read/Write Protection ......................................................................... 9 Mass Erase MFB .......................................................................................... 10 Program MFB ............................................................................................. 10 Program CIB .............................................................................................. 10 Final Verification ........................................................................................ 10 Ember Corporation Gang Programming ......................................................................................... 10 47 Farnsworth Street Boston, MA 02210 Serialization ................................................................................................. 10 +1 (617) 951-0200 www.ember.com
  • 2. ARM® CortexTM-M3 CPU Manipulation Details .......................................................... 11 Halting Core Reset ...................................................................................... 11 Stack Pointer Write ..................................................................................... 11 Program Counter Write ................................................................................. 11 Single Step ................................................................................................ 11 Run......................................................................................................... 11 Flashloader Firmware Timing ............................................................................ 11 Flashloader Firmware and Interface .................................................................... 12
  • 3. Page 3 Introduction Production programming of flash on EM35x chips is accomplished using flashloader firmware. The programmer communicates with the chip using the Serial Wire and JTAG Interface (SWJ). The SWJ allows the programmer to read from any address and write to any RAM or register address. The SWJ is used to install, execute, and communicate with the flashloader firmware in RAM. The flashloader performs all of the flash manipulation operations using a simple set of commands that operate on shared memory buffers. This application note focuses on the use of the flashloader firmware to manipulate flash contents, how the flashloader should be used in a production programming environment, and the issues surrounding flashloader use including program image, gang programming, and serialization. Pin Connections Table 1 lists all of the EM35x pins, their names, and their descriptions as they apply to production programming. Refer to the EM35x Datasheet (120-035X-000) for further information on the chip’s pins and all of their functionality. Part orientation errors may be detected by monitoring VREG_OUT after the part is released from reset during the Power up and CPU Capture step. Once nRESET is released, the 1.8 V plane sourced by VREG_OUT on Pin 15 of the EM35x should stabilize between 1.7 and 1.9 volts. If the voltage measured is outside of this range, a wrong orientation error should be indicated. Production Programming of EM35x Chips 120-5065-000A
  • 4. Page 4 Table 1. Programming Pin Usage EM35x Name Description Pin 1 VDD_24MHZ 1.8 V supply 2 VDD_VCO 1.8 V supply 3 RF_P Not required for programming 4 RF_N Not required for programming 5 VDD_RF 1.8 V supply 6 RF_TX_ALT_P Not required for programming 7 RF_TX_ALT_N Not required for programming 8 VDD_IF 1.8 V supply 9 NC Do not connect 10 VDD_PADSA 1.8 V supply 11 PC5 Not required for programming 12 nRESET Active low chip reset (internal pull-up) 13 PC6 Not required for programming 14 PC7 Not required for programming 15 VREG_OUT Regulator output (1.8 V) 16 VDD_PADS 2.1-3.6 V pads supply 17 VDD_CORE 1.25 V digital core supply decoupling 18 PA7 Not required for programming 19 PB3 Not required for programming 20 PB4 Not required for programming 21 PA0 Not required for programming 22 PA1 Not required for programming 23 VDD_PADS 2.1-3.6 V pads supply 24 PA2 Not required for programming 25 PA3 Not required for programming 26 PA4 Not required for programming 27 PA5 Not required for programming 28 VDD_PADS 2.1-3.6 V pads supply 29 PA6 Not required for programming 30 PB1 Not required for programming 31 PB2 Not required for programming 32 SWCLK Serial Wire clock input/output with debugger Selected when in Serial Wire mode (see JTMS description, Pin 35) JTCK JTAG clock input from debugger Selected when in JTAG mode (default mode, see JTMS description, Pin 35) Internal pull-down is enabled 33 JTDO JTAG data out to debugger Selected when in JTAG mode (default mode, see JTMS description, Pin 35) Production Programming of EM35x Chips 120-5065-000A
  • 5. Page 5 EM35x Name Description Pin 34 JTDI JTAG data in from debugger Selected when in JTAG mode (default mode, see JTMS description, Pin 35) Internal pull-up is enabled 35 JTMS JTAG mode select from debugger Selected when in JTAG mode (default mode) JTAG mode is enabled after power-up or by forcing nRESET low Select Serial Wire mode using the ARM-defined protocol through a debugger Internal pull-up is enabled SWDIO Serial Wire bidirectional data to/from debugger Enable Serial Wire mode (see JTMS description) Select Serial Wire mode using the ARM-defined protocol through a debugger Internal pull-up is enabled 36 PB0 Not required for programming 37 VDD_PADS 2.1-3.6 V pads supply 38 PC1 Not required for programming 39 VDD_MEM 1.8 V supply 40 JRST JTAG reset input from debugger Selected when in JTAG mode (default mode, see JTMS description) Internal pull-up is enabled 41 PB7 Not required for programming 42 PB6 Not required for programming 43 PB5 Not required for programming 44 VDD_CORE 1.25 V digital core supply decoupling 45 VDD_PRE 1.8 V supply 46 VDD_SYNTH 1.8 V supply 47 OSCB 24 MHz crystal oscillator or left open when using external clock input on OSCA 48 OSCA 24 MHz crystal oscillator or external clock input. External clock input is a 1.8 V square wave. 49 GND Ground supply pad in the bottom center of the package forms Pin 49. See Ember’s various EM35x Reference Design documentation for PCB considerations. Serial Wire and The EM35x includes a standard Serial Wire and JTAG (SWJ) Interface. Serial Wire is an ARM® JTAG Interface standard, bi-directional, two-wire protocol designed to replace JTAG, and provides all the normal JTAG debug and test functionality. JTAG is a standard five-wire protocol providing debug and test functionality. In addition, the two Serial Wire signals (SWDIO and SWCLK) are overlaid on two of the JTAG signals (JTMS and JTCK). This keeps the design compact and allows tools to switch between Serial Wire and JTAG as needed, without changing pin connections. Therefore, a programmer interfacing with the EM35x may choose Serial Wire or JTAG as desired. Production Programming of EM35x Chips 120-5065-000A
  • 6. Page 6 The key functionality that the SWJ provides is the ability to read and write 8, 16, and 32 bit quantities to absolute memory addresses in the chip. The programmer uses standard memory reads and writes to access a small selection of memory-mapped registers, as well as to load and interact with the RAM-based flashloader. All memory reads and writes used during production programming are 32 bit. The details of the Serial Wire and JTAG protocols, as well as the debug port and access port in the EM35x that implement the SWJ, are beyond the scope of this document. Since Serial Wire and JTAG are standard protocols, they are described in other ARM® documents. For further information on the SWJ, refer to the ARM® CoreSightTM Components Technical Reference Manual (DDI 0314C). This document is available from ARM’s Infocenter website, http://infocenter.arm.com, and Ember support. Note: The maximum clock speed of the SWJ, as seen on the SWCLK/JTCK pin, is 2.5 MHz. Memory This discussion on the EM35x flash and RAM organization is derived from the EM35x Datasheet Organization (120-035X-000) and highlights specific aspects of the flash especially relevant to production programming. Refer to the EM35x Datasheet (120-035X-000) for complete details of the flash and RAM, including memory layout diagrams. Flash The EM35x flash memory is divided into three separate blocks: • Main Flash Block (MFB) – The MFB is the largest block of flash and holds the executable image being programmed into the device. The MFB begins at address 0x08000000. The MFB on EM351 chips is 128 kB large; therefore the top of the MFB on EM351 chips is 0x0801FFFF. The MFB on EM357 chips is 192kB large; therefore the top of the MFB on EM357 chips is 0x0802FFFF. • Fixed Information Block (FIB) – The FIB stores manufacturing data that is fixed by Ember during chip production and is not writable. • Customer Information Block (CIB) – The CIB stores customer data that is not executable, including manufacturing tokens. The first eight half-words of the CIB are dedicated to special storage called option bytes. Option bytes are tied directly to certain chip behavior including read protection and write protection of flash. The CIB is identical on EM351 and EM357 chips and is 2 kB large. The bottom of the CIB is address 0x08040800 and the top is 0x08040FFF. The flashloader executing on chip will validate the addresses being programmed and indicate an invalid address error if the programmer attempts to modify invalid addresses. All addresses are referred to as full 32 bit absolute addresses. The smallest writable unit of flash is a half-word, 16 bits, and the smallest erasable unit of flash is a page, 2 kB. The erased state of flash is 0xFFFF. Flash can be read in 8, 16, and 32 bit quantities. While it is possible to erase the MFB one page at a time and therefore erase only a subset of the MFB, it is recommended that production programming always starts by performing a mass erase of the MFB. This ensures the MFB is put into a clean state and saves time, since the mass erase takes the same amount of time as a single page erase. Production Programming of EM35x Chips 120-5065-000A
  • 7. Page 7 Note: Mass erase erases only the MFB, and erases the entire MFB. The eight option bytes at the bottom of the CIB have special behavior that differs from all other flash. The chip’s flash interface requires that each option byte be written with a companion byte that is the inverse of the option byte. Therefore, a single option byte requires writing a full 16 bit, structured quantity. One of the option bytes configures flash read protection and two (EM351) or three (EM357) option bytes control flash write protection. Refer to the EM35x Datasheet (120-035X-000) for complete details of the option bytes. Note: Because the option bytes configure flash read and write protection, special care must be taken when manipulating the option bytes. Read and write protection, as defined by the option bytes, is only updated when the nRESET pin is asserted and the chip is reset. Therefore, it is valid to erase and write read and write protection and then manipulate other flash as long as the nRESET pin is not asserted. Once read protection or write protection is set and nRESET is asserted, no further flash read or write operations should be attempted, except for disabling read or write protection (by reprogramming the option bytes). Note: Read protection is only disabled by writing the value 0xA5 to the read protection byte. Any other value, including the erased state of 0xFF, will enable read protection. Note: It is the programming image creator’s responsibility to ensure any option bytes being programmed contain the correct inverse option byte value. If the inverse option byte is not correct, the programming operation will fail verification. RAM The EM35x RAM memory exists as a single block of memory. The bottom of the RAM is address 0x20000000 and the top of the RAM is address 0x20002FFF. The flashloader s37 image file does not define a value for every byte in the RAM, but does define an address and value for every byte that must be programmed. Any byte in RAM that is not defined by the flashloader s37 image file may be left in any state. While RAM is executable, it does not execute out of reset. Therefore, one of the programming steps defines how to capture the CPU and execute the flashloader after the flashloader has been written into RAM. Description and File Format Creation of Production programming uses the standard Intel HEX-32 file format. The normal development Programming process for EM35x chips involves creating and programming images using the Motorola S- Image record file format, specifically the S37 file format. The s37 files are intended to hold applications, bootloaders, manufacturing data, and other information to be programmed during development. The s37 files, though, are not intended to hold a single image for an entire chip. For example, it is often the case that there is an s37 file for the bootloader, an s37 file for the application, and an s37 file for manufacturing data. Since production programming is primarily about installing a single, complete image with all the necessary code and information, the file format used is Intel HEX-32 format. While s37 and hex files are functionally the same – they simply define addresses and the data to be placed at those addresses – Ember has adopted the conceptual distinction that a single hex file contains a single, complete image often derived from multiple s37 files. Production Programming of EM35x Chips 120-5065-000A
  • 8. Page 8 Since no special addressing or programming is used with EM35x chips, standard hex file formats are used and can be interpreted without extra knowledge. All bytes in flash have their own absolute 32 bit address. There is no strict requirement that a hex image defines every byte to be programmed on a chip. If a byte must be programmed and is not defined by the hex image, the byte should be programmed to the erased state, 0xFF. Any byte that is not programmed will be left in the erased state, 0xFF, when programming is complete, due to the fact that a mass erase is performed and the CIB is page erased. The only restriction is that the smallest writable quantity is 16 bits. The addresses of any data provided to the flashloader must be 16 bit aligned, and the data must be multiples of 16 bits. Creation of a Programming Image Programming images in the hex format are created from the standard em3xx_load.exe development tool, which is part of the ISA3 Utilities. The ISA3 Utilities are part of the EmberZNet 4.0 or later stack release. The em3xx_load.exe tool is very versatile and capable of generating hex files from a variety of sources. The sources include multiple s37 files, existing chips, and manual file patching operations. Ultimately, em3xx_load.exe allows the developer to merge a variety of sources into a final hex image and modify individual bytes in that image if necessary. Programming The Programming Details section is organized in the general programming flow. The basic Overview production programming flow is as follows: 1. Power up and CPU Capture 2. Install and Execute Flashloader Firmware 3. Disable Read/Write Protection 4. Power up and CPU Capture 5. Install and Execute Flashloader Firmware 6. Mass Erase MFB 7. Program MFB 8. Program CIB 9. Final Verification If the Program CIB step enables read or write protection, the new protection setting will not take effect until the chip is next reset by either asserting the nRESET pin or performing a standard power-on-reset. Therefore, the programming flow does not have to worry about flash protection because protection will not take effect until production programming has completed. Programming This section details all of the individual steps that comprise the complete production Details programming process. Note: The numerical values provided in these programming steps are values intrinsic to the EM35x chip and will never change. The names in all capital letters are values tied to a specific flashloader image and are defined in the header files that accompany the flashloader s37 image file. Power up and CPU Capture 1. Apply power while nRESET is held low. 2. Hold nRESET low and wait 10 µs after power has stabilized. Production Programming of EM35x Chips 120-5065-000A
  • 9. Page 9 3. Do not release nRESET less than 30 µs after asserting nRESET. 4. While nRESET is low, logically attach the programmer to the SWJ by setting the CDBGPWRUPREQ and CSYSPWRUPREQ signals defined by ARM®. 5. Release nRESET and wait 100 µs. 6. Validate the SWJ communications path is operational by reading the Silicon ID at address 0x40004000 and verifying this value is 0x069A962B. 7. Perform a standard ARM® CortexTM-M3 CPU Halting Core Reset. Install and Execute Flashloader Firmware 1. Write the value 0x00000307 to the address 0x40000018. 2. Write the entire flashloader firmware image to the chip’s RAM. The flashloader image is a standard s37 file format indicating what bytes to write and the 32-bit absolute addresses to write to in the memory map. 3. Read the flashloader firmware image from RAM to verify the flashloader is installed properly. 4. Write the address of the bottom of RAM, 0x20000000, to the address 0xE000ED08. 5. Write the stack pointer value to the CPU’s stack pointer register, R13, using a standard ARM® CortexTM-M3 CPU Stack Pointer Write. The stack pointer value is a literal, 32-bit number named STACK_POINTER_INIT, and is defined with the flashloader image. 6. Write the program counter value to the CPU’s program counter register, R15, using a standard ARM® CortexTM-M3 CPU Program Counter Write. The program counter value is a literal, 32-bit number named PROGRAM_COUNTER_INIT, and is defined with the flashloader image. 7. Perform a standard ARM® CortexTM-M3 CPU Single Step. 8. Using a CPU Stack Pointer Write, rewrite the stack pointer with the STACK_POINTER_INIT literal. 9. Using a CPU Program Counter Write, rewrite the program counter with the PROGRAM_COUNTER_INIT literal. 10. Clear the flashloader’s command and status shared memory by writing 0x00000000 to SHAREDMEM_COMMAND and SHAREDMEM_STATUS, defined with the flashloader image. 11. Perform a standard ARM® CortexTM-M3 CPU Run. 12. Read from SHAREDMEM_COMMAND, until this address contains the value COMMAND_IDLE. 13. Read from SHAREDMEM_STATUS, until this address contains the value STATUS_BOOTED. Disable Read/Write Protection 1. Initiate disabling of read protection by writing the value COMMAND_DISABLE_RDPROT to SHAREDMEM_COMMAND. This inherently disables write protection as well. 2. Read from SHAREDMEM_COMMAND, until this address contains the value COMMAND_IDLE. 3. Read from SHAREDMEM_STATUS. If SHAREDMEM_STATUS does not contain the value STATUS_SUCCESS, the operation failed and the chip should be recorded as failed. 4. Repeat the step Power up and CPU Capture. 5. Repeat the step Install and Execute Flashloader Firmware. Production Programming of EM35x Chips 120-5065-000A
  • 10. Page 10 Mass Erase MFB 1. Initiate a mass erase by writing the value COMMAND_MASS_ERASE to SHAREDMEM_COMMAND. 2. Read from SHAREDMEM_COMMAND, until this address contains the value COMMAND_IDLE. 3. Read from SHAREDMEM_STATUS. If SHAREDMEM_STATUS does not contain the value STATUS_SUCCESS, the operation failed and the chip should be recorded as failed. Program MFB The target flash address must be 16 bit aligned. A minimum of 16 bits and a maximum of 2 kB of data may be written in a single program command. Loop over all MFB data, programming a block, at most 2kB, per program command: 1. Write the starting address for this block to SHAREDMEM_DATAADDRESS. 2. Write the data to be installed into flash to SHAREDMEM_DATABUFFER. 3. Write the size, in bytes, of the block of data to be programmed to SHAREDMEM_DATALENGTH. This size must be a multiple of 16 bits. 4. Initiate a write operation by writing the value COMMAND_PAGE_WRITE to SHAREDMEM_COMMAND. 5. Read from SHAREDMEM_COMMAND, until this address contains the value COMMAND_IDLE. 6. Read from SHAREDMEM_STATUS. If SHAREDMEM_STATUS does not contain the value STATUS_SUCCESS, the operation failed and the chip should be recorded as failed. Program CIB Programming the CIB follows the same sequence of steps described in Program MFB. Final Verification After programming activities have completed, the programmer should directly readout all MFB and CIB addresses and verify those addresses match the data in the source hex image. Addresses not defined by the hex image should be verified as still being in the erased state, 0xFF. At this point, production programming is complete. Gang Because the production programming process described in this document relies on the SWJ Programming interface and uses a lot of handshake style communication with the chip, it is impractical to share GPIO between EM35x chips and drive multiple chips from a single controller. Because the Serial Wire interface uses a single bidirectional data line for all communications, it is not possible to tie the SWDIO pin from multiple chips together, and therefore each chip must be controlled independently. It is possible to link multiple chips together in a standard JTAG scan chain configuration and access memory on each chip individually. In theory, it might be possible to tie the JTAG interface of multiple chips together, as long as the controller can still access the JTDO pin of each chip individually. Ember has not attempted this mode of operation, cannot say if it will or will not work, and cannot say if it is practical. Serialization The EM35x comes pre-programmed with an EUI64 when shipped from the factory. This Ember EUI64 exists in the FIB and is not modifiable. It may, however, be desirable for a customer to override the default EUI64 with their own unique serial numbers for each chip, or set other Production Programming of EM35x Chips 120-5065-000A
  • 11. Page 11 per-chip unique manufacturing tokens. This can be done by customizing the CIB programming so that the values to be written to flash are taken from some other source, such as a database, in addition to the programming image. Details of pre-defined manufacturing tokens in the CIB are available in Ember application notes and HAL source header. Refer to Bringing Up Custom Devices for the EM35x SoC Platform (120-5064-000), Setting Manufacturing Certificates and Installation Codes (120-5058- 000), and hal/micro/cortexm3/token-manufacturing.h. These documents are available from Ember support. ARM® CortexTM-M3 The following sections give an overview of the basic CPU manipulation necessary to CPU Manipulation accomplish production programming. The CPU manipulation is standard CortexTM-M3 Details functionality. Refer to the ARM CortexTM-M3, r1p1, Technical Reference Manual (DDI 0337D) for all the necessary details. Specifically, the Core Debug chapter and the Nested Vectored Interrupt Controller chapter of the Technical Reference Manual describe the registers needed and how to use them. This document is available from ARM’s Infocenter website, http://infocenter.arm.com, and Ember support. Halting Core Reset While a pin reset – asserting nRESET – is used during powerup to reset the entire chip, this type of reset leaves the CPU executing code. The purpose of the Halting Core Reset is to reset the CPU and leave the CPU in a halted state at the reset vector so no code is executed. The Debug Exception and Monitor Control Register provides a means of halting the running system if a core reset occurs. The Application Interrupt Register provides a means of resetting the system while the reset vector catch is enabled. Stack Pointer Write The Core Debug registers are used to write the Stack Pointer to a specific value. Program Counter Write The Core Debug registers are used to write the Program Counter to a specific value. Single Step The Core Debug registers are used to perform a single step of the CPU. Run The Core Debug registers are used to halt and run the CPU. Flashloader Table 2 shows the timing of the flashloader commands. The timing was measured on-chip, Firmware Timing from the moment the flashloader left the idle state, COMMAND_IDLE, until the flashloader returned to the idle state. Note: The timing of COMMAND_PAGE_WRITE is for the worst case scenario. The worst case scenario is defined as writing a full 2 kB of data where all data is 0x0000. Production Programming of EM35x Chips 120-5065-000A
  • 12. Page 12 Table 2. Flashloader Firmware Timing Flashloader command Execution time of command COMMAND_MASS_ERASE 109 ms COMMAND_PAGE_ERASE 21 ms COMMAND_PAGE_WRITE 56 ms COMMAND_DISABLE_RDPROT 21 ms Flashloader The following are the three files that define the flashloader firmware and the interface with Firmware and the firmware. While these three files are added to the document here, the latest versions are Interface available to download from the developer support site. • flashloader-cmd-stat.h defines the COMMAND and STATUS values used when interacting with the flashloader. • flashloader-em35x.h defines the memory addresses used when interacting with the flashloader. • flashloader-em35x.s37 is Motorola S-record file that defines the actual flashloader firmware that is to be loaded into and executed from RAM. The following is the flashloader-cmd-stat.h file: /* * Header file for flashloader-<micro>.[h|s37], defining the command * and status values needed in order to interact with the flashloader. * */ #ifndef __FLASHLOADER_CMD_STAT_H__ #define __FLASHLOADER_CMD_STAT_H__ #define COMMAND_IDLE 0xC0000001 #define COMMAND_PAGE_ERASE 0xC0000002 #define COMMAND_PAGE_WRITE 0xC0000003 #define COMMAND_DISABLE_RDPROT 0xC0000004 #define COMMAND_MASS_ERASE 0xC0000005 #define STATUS_BOOTED 0xA0000001 #define STATUS_INVALID_CMD 0xA0000002 #define STATUS_SUCCESS 0xA0000003 #define STATUS_BUSY 0xA0000004 #define STATUS_VERIFY_ERASE_FAIL 0xA0000005 #define STATUS_PROG_FAIL 0xA0000006 #define STATUS_VERIFY_PROG_FAIL 0xA0000007 #define STATUS_BAD_ADDR_OR_LEN 0xA0000008 #endif //__FLASHLOADER_CMD_STAT_H__ The following is the flashloader-em35x.h file: /* * Header file for flashloader-em35x.s37, defining the values * needed in order to interface with this flashloader. Production Programming of EM35x Chips 120-5065-000A
  • 13. Page 13 * * NOTE: This file is autogenerated. Do NOT edit this file directly. * */ #ifndef __FLASHLOADER_SHAREDMEM_H__ #define __FLASHLOADER_SHAREDMEM_H__ #define CHIP_NAME "EM35X" #define PROGRAM_COUNTER_INIT 0x20000220 #define STACK_POINTER_INIT 0x20000200 #define SHAREDMEM_COMMAND 0x200027f0 #define SHAREDMEM_DATAADDRESS 0x200027f8 #define SHAREDMEM_DATALENGTH 0x200027fc #define SHAREDMEM_STATUS 0x200027f4 #define SHAREDMEM_DATABUFFER 0x20002800 #endif //__FLASHLOADER_SHAREDMEM_H__ The following is the flashloader-em35x.s37 file: S0180000656D3378782D666C6173686C6F616465722E73333735 S315200002000002002021020020B5020020B5020020B5 S31520000210A70E010100000000000000000000000001 S31520000220084840F20731016007480849016072B664 S3152000023007480168490849000160064859210160BC S3152000024000F00AB81800004008ED00E00002002087 S31520000250FCED00E00080004080B50C480C494FF0D2 S31520000260CD3200F021F80B480B490C4A03E050F838 S31520000270043B41F8043B9142F9D30948094900223D S3152000028000F012F800F05EFA00BEFEE70000002043 S3152000029000020020F4080020EC270020F027002090 S315200002A0000000000000000001E040F8042B884216 S315200002B0FBD370470348002101604160024803498F S315200002C0016070471C4000400CED00E00400FA0578 S315200002D0084809490160094A026041604260AE4906 S315200002E001220A604A68D207FCD58168C907FCD476 S315200002F0704700BF0480004023016745AB89EFCDDE S3152000030010B50446FFF7E4FFA24A4FF40071DFF868 S31520000310BC05022C1BD1022353608368936083683B S31520000320422050601068C007FCD4202010609A48F4 S315200003304468A407FCD40024046080205060DFF8C1 S3152000034000041468E40615D51021116010BD032C95 S315200003500DD14FF408735360DFF888350068DFF855 S315200003607845A04200D100214FF41870D9E7DFF874 S31520000370640510BD002201E0521C92B28A4205D2C9 S3152000038053F8044B14F1010FF6D010BDFCE070B504 S31520000390804A53684FF4007454604FF404755560D6 S315200003A0DFF8405505EB400001801568ED07FCD4C9 S315200003B0202515601568142635420DD010201060B2 S315200003C004201060744841688907FCD4002101602C S315200003D080205060534870BD0078884211BFB648CF S315200003E054605360DFF8E80470BD00002DE9F8433F S315200003F0FFF76EFF674C40F201206060DFF8CC54B7 S31520000400AE680027DFF8C084DFF8C49402E0B61C8B S31520000410781C87B26048E968B7EB510F33D2318830 S3152000042038F817209142F2D038F817104FF6FF729D S315200004309142ECD07900AA688A18DFF8A8349A424B S315200004400DD3AA6889181B4A914208D238F817108A Production Programming of EM35x Chips 120-5065-000A
  • 14. Page 14 S31520000450C9B2F8B2FFF79BFF4845D8D027E038F855 S31520000460171031802168C907FCD42021216021681A S3152000047014221142CBD0102121600421216000F0EA S315200004801BF8284813E000F017F8AE68002701E0B3 S31520000490781C87B2E868B7EB500F07D236F8020B04 S315200004A038F817108842F3D0834800E04846BDE864 S315200004B0F28300BF1008040841688907FCD4002194 S315200004C0016080206060704780B5FFF701FF3148EA S315200004D04FF404714160DFF80C144AF2A5520A80E9 S315200004E00168C907FCD4202101602B490268142326 S315200004F01A420CD01022026004220260802242603E S3152000050048688007FCD400200860064802BD4A6877 S315200005109207FCD400220A6080214160DFF8B003F4 S3152000052002BD0000060000A010B5FFF7D1FE194954 S3152000053004204860442048600868C007FCD4202076 S315200005400860154842689207FCD400220260802089 S3152000055048607B480A68D20602D510220A6010BD80 S315200005604FF00061DFF874231268094B9A1892083D S31520000570002300E05B1C934205D251F8044B14F192 S31520000580010FF7D010BD00BFDFF8440310BD00BF38 S31520000590010000F80C8000402C40004070B5DFF8C8 S315200005A02C43FFF7C1FF6060C94D6068A84225D182 S315200005B00020C549A26821F81020401CB0F5806FA4 S315200005C0F8D34FF40060E0604FF00060A060C34EA7 S315200005D009E0FFF70BFF60606068A8420ED1A068B3 S315200005E000F50060A0603068A1688842F1D2FFF76C S315200005F09BFF60606068A84200D1656070BD000006 S3152000060008490968C9074CBF4FF4F7614FF4777161 S3152000061048434FF47A71B0FBF1F008B1401EFDD18A S31520000620704700BF1C40004070B505460C46434E3F S315200006300820F066F06E000701D4A94870BD356029 S31520000640F06E4FF41471084300F038F8F06E4FF452 S3152000065080710843F0662046A90747BF4FF6FF7111 S3152000066041EA00401349084330670C20FFF7C8FFD2 S31520000670F06E40F02000F0661620FFF7C1FFF06E06 S3152000068020F02000F0660120FFF7BAFFF06E20F47C S31520000690007000F013F8F06E20F4A870F0660320C6 S315200006A0FFF7AEFF0020F0662888A04214BF02485C S315200006B0874870BD0000FFFF070000A0F0660720F6 S315200006C09EE738B51D4C0820E066E06E000701D491 S315200006D0834832BD7D48816821608568E06E40F0A0 S315200006E04000E066E06E40F40160E066FFF7E7FF59 S315200006F0E06E4FF480710843E06645F2F050FFF754 S315200007007FFFE06E20F40060E066FFF7D8FFE06E22 S3152000071020F4A870E0660320FFF772FF0020E06651 S3152000072055F8041B11F1010F01D0054832BD401CBC S315200007304FF400718842F3DB654832BD14800040D7 S31520000740050000A02DE9F84F5448006880070BD417 S315200007505348017841B94178012905D1C07802284A S3152000076002D15E484F4901600024DFF85C814FF6D4 S31520000770FF7A00F0B9F8FCDB544EDFF82CB1C6F84E S3152000078000B04A487060DFF8489103E05148706035 S31520000790C6F800B030685845FCD045487060B76848 S315200007A0F5683E480068800705D530684A49884282 S315200007B001D0002030604948006831683D4A891AD6 S315200007C008D0491E21D0491E57D0491E5FD0491E48 S315200007D060D0DBE7F90701D54148D8E7B7F1006FCC S315200007E005D3B84203D30220FFF78AFDCFE73D4861 S315200007F0874204D330488742EED20320F4E72F48BD S315200008008742E9D3FFF75DFFC1E707F0010105F055 S315200008100102114302D03248706029E0E919B7F18C Production Programming of EM35x Chips 120-5065-000A
  • 15. Page 15 S31520000820006F05D3401C884202D3FFF7DFFDF3E7B4 S315200008302C48874205D32248814205D2FFF7D6FDB0 S31520000840EAE71E488742E6D31E488142E3D20024C7 S3152000085002E0BF1C641CA4B2B4EB550F08D238F8D2 S3152000086014103846FFF7E0FE706070684845F0D0F7 S31520000870002400F039F88BDAFBE7FFF725FE03208A S31520000880FFF73EFDFFF720FEC6F8049080E7FFF74E S315200008904BFE7CE7FFF782FE7AE700BF1C80004014 S315200008A096070408FFFF0208010000C0010000A00F S315200008B0040000A0020000C0001004080000040884 S315200008C0011004080108040800280020F027002051 S315200008D0030000A0020000A0040000C0EC270020B6 S315200008E0080000A00008040828F814A0641CB4F529 S30D200008F0806F7047FFFF01082D S70520000221B7 After reading this If you have questions or require assistance with the procedures described in this document, document contact Ember Customer Support. The Ember Customer Support portal provides a wide array of hardware and software documentation such as FAQ’s, reference designs, user guides, application notes, and the latest software available to download. To obtain support on all Ember products and to gain access to the Ember Customer Support portal, visit http://www.ember.com/support_index.html. Production Programming of EM35x Chips 120-5065-000A
  • 16. Copyright © 2006–2010 Ember Corporation. All rights reserved. The information in this document is subject to change without notice. The statements, configurations, technical data, and recommendations in this document are believed to be accurate and reliable but are presented without express or implied warranty. Users must take full responsibility for their applications of any products specified in this document. The information in this document is the property of Ember Corporation. Title, ownership, and all rights in copyrights, patents, trademarks, trade secrets, and other intellectual property rights in the Ember Proprietary Products and any copy, portion, or modification thereof, shall not transfer to Purchaser or its customers and shall remain in Ember and its licensors. No source code rights are granted to Purchaser or its customers with respect to all Ember Application Software. Purchaser agrees not to copy, modify, alter, translate, decompile, disassemble, or reverse engineer the Ember Hardware (including without limitation any embedded software) or attempt to disable any security devices or codes incorporated in the Ember Hardware. Purchaser shall not alter, remove, or obscure any printed or displayed legal notices contained on or in the Ember Hardware. Ember, Ember Enabled, EmberZNet, InSight, and the Ember logo are trademarks of Ember Corporation. All other trademarks are the property of their respective holders.