#include "os_types.h" #include "dbg_io.h" #include "efuse.h" #define BIT(b) (1<<(b)) #define EF_SFC_CLK 6 #define EF_SFC_CS 43 #define EF_SFC_D0 5 #define EF_SFC_D1 16 #define EF_SFC_D2 17 #define EF_SFC_D3 7 void efuse_test_write() { int value; #define download_enable (1) #define security_mode (0) #define boot_mode (0) /* SFC HASH_IV */ efuse_write(0, BIT(19)|BIT(23)); /* SFC VALID */ value = (EF_SFC_D0<<24)|(EF_SFC_CS<<16)|(EF_SFC_CLK<<8); efuse_write(4, value); /* D0,CS,CLK, MAC */ value = (0x03<<24)|(EF_SFC_D3<<16)|(EF_SFC_D2<<8)|EF_SFC_D1; efuse_write(8, value); /* CMD,D3,D2,D1 */ efuse_write(64, 0x01234567); /* HASH */ efuse_write(68, 0x89ABCDEF); /* HASH */ efuse_write(72, 0x01234567); /* HASH */ efuse_write(76, 0x89ABCDEF); /* HASH */ efuse_write(24, 0x19966); /* reset cmd & valid */ efuse_write(28, 0x8000000); /* valid */ value = BIT(17)|BIT(25); /* e_config.u_config.cfg_valid */ efuse_write(32, value); value = 0; if(!security_mode) value |= BIT(7)|BIT(23); /* e_config.u_config.security_mode */ if(!boot_mode) value |= BIT(8)|BIT(24); /* e_config.u_config.boot_mode */ if(download_enable) value |= BIT(10)|BIT(26); /* e_config.u_config.download_enable */ efuse_write(36, value); return ; } int main(void) { dbg_uart_init(); #if 0 efuse_write(0, 0xa5a5a5a5); efuse_write(1, 0x5a5a5a5a); efuse_write(2, 0x5a5aa5a5); efuse_write(3, 0x12345678); efuse_write(63, 0x87654321); #endif efuse_test_write(); while(1); return 0; }