- Cleanedup toolchain

Committed on the Free edition of March Hare Software CVSNT Server.
Upgrade to CVS Suite for more features and support:
http://march-hare.com/cvsnt/


git-svn-id: http://moon:8086/svn/vhdl/trunk@381 cc03376c-175c-47c8-b038-4cd826a8556b
This commit is contained in:
2009-03-14 17:19:29 +00:00
parent 5f24a7e1dc
commit 58f704112c
15 changed files with 184 additions and 329 deletions
@@ -9,12 +9,17 @@ typedef struct _ssrec_t
UINT8 *data;
} srec_t;
typedef struct _sflash_alloc_tbl_t
{
UINT32 images[16];
} flash_alloc_tbl_t;
typedef struct _sflash_img_hdr_t
{
UINT8 magic[4];
UINT32 target_addr;
UINT32 img_offset;
UINT32 target_base;
UINT32 img_base;
UINT32 img_size;
UINT32 hdr_next;
UINT8 img_name[128];
@@ -207,7 +212,8 @@ void PrintCPUinfo(void)
#define MAX_IMG_SIZE (1024*1024) // bytes
#define SDRAM_BASE 0x40000000
#define FLASH_OFFSET 0x00000000
#define FLASHIO_OFFSET 0x00000000
#define FLASH_BASE 0x00000000
int main(int argc, char *argv[])
{
@@ -222,10 +228,11 @@ int main(int argc, char *argv[])
volatile UINT32 *pReg = (UINT32*)sys_led_port;
volatile UINT32 *pBtn = (UINT32*)sys_gpio0;
volatile UINT32 *pDip = (UINT32*)sys_gpio1;
volatile UINT8 *pMem;
volatile UINT32 *pROM32;
volatile UINT32 *pMem32;
volatile UINT32 *pFlash = (UINT32*)sys_flash_io;
volatile UINT32 *pFlashIO = (UINT32*)sys_flash_io;
volatile UINT32 *pUSB = (UINT32*)sys_usb_data;
volatile UINT8 *ram8 = (UINT8*)SDRAM_BASE;
@@ -237,20 +244,20 @@ int main(int argc, char *argv[])
// ----------------------------------------------------------
ram32 = (UINT32*)(SDRAM_BASE);
pFlash = (UINT32*)(sys_flash_io + FLASH_OFFSET);
pFlashIO = (UINT32*)(sys_flash_io + FLASHIO_OFFSET);
if (!*pBtn)
{
sputs("\n\n");
sputs("Booting from flash...");
sputs("Booting application from flash...");
pImg_hdr = (flash_img_hdr_t*)pFlash;
ram32 = (UINT32*)pImg_hdr->target_addr;
pFlash = (UINT32*)(sys_flash_io + pImg_hdr->img_offset);
pImg_hdr = (flash_img_hdr_t*)pFlashIO;
ram32 = (UINT32*)pImg_hdr->target_base;
pFlashIO = (UINT32*)(sys_flash_io + pImg_hdr->img_base);
img_size = pImg_hdr->img_size;
for (i=0; i < img_size/4; i++)
ram32[i] = pFlash[i];
ram32[i] = pFlashIO[i];
sputs("done\n\n");
@@ -259,6 +266,17 @@ int main(int argc, char *argv[])
else
{
sputs("\n\n");
if (*pDip)
{
sputs("Booting stage 2 from flash.\n");
Jump_to((void*)FLASH_BASE);
}
sputs("Reading HEX-Record from UART..");
if (flash_find(&flash, sys_flash_io) < 0)
{
sputs("Cannot find flash device. Exit now!\n\n");
@@ -269,8 +287,6 @@ int main(int argc, char *argv[])
for (i=0; i < MAX_IMG_SIZE/4; i++)
ram32[i] = 0;
sputs("\n\n");
sputs("Booting from UART..");
while(1)
{
@@ -299,13 +315,14 @@ int main(int argc, char *argv[])
img_hdr.magic[1] = 'F';
img_hdr.magic[2] = 'I';
img_hdr.magic[3] = '1';
img_hdr.target_addr = srec.addr;
img_hdr.target_base = srec.addr;
img_hdr.img_size = haddr - srec.addr;
img_hdr.img_offset = FLASH_OFFSET + sizeof(flash_img_hdr_t);
img_hdr.hdr_next = FLASH_OFFSET;
img_hdr.img_base = FLASHIO_OFFSET + sizeof(flash_img_hdr_t);
img_hdr.hdr_next = flash_get_nextblock(&flash, img_hdr.img_base + img_hdr.img_size);
sputs("Next free flash offset: ");print_word(img_hdr.hdr_next); sputs("\n");
sputs("Flash erase...");
result = flash_erase(&flash, FLASH_OFFSET, img_hdr.img_size + sizeof(flash_img_hdr_t));
result = flash_erase(&flash, FLASHIO_OFFSET, img_hdr.img_size + sizeof(flash_img_hdr_t));
if (result < 0)
{
sputs("failed!\n");
@@ -314,13 +331,13 @@ int main(int argc, char *argv[])
sputs("done\n");
sputs("Flash write...");
result = flash_program(&flash, FLASH_OFFSET, (UINT8*)&img_hdr, sizeof(flash_img_hdr_t));
result = flash_program(&flash, FLASHIO_OFFSET, (UINT8*)&img_hdr, sizeof(flash_img_hdr_t));
if (result < 0)
{
sputs("failed!\n");
break;
}
result = flash_program(&flash, img_hdr.img_offset, (UINT8*)ram32, img_hdr.img_size);
result = flash_program(&flash, img_hdr.img_base, (UINT8*)ram32, img_hdr.img_size);
if (result < 0)
{
sputs("failed!\n");
@@ -329,7 +346,7 @@ int main(int argc, char *argv[])
sputs("done\n");
sputs("Flash verify...");
result = flash_verify(&flash, img_hdr.img_offset, (UINT8*)ram32, img_hdr.img_size);
result = flash_verify(&flash, img_hdr.img_base, (UINT8*)ram32, img_hdr.img_size);
if (result < 0)
{
sputs("failed!\n");