Skip to main content
Visitor II
September 11, 2006
Question

RSIG Read Electronic Signature (90h)

  • September 11, 2006
  • 3 replies
  • 949 views
Posted on September 11, 2006 at 11:24

RSIG Read Electronic Signature (90h)

    This topic has been closed for replies.

    3 replies

    kwun-keatAuthor
    Visitor II
    May 17, 2011
    Posted on May 17, 2011 at 09:31

    Has anyone been able to read the Electronics Signature of the STR91x? I'm using the Keil MCBSTR9 ver2 Eval Board.

    The expected values are in the STR9 Flash Programming Manual Rev1 Section 1.11.2 (p.13). Looking at the Memory Window in Realview doesn't show the expected values except for Manufacturer code.

    I get the following:

    Manafacturer Code 0x0020

    Device Code 0x0000

    Die Revision Code 0x0000

    Protection Level 2 Register 0x2000

    Protection Level 1 Register 0x0041

    Flash Configuration Register 0x5700

    Can someone please help?

    Thanks!

    Here is my code:

    #define FMI_BANK_1 ((*(vu32*)0x54000010) << 2)

    void Fmi_Rsig_Cmd_Handler()

    {

    u16 fmi_rsig16 = 0;

    u8 fmi_rsig[12] = {0,0,0,0,0,0,0,0,0,0,0,0};

    int get_fmi_rsig_cnt= 0;

    int fmi_rsig_cnt = 0;

    //Write a read RSIG command to any word address in Bank1

    *(vu16 *)(FMI_BANK_1) = 0x90;

    //Read any RSIG register from any addres in Bank1

    //using the low byte of the address to select the register.

    for (get_fmi_rsig_cnt = 0; get_fmi_rsig_cnt < 6; get_fmi_rsig_cnt++)

    {

    fmi_rsig16 = (*(vu32*)(FMI_BANK_1 + get_fmi_rsig_cnt));

    fmi_rsig[fmi_rsig_cnt++] = fmi_rsig16 & 0x00FF;

    fmi_rsig[fmi_rsig_cnt++] = (fmi_rsig16 & 0xFF00) >> 8;

    }

    //Write a read array command to return to Read Array mode

    *(vu16 *)FMI_BANK_1 = 0xFF;

    //Return value to host PC

    Load_TX_Buf(fmi_rsig);

    }

    kwun-keatAuthor
    Visitor II
    May 17, 2011
    Posted on May 17, 2011 at 09:31

    Is the RSIG working for anyone?

    Any help, however little, would be appreciated.

    Thanks!

    Visitor II
    May 17, 2011
    Posted on May 17, 2011 at 09:31

    Hi kk,

    When writing a command to the Flash memory, the command or Data byte must be placed on D[7:0] of the FMI memory bus. This requires the bank or sector address to be at a word boundary (word address), except when programming a halfword. (Refer to Flash prog user manual ).

    The following code can be useful for you to read RSIG registers(pls see fmi_rsig table).

    u16 fmi_rsig[6] = {0,0,0,0,0,0};

    u16 fmi_rsig16 = 0;

    u8 i;

    int main()

    {

    #ifdef DEBUG

    debug();

    #endif

    //Write a read RSIG command to any word address in Bank1

    *(vu16 *)(FMI_BANK_1) = 0x90;

    //Read any RSIG register from any addres in Bank1

    for(i = 0; i < 6; i++)

    fmi_rsig[i] = (*(vu32*)(FMI_BANK_1 + (i<

    //Write a read array command to return to Read Array mode

    *(vu16 *)FMI_BANK_1 = 0xFF;

    }

    Regards

    Eris.