8-bit Knowledge Base

      • What is the reason for "SI_LOCATED_VARIABLE_NO_INIT (reserved, uint8_t, SI_SEG_XDATA, 0x0000);"

        ChrisM | 08/236/2016 | 08:36 PM


        What is the reason for the following code on EFM8SB1 devices:



        SI_LOCATED_VARIABLE_NO_INIT (reserved, uint8_t, SI_SEG_XDATA, 0x0000);




        This reserved variable ensures firmware doesn't make use of the first byte of XDATA RAM. This is in response to an issue on the SB1 devices.

        From the SB1 reference manual Section 2.3:

        "Note: On device reset or upon waking up from Sleep mode, address 0x0000 of external memory (XRAM) may be overwritten by an indeterminate value. The indeterminate value is 0x00 in most situations. A dummy variable should be placed at address 0x0000 in external memory to ensure that the application firmware does not store any data that needs to be retained through reset or Sleep at this memory location."

      • Bit addresable RAM initialization

        Stephen | 08/236/2016 | 08:10 PM


        Does bit addresable RAM / BDATA (addresses 0x20-0x2F) get initialized after reset? 


        Yes, bit addressable ram is initialized to 0x00 in the startup file (startup.a51 or silabs_startup.a51).