66 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			66 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| 
 | |
| #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;
 | |
| }
 |