/** * \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 ; }
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; }