X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=blobdiff_plain;f=lib%2Fccdbg-flash.c;h=3e6729851502ff8895a6e2088836284035f7702c;hp=8a586a21ccb4fc076da2886881d9830662736925;hb=17d2432a8b9c15963cd3b821f025ad33972ef477;hpb=8a9a3f02b951382573ff74dd6ce5a1c0f335fa86 diff --git a/lib/ccdbg-flash.c b/lib/ccdbg-flash.c index 8a586a21..3e672985 100644 --- a/lib/ccdbg-flash.c +++ b/lib/ccdbg-flash.c @@ -37,10 +37,10 @@ static uint8_t flash_page[] = { MOV_Rn_data(7), 0, #define FLASH_WORDS_HIGH 16 - + MOV_Rn_data(6), 0, #define FLASH_WORDS_LOW 18 - + MOV_direct_data, FWT, 0x20, #define FLASH_TIMING 21 @@ -76,7 +76,7 @@ static uint8_t flash_page[] = { static uint8_t flash_erase_page[] = { 3, MOV_direct_data, FADDRH, 0, #define ERASE_PAGE_HIGH 3 - + 3, MOV_direct_data, FADDRL, 0, #define ERASE_PAGE_LOW 7 @@ -107,7 +107,7 @@ ccdbg_flash_erase_page(struct ccdbg *dbg, uint16_t addr) uint8_t status; uint8_t old[0x10], new[0x10]; int i; - + ccdbg_read_memory(dbg, addr, old, 0x10); flash_erase_page[ERASE_PAGE_HIGH] = page_addr >> 8; flash_erase_page[ERASE_PAGE_LOW] = page_addr & 0xff; @@ -130,7 +130,7 @@ ccdbg_flash_erase_page(struct ccdbg *dbg, uint16_t addr) static uint8_t flash_write[] = { MOV_direct_data, P1DIR, 0x02, MOV_direct_data, P1, 0xFD, - + MOV_A_direct, FCTL, JB, ACC(FCTL_BUSY_BIT), 0xf1, @@ -138,10 +138,10 @@ static uint8_t flash_write[] = { MOV_direct_data, FADDRH, 0, #define WRITE_PAGE_HIGH 16 - + MOV_direct_data, FADDRL, 0, #define WRITE_PAGE_LOW 19 - + MOV_direct_data, FCTL, FCTL_WRITE, MOV_direct_data, FWDATA, 0, #define WRITE_BYTE_0 25 @@ -267,7 +267,7 @@ ccdbg_flash_hex_image(struct ccdbg *dbg, struct hex_image *image) } ram_addr = 0xf000; - + flash_prog = 0xf400; fwt = 0x20; @@ -276,7 +276,7 @@ ccdbg_flash_hex_image(struct ccdbg *dbg, struct hex_image *image) ccdbg_debug(CC_DEBUG_FLASH, "Upload %d flash program bytes to 0x%04x\n", sizeof (flash_page), flash_prog); ccdbg_write_memory(dbg, flash_prog, flash_page, sizeof(flash_page)); - + remain = image->length; start = 0; while (remain) { @@ -296,7 +296,7 @@ ccdbg_flash_hex_image(struct ccdbg *dbg, struct hex_image *image) return 1; } #endif - + flash_addr = image->address + start; flash_word_addr = flash_addr >> 1; flash_len = this_time + (this_time & 1); @@ -304,11 +304,11 @@ ccdbg_flash_hex_image(struct ccdbg *dbg, struct hex_image *image) flash_words_low = flash_words & 0xff; flash_words_high = flash_words >> 8; - + /* The flash code above is lame */ if (flash_words_low) flash_words_high++; - + ccdbg_write_uint8(dbg, flash_prog + FLASH_ADDR_HIGH, flash_word_addr >> 8); ccdbg_write_uint8(dbg, flash_prog + FLASH_ADDR_LOW, flash_word_addr & 0xff); @@ -336,7 +336,7 @@ ccdbg_flash_hex_image(struct ccdbg *dbg, struct hex_image *image) fprintf(stderr, "flash page timed out\n"); return 1; } - + ccdbg_debug(CC_DEBUG_FLASH, "Verify %d bytes in flash\n", this_time); ccdbg_read_memory(dbg, flash_addr, verify, this_time); if (memcmp (image->data + start, verify, this_time) != 0) {