From cd3c5a91d63d0cc91b3164017f62d4c9694a7fa0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Markus=20Fr=C3=B6schle?= Date: Sun, 11 Aug 2013 05:30:59 +0000 Subject: [PATCH] enabled target support for flashing. Seems to work at least for smaller binaries (BaS) while it doesn't for larger ones (EmuTOS). This seems to be caused by large buffers which cannot be reached by PC relative adressing on the target. --- BaS_gcc/flash_scripts/flash_bas.bdm | 36 ++++++++++++++++++++++++---- BaS_gcc/flash_scripts/flash_etos.bdm | 27 ++++++++++++++++++++- 2 files changed, 58 insertions(+), 5 deletions(-) diff --git a/BaS_gcc/flash_scripts/flash_bas.bdm b/BaS_gcc/flash_scripts/flash_bas.bdm index 7baad45..2b8f0ae 100755 --- a/BaS_gcc/flash_scripts/flash_bas.bdm +++ b/BaS_gcc/flash_scripts/flash_bas.bdm @@ -1,4 +1,4 @@ -#!/usr/local/bin/bdmctrl -D2 +#!/usr/local/bin/bdmctrl # # firebee board initialization for bdmctrl # @@ -8,18 +8,46 @@ sleep 10 wait +# Turn on MBAR at 0xFF00_0000 +write-ctrl 0x0C0F 0xFF000000 + +# set VBR +write-ctrl 0x0801 0x00000000 + +# # Init CS0 (BootFLASH @ E000_0000 - E07F_FFFF 8Mbytes) write 0xFF000500 0xE0000000 4 write 0xFF000508 0x00001180 4 write 0xFF000504 0x007F0001 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) +sleep 100 +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) +sleep 10 + + +# use system sdram as flashlib scratch area. +# TODO: plugin flashing seems to work o.k. now for smaller binaries, while it doesn't for larger ones (EmuTOS) yet. +# This seems to be related to large flash buffers and PC-relative adressing of the plugin +flash-plugin 0x1000 0xf000 flash29.plugin # 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 0xE0000000 to 0xE00FFFFF (reserved space for BaS) # # Caution: sector offset numbers need to be the ones from the x16 address range diff --git a/BaS_gcc/flash_scripts/flash_etos.bdm b/BaS_gcc/flash_scripts/flash_etos.bdm index 9afe344..ff6dda5 100755 --- a/BaS_gcc/flash_scripts/flash_etos.bdm +++ b/BaS_gcc/flash_scripts/flash_etos.bdm @@ -10,6 +10,31 @@ write 0xFF000500 0xE0000000 4 write 0xFF000508 0x00001180 4 write 0xFF000504 0x007F0001 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) +sleep 100 +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) +sleep 10 + + +# use system sdram as flashlib scratch area +# flashing EmuTOS with plugin does not work yet (at least not for 64bit hosts) +#flash-plugin 0x1000 0xf000 flash29.plugin + # notify flashlib that we have flash at address 0xE0000000, length 0x7FFFFF, plugin is flash29 flash 0xe0000000 @@ -53,4 +78,4 @@ erase-wait 0xe0000000 erase 0xe0000000 0x378000 erase-wait 0xe0000000 -load -v emutosfb.elf +load -v emutos.elf