Files
kunlun/dtest/efuse_write_test/efuse_write_test.c
2024-09-28 14:24:04 +08:00

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