No announcement yet.

Blank screen after executing Flash_Run

  • Filter
  • Time
  • Show
Clear All
new posts

  • Blank screen after executing Flash_Run


    I am developing a bootloader type application for the Diablo16. It interfaces with an external uSD Card over SPI and updates the display memory flash, internal SD Card, and an off board processor (via serial). My bootloader copies the .4XE into the flashbank starting with an erase, followed by buffering the first 2k, writing the next 15 pages, and then writing page 0.

    Hardware is a 50DT R20.D160609

    Everything is working properly except for the last step of starting the main application (preexisting code from another developer that I can adjust if needed, uses 100% of one flash bank). After loading the main application into bank1, I issue the flash_Run(FLASHBANK_1) instruction. At that point, the screen goes blank.

    My code properly runs a copy of itself in Bank 5. I also have short test application that work in all banks. I have additionally verified that if the bootloader places the application into flash bank 0, the application runs properly when the system is powered on.
    While trying to find the root cause, I bypassed all the normal bootloader code by placing a flash_Run at the start. That did not work. However, if I also added a print statement before flash_Run, it did start the code in Bank 1 properly. I have also had different levels of success in adding a print and while(1) to the beginning of the application code, however removing the while(1) then resulted in the blank screen again. Operating without the external board and processor did not change the behavior.

    I'm quite puzzled. Is there some setting/ option I am missing? I saw the notice regarding global variables and flash_Exec, that does not apply to flash_Run, correct?

    Thank you for any tips or advice,

    P.S. MIstakenly posted this in the HW section yesterday (failure to scroll on my part).

  • #2
    After working with Paul C. on the problem, Thanks Paul!, it turns out that byte address 0x000E needs to be set to the flash bank you are writing the .4XE to. The IDE and flash_LoadFile do this automatically.