diff options
Diffstat (limited to 'src/stm-flash/ao_stm_flash.c')
| -rw-r--r-- | src/stm-flash/ao_stm_flash.c | 84 | 
1 files changed, 1 insertions, 83 deletions
diff --git a/src/stm-flash/ao_stm_flash.c b/src/stm-flash/ao_stm_flash.c index e2d7ec65..2988a937 100644 --- a/src/stm-flash/ao_stm_flash.c +++ b/src/stm-flash/ao_stm_flash.c @@ -32,89 +32,8 @@ ao_application(void)  	ao_boot_reboot(AO_BOOT_APPLICATION_BASE);  } -static uint32_t -ao_cmd_hex32(void) -{ -	__pdata uint8_t	r = ao_cmd_lex_error; -	int8_t	n; -	uint32_t v = 0; - -	ao_cmd_white(); -	for(;;) { -		n = ao_cmd_hexchar(ao_cmd_lex_c); -		if (n < 0) -			break; -		v = (v << 4) | n; -		r = ao_cmd_success; -		ao_cmd_lex(); -	} -	if (r != ao_cmd_success) -		ao_cmd_status = r; -	return v; -} - -void -ao_block_erase(void) -{ -	uint32_t	addr = ao_cmd_hex32(); -	uint32_t	*p = (uint32_t *) addr; - -	ao_flash_erase_page(p); -} - -void -ao_block_write(void) -{ -	uint32_t	addr = ao_cmd_hex32(); -	uint32_t	*p = (uint32_t *) addr; -	union { -		uint8_t		data8[256]; -		uint32_t	data32[64]; -	} u; -	uint16_t	i; - -	if (addr < 0x08002000 || 0x08200000 <= addr) { -		puts("Invalid address"); -		return; -	} -	for (i = 0; i < 256; i++) -		u.data8[i] = i; -	ao_flash_page(p, u.data32); -} - -static void -puthex(uint8_t c) -{ -	c &= 0xf; -	if (c < 10) -		c += '0'; -	else -		c += 'a' - 10; -	putchar (c); -} - -void -ao_block_read(void) -{ -	uint32_t	addr = ao_cmd_hex32(); -	uint8_t		*p = (uint8_t *) addr; -	uint16_t	i; -	uint8_t		c; - -	for (i = 0; i < 256; i++) { -		c = *p++; -		puthex(c); -		puthex(c>>4); -		if ((i & 0xf) == 0xf) -			putchar('\n'); -	} -} -  __code struct ao_cmds ao_flash_cmds[] = { -	{ ao_application, "a\0Switch to application" }, -	{ ao_block_erase, "e <addr>\0Erase block." }, -	{ ao_block_write, "W <addr>\0Write block. 256 binary bytes follow newline" }, -	{ ao_block_read, "R <addr>\0Read block. Returns 256 bytes" }, +	{ ao_application, "A\0Switch to application" },  	{ 0, NULL },  }; @@ -133,7 +52,6 @@ main(void)  	ao_usb_init();  	ao_cmd_register(&ao_flash_cmds[0]); -	ao_cmd_register(&ao_flash_cmds[0]);  	ao_start_scheduler();  	return 0;  }  | 
