From 815f3f255960c429f62435cc7506ff597385b2cf Mon Sep 17 00:00:00 2001 From: d18c7db Date: Sun, 10 Jan 2010 03:57:41 +0000 Subject: [PATCH] Decreased BigBuff mem, some elf flasher fixes (needs more work) but flashing correctly currently. --- armsrc/appmain.c | 2 +- armsrc/apps.h | 2 +- armsrc/lfops.c | 2 -- client/flash.c | 27 +++++++++++++++------------ 4 files changed, 17 insertions(+), 16 deletions(-) diff --git a/armsrc/appmain.c b/armsrc/appmain.c index 345b3a30d..a14d8fb84 100644 --- a/armsrc/appmain.c +++ b/armsrc/appmain.c @@ -271,7 +271,7 @@ void SimulateTagHfListen(void) void ReadMem(int addr) { - const DWORD *data = ((DWORD *)addr); + const BYTE *data = ((BYTE *)addr); Dbprintf("%x: %02x %02x %02x %02x %02x %02x %02x %02x", addr, data[0], data[1], data[2], data[3], data[4], data[5], data[6], data[7]); diff --git a/armsrc/apps.h b/armsrc/apps.h index 308c37855..1c17882a5 100644 --- a/armsrc/apps.h +++ b/armsrc/apps.h @@ -13,7 +13,7 @@ typedef unsigned char byte_t; // The large multi-purpose buffer, typically used to hold A/D samples, // maybe processed in some way. -DWORD BigBuf[12000]; +DWORD BigBuf[8000]; /// appmain.h void ReadMem(int addr); diff --git a/armsrc/lfops.c b/armsrc/lfops.c index c94490892..27088b7ee 100644 --- a/armsrc/lfops.c +++ b/armsrc/lfops.c @@ -9,8 +9,6 @@ #include "hitag2.h" #include "../common/crc16.c" -int sprintf(char *dest, const char *fmt, ...); - void AcquireRawAdcSamples125k(BOOL at134khz) { if (at134khz) diff --git a/client/flash.c b/client/flash.c index f11505adc..b01bb154a 100644 --- a/client/flash.c +++ b/client/flash.c @@ -46,9 +46,6 @@ struct partition partitions[] = { {0, 0, 0, NULL}, }; -/* If translate is set, subtract PHYSICAL_FLASH_START to translate for old - * bootroms. - */ void WriteBlock(unsigned int block_start, unsigned int len, unsigned char *buf) { unsigned char temp_buf[256]; @@ -61,8 +58,6 @@ void WriteBlock(unsigned int block_start, unsigned int len, unsigned char *buf) UsbCommand c = {CMD_SETUP_WRITE}; -// printf("expected = %08x flush, ", ExpectedAddr); - int i; for(i = 0; i < 240; i += 48) { memcpy(c.d.asBytes, temp_buf+i, 48); @@ -74,7 +69,7 @@ void WriteBlock(unsigned int block_start, unsigned int len, unsigned char *buf) c.cmd = CMD_FINISH_WRITE; c.arg[0] = block_start; - printf("writing block %08x\r", c.arg[0]); +// printf("writing block %08x\r", c.arg[0]); memcpy(c.d.asBytes, temp_buf+240, 16); SendCommand(&c); WaitForAck(); @@ -104,8 +99,8 @@ void LoadFlashFromFile(const char *file, int start_addr, int end_addr) for (i=0; i 0 && phdr.p_paddr >= PHYSICAL_FLASH_START && (phdr.p_paddr + phdr.p_filesz) < PHYSICAL_FLASH_END) { printf("flashing offset=%x paddr=%x size=%x\n", phdr.p_offset, phdr.p_paddr, phdr.p_filesz); @@ -113,17 +108,25 @@ void LoadFlashFromFile(const char *file, int start_addr, int end_addr) printf("skipping forward 0x2000 because of strange linker thing\n"); phdr.p_offset += 0x2000; phdr.p_paddr += 0x2000; + phdr.p_filesz -= 0x2000; + phdr.p_memsz -= 0x2000; } fseek(f, phdr.p_offset, SEEK_SET); ExpectedAddr = phdr.p_paddr; while (ExpectedAddr < (phdr.p_paddr + phdr.p_filesz)) { unsigned int bytes_to_read = phdr.p_paddr + phdr.p_filesz - ExpectedAddr; - if (bytes_to_read > 256) bytes_to_read=256; + if (bytes_to_read > 256) + bytes_to_read=256; + else + memset(QueuedToSend, 0xFF, 256); fread(QueuedToSend, 1, bytes_to_read, f); -// printf("read %d bytes\n", bytes_to_read); - printf("WriteBlock(%x, %d, %p)\n", ExpectedAddr, bytes_to_read, QueuedToSend); - WriteBlock(ExpectedAddr, bytes_to_read, QueuedToSend); + printf("WriteBlock(%x, %d, %02x %02x %02x %02x %02x %02x %02x %02x ... %02x %02x %02x %02x %02x %02x %02x %02x)\n", ExpectedAddr, bytes_to_read, + QueuedToSend[0], QueuedToSend[1], QueuedToSend[2], QueuedToSend[3], + QueuedToSend[4], QueuedToSend[5], QueuedToSend[6], QueuedToSend[7], + QueuedToSend[248], QueuedToSend[249], QueuedToSend[250], QueuedToSend[251], + QueuedToSend[252], QueuedToSend[253], QueuedToSend[254], QueuedToSend[255]); + WriteBlock(ExpectedAddr, 256, QueuedToSend); ExpectedAddr += bytes_to_read; } }