From 1359eb10c3da87ea4f4f103100f738e00c0f4778 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Markus=20Fr=C3=B6schle?= Date: Tue, 11 Dec 2012 19:56:50 +0000 Subject: [PATCH] fixed flash scripts (flash sector erase was not correct) which are now all verified and working --- SD_CARD/BaS_gcc/flash_bas.bdm | 19 +++++--- SD_CARD/BaS_gcc/flash_etos.bdm | 56 ++++++++++++++++-------- SD_CARD/BaS_gcc/flash_firetos.bdm | 41 +++++++++++++++++- SD_CARD/BaS_gcc/flash_fpga.bdm | 63 +++++++++++++++++++++++++-- SD_CARD/BaS_gcc/run_bas.bdm | 72 +++++++++++++++++++++++++++++++ 5 files changed, 222 insertions(+), 29 deletions(-) create mode 100755 SD_CARD/BaS_gcc/run_bas.bdm diff --git a/SD_CARD/BaS_gcc/flash_bas.bdm b/SD_CARD/BaS_gcc/flash_bas.bdm index 7a2da84..67a9007 100755 --- a/SD_CARD/BaS_gcc/flash_bas.bdm +++ b/SD_CARD/BaS_gcc/flash_bas.bdm @@ -72,14 +72,23 @@ flash 0xE0000000 # flash-plugin (target-based flashing) does not work yet #flash-plugin 0x10000000 0x4000 flash29.plugin -erase 0xE0000000 0 -erase 0xE0000000 0x1000 -erase 0xE0000000 0x2000 -erase 0xE0000000 0x3000 +# Erase flash from 0xE0000000 to 0xE00FFFFF (reserved space for BaS) +# +# Caution: sector offset numbers need to be the ones from the x16 address range +# column and they vary in size - needs to be exactly as in the data sheet (p. 9) +# +# contrary to documentation, it seems we need to erase-wait after each sector + +erase 0xE0000000 0x00000 +erase-wait 0xE0000000 +erase 0xE0000000 0x08000 +erase-wait 0xE0000000 +erase 0xE0000000 0x10000 +erase-wait 0xE0000000 +erase 0xE0000000 0x18000 erase-wait 0xE0000000 load -v bas.elf -#load -v ram.elf wait sleep 100 execute diff --git a/SD_CARD/BaS_gcc/flash_etos.bdm b/SD_CARD/BaS_gcc/flash_etos.bdm index 63c85ab..9afe344 100755 --- a/SD_CARD/BaS_gcc/flash_etos.bdm +++ b/SD_CARD/BaS_gcc/flash_etos.bdm @@ -13,24 +13,44 @@ write 0xFF000504 0x007F0001 4 # notify flashlib that we have flash at address 0xE0000000, length 0x7FFFFF, plugin is flash29 flash 0xe0000000 -# flash-plugin (target-based flashing) does not work yet -# flash-plugin 0x10000000 0x4000 flash29.plugin +# Erase flash from 0xE0600000 to 0xE06FFFFF (reserved space for EmuTOS) +# +# Caution: sector offset numbers need to be the ones from the x16 address range +# column and they vary in size - needs to be exactly as in the data sheet (p. 9) +# +# contrary to documentation, it seems we need to erase-wait after each sector -erase 0xe0000000 0x600000 -erase 0xe0000000 0x610000 -erase 0xe0000000 0x620000 -erase 0xe0000000 0x630000 -erase 0xe0000000 0x640000 -erase 0xe0000000 0x650000 -erase 0xe0000000 0x660000 -erase 0xe0000000 0x670000 -erase 0xe0000000 0x680000 -erase 0xe0000000 0x690000 -erase 0xe0000000 0x6a0000 -erase 0xe0000000 0x6b0000 -erase 0xe0000000 0x6c0000 -erase 0xe0000000 0x6d0000 -erase 0xe0000000 0x6e0000 -erase 0xe0000000 0x6f0000 +erase 0xe0000000 0x300000 erase-wait 0xe0000000 +erase 0xe0000000 0x308000 +erase-wait 0xe0000000 +erase 0xe0000000 0x310000 +erase-wait 0xe0000000 +erase 0xe0000000 0x318000 +erase-wait 0xe0000000 +erase 0xe0000000 0x320000 +erase-wait 0xe0000000 +erase 0xe0000000 0x328000 +erase-wait 0xe0000000 +erase 0xe0000000 0x330000 +erase-wait 0xe0000000 +erase 0xe0000000 0x338000 +erase-wait 0xe0000000 +erase 0xe0000000 0x340000 +erase-wait 0xe0000000 +erase 0xe0000000 0x348000 +erase-wait 0xe0000000 +erase 0xe0000000 0x350000 +erase-wait 0xe0000000 +erase 0xe0000000 0x358000 +erase-wait 0xe0000000 +erase 0xe0000000 0x360000 +erase-wait 0xe0000000 +erase 0xe0000000 0x368000 +erase-wait 0xe0000000 +erase 0xe0000000 0x370000 +erase-wait 0xe0000000 +erase 0xe0000000 0x378000 +erase-wait 0xe0000000 + load -v emutosfb.elf diff --git a/SD_CARD/BaS_gcc/flash_firetos.bdm b/SD_CARD/BaS_gcc/flash_firetos.bdm index c0d2829..41a137c 100755 --- a/SD_CARD/BaS_gcc/flash_firetos.bdm +++ b/SD_CARD/BaS_gcc/flash_firetos.bdm @@ -16,7 +16,44 @@ flash 0xe0000000 # flash-plugin (target-based flashing) does not work yet # flash-plugin 0x10000000 0x4000 flash29.plugin +# Erase flash from 0xE0400000 to 0xE04FFFFF (reserved space for FireTOS) +# +# Caution: sector offset numbers need to be the ones from the x16 address range +# column and they vary in size - needs to be exactly as in the data sheet (p. 9) +# # contrary to documentation, it seems we need to erase-wait after each sector -#erase 0xe0000000 -1 -#erase-wait 0xe0000000 + +erase 0xe0000000 0x200000 +erase-wait 0xe0000000 +erase 0xe0000000 0x208000 +erase-wait 0xe0000000 +erase 0xe0000000 0x210000 +erase-wait 0xe0000000 +erase 0xe0000000 0x218000 +erase-wait 0xe0000000 +erase 0xe0000000 0x220000 +erase-wait 0xe0000000 +erase 0xe0000000 0x228000 +erase-wait 0xe0000000 +erase 0xe0000000 0x230000 +erase-wait 0xe0000000 +erase 0xe0000000 0x238000 +erase-wait 0xe0000000 +erase 0xe0000000 0x240000 +erase-wait 0xe0000000 +erase 0xe0000000 0x248000 +erase-wait 0xe0000000 +erase 0xe0000000 0x250000 +erase-wait 0xe0000000 +erase 0xe0000000 0x258000 +erase-wait 0xe0000000 +erase 0xe0000000 0x260000 +erase-wait 0xe0000000 +erase 0xe0000000 0x268000 +erase-wait 0xe0000000 +erase 0xe0000000 0x270000 +erase-wait 0xe0000000 +erase 0xe0000000 0x278000 +erase-wait 0xe0000000 + load -v firetos.elf diff --git a/SD_CARD/BaS_gcc/flash_fpga.bdm b/SD_CARD/BaS_gcc/flash_fpga.bdm index f83a290..ea40e17 100755 --- a/SD_CARD/BaS_gcc/flash_fpga.bdm +++ b/SD_CARD/BaS_gcc/flash_fpga.bdm @@ -3,7 +3,7 @@ # firebee board initialization for bdmctrl # open $1 -reset +#reset # Init CS0 (BootFLASH @ E000_0000 - E07F_FFFF 8Mbytes) write 0xFF000500 0xE0000000 4 @@ -14,9 +14,64 @@ write 0xFF000504 0x007F0001 4 flash 0xe0000000 # flash-plugin (target-based flashing) does not work yet -# flash-plugin 0x10000000 0x4000 flash29.plugin +#flash-plugin 0x10000000 0x4000 flash29.plugin +# Erase flash from 0xE0700000 to 0xE07FFFFF (reserved space for FPGA) +# +# Caution: sector offset numbers need to be the ones from the x16 address range +# column and they vary in size - needs to be exactly as in the data sheet (p. 9) +# # contrary to documentation, it seems we need to erase-wait after each sector -#erase 0xe0000000 -1 -#erase-wait 0xe0000000 + +erase 0xe0000000 0x380000 +erase-wait 0xe0000000 +erase 0xe0000000 0x388000 +erase-wait 0xe0000000 +erase 0xe0000000 0x390000 +erase-wait 0xe0000000 +erase 0xe0000000 0x398000 +erase-wait 0xe0000000 +erase 0xe0000000 0x3A0000 +erase-wait 0xe0000000 +erase 0xe0000000 0x3A0000 +erase-wait 0xe0000000 +erase 0xe0000000 0x3A8000 +erase-wait 0xe0000000 +erase 0xe0000000 0x3B0000 +erase-wait 0xe0000000 +erase 0xe0000000 0x3B8000 +erase-wait 0xe0000000 +erase 0xe0000000 0x3C0000 +erase-wait 0xe0000000 +erase 0xe0000000 0x3C8000 +erase-wait 0xe0000000 +erase 0xe0000000 0x3D0000 +erase-wait 0xe0000000 +erase 0xe0000000 0x3D8000 +erase-wait 0xe0000000 +erase 0xe0000000 0x3E0000 +erase-wait 0xe0000000 +erase 0xe0000000 0x3E8000 +erase-wait 0xe0000000 +erase 0xe0000000 0x3F0000 +erase-wait 0xe0000000 +erase 0xe0000000 0x3F8000 +erase-wait 0xe0000000 +erase 0xe0000000 0x3F9000 +erase-wait 0xe0000000 +erase 0xe0000000 0x3FA000 +erase-wait 0xe0000000 +erase 0xe0000000 0x3FB000 +erase-wait 0xe0000000 +erase 0xe0000000 0x3FC000 +erase-wait 0xe0000000 +erase 0xe0000000 0x3FD000 +erase-wait 0xe0000000 +erase 0xe0000000 0x3FE000 +erase-wait 0xe0000000 +erase 0xe0000000 0x3FF000 +erase-wait 0xe0000000 + +wait + load -v FPGA.elf diff --git a/SD_CARD/BaS_gcc/run_bas.bdm b/SD_CARD/BaS_gcc/run_bas.bdm new file mode 100755 index 0000000..b6bd6ec --- /dev/null +++ b/SD_CARD/BaS_gcc/run_bas.bdm @@ -0,0 +1,72 @@ +#!/usr/local/bin/bdmctrl -D2 +# +# firebee board initialization for bdmctrl +# +open $1 +reset +sleep 10 + +wait + +# set VBR +#write-ctrl 0x0801 0x00000000 +sleep 10 +# Turn on MBAR at 0xFF00_0000 +write-ctrl 0x0C0F 0xFF000000 + +# Turn on MMUBAR at 0xFF04_0000 +write-ctrl 0x0008 0xFF040001 + +# Turn on RAMBAR0 at address FF10_0000 +write-ctrl 0x0C04 0xFF100007 +sleep 10 +# Turn on RAMBAR1 at address FF10_1000 +write-ctrl 0x0C05 0xFF101001 +sleep 10 + +# Init CS0 (BootFLASH @ E000_0000 - E07F_FFFF 8Mbytes) +write 0xFF000500 0xE0000000 4 +write 0xFF000508 0x00001180 4 +write 0xFF000504 0x007F0001 4 +# Init CS1 (Atari I/O address range) +write 0xFF00050C 0xFFF00000 4 +write 0xFF000514 0x00002180 4 +write 0xFF000510 0x000F0001 4 +# Init CS2 (FireBee 32 bit I/O address range) +write 0xFF000518 0xF0000000 4 +write 0xFF000520 0x00002100 4 +write 0xFF00051C 0x07FF0001 4 +# Init CS3 (FireBee 16 bit I/O address range) +write 0xFF000524 0xF8000000 4 +write 0xFF00052C 0x00000180 4 +write 0xFF000528 0x03FF0001 4 +# Init CS4 (FireBee video address range) +write 0xFF000530 0x40000000 4 +write 0xFF000538 0x00000018 4 +write 0xFF000534 0x003F0001 4 + + +# SDRAM Initialization @ 0000_0000 - 1FFF_FFFF 512Mbytes +write 0xFF000004 0x000002AA 4 # SDRAMDS configuration +write 0xFF000020 0x0000001A 4 # SDRAM CS0 configuration (128Mbytes 0000_0000 - 07FF_FFFF) +write 0xFF000024 0x0800001A 4 # SDRAM CS1 configuration (128Mbytes 0800_0000 - 0FFF_FFFF) +write 0xFF000028 0x1000001A 4 # SDRAM CS2 configuration (128Mbytes 1000_0000 - 17FF_FFFF) +write 0xFF00002C 0x1800001A 4 # SDRAM CS3 configuration (128Mbytes 1800_0000 - 1FFF_FFFF) +write 0xFF000108 0x73622830 4 # SDCFG1 +write 0xFF00010C 0x46770000 4 # SDCFG2 + +write 0xFF000104 0xE10D0002 4 # SDCR + IPALL +write 0xFF000100 0x40010000 4 # SDMR (write to LEMR) +write 0xFF000100 0x048D0000 4 # SDMR (write to LMR) +write 0xFF000104 0xE10D0002 4 # SDCR + IPALL +write 0xFF000104 0xE10D0004 4 # SDCR + IREF (first refresh) +write 0xFF000104 0xE10D0004 4 # SDCR + IREF (first refresh) +write 0xFF000100 0x008D0000 4 # SDMR (write to LMR) +write 0xFF000104 0x710D0F00 4 # SDCR (lock SDMR and enable refresh) + +write 0xFF000240 0x80000000 4 # disable watchdog arbiter + +load -v ram.elf +wait +sleep 100 +execute