Example #1
0
/**
 * \brief Read the unique ID.
 *
 * \param uniqueID pointer on a 4bytes char containing the unique ID value.
 * \returns 0 if successful; otherwise returns an error code.
 */
extern uint32_t FLASHD_ReadUniqueID( uint32_t* pdwUniqueID )
{
    uint32_t dwError ;

    assert( pdwUniqueID != NULL ) ;

    pdwUniqueID[0] = 0 ;
    pdwUniqueID[1] = 0 ;
    pdwUniqueID[2] = 0 ;
    pdwUniqueID[3] = 0 ;

    EFC_StartCommand( EFC, EFC_FCMD_STUI, 0 ) ;

    pdwUniqueID[0] = *(uint32_t*) IFLASH_ADDR;
    pdwUniqueID[1] = *(uint32_t*)(IFLASH_ADDR + 4) ;
    pdwUniqueID[2] = *(uint32_t*)(IFLASH_ADDR + 8) ;
    pdwUniqueID[3] = *(uint32_t*)(IFLASH_ADDR + 12) ;

    dwError = EFC_PerformCommand( EFC, EFC_FCMD_SPUI, 0, _dwUseIAP ) ;
    if ( dwError )
    {
        return dwError ;
    }

    return 0 ;
}
Example #2
0
unsigned char FLASHD_ReadUniqueID (unsigned long * uniqueID)
{
    unsigned char error;
    
    SANITY_CHECK(uniqueID != NULL);
    
    uniqueID[0] = 0;
    uniqueID[1] = 0;
    uniqueID[2] = 0;
    uniqueID[3] = 0;
    
    EFC_StartCommand(AT91C_BASE_EFC, AT91C_EFC_FCMD_STUI, 0);
    
    uniqueID[0] = *(unsigned int *)AT91C_IFLASH;
    uniqueID[1] = *(unsigned int *)(AT91C_IFLASH + 4);
    uniqueID[2] = *(unsigned int *)(AT91C_IFLASH + 8);
    uniqueID[3] = *(unsigned int *)(AT91C_IFLASH + 12);
    
    error = EFC_PerformCommand(AT91C_BASE_EFC, AT91C_EFC_FCMD_SPUI, 0);
    if (error) return error;
    
    return 0;
}