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;
|
|
}
|