#!/usr/local/bin/bdmctrl -D2 # # flash EmuTOS using bdmctrl # open $1 reset # 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 # 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 # 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 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 emutos-firebee.elf