Post Go back to editing

Boot Kernel modification for SPI master boot from different address

Hello,

    I am attempting to boot from another location other than 0x00 in Master SPI boot. I am following the instructions detailed in the Note EE-345 "Boot Kernel Customization and Firmware Upgradeability...." Much like the example in the note I have two applications both with boot kernels at addresses 0x000000 and 0x010000. The boot kernel at address 0x000000 has been modified to load the application at 0x010600. Essentially it does not work, I am not sure it typical debugging technics would be helpful here (ie using the catch line jump (pc,0) ). I inserted the SPI code shown in the note in my User_Init section. My gut feeling is that making these SPI changes is somehow tampering with the flow of program data to be loaded.

    I have attached my 369_spi.asm file for USer_Init section review. It follows very closely to the example. If I comment all of the SPI related code out, it will load the application at 0x000600 just fine. This confirms the PLL section is OK.

Thanks,

Glen

369_spi.asm.zip
Parents
  • It seems as though I cannot make any changes to anything SPI related. Or else it would corrupt the default SPI setup for the transmission of the program code. For example, if I do nothing else SPI and only do the first two lines of the example code (r0 = 0x80; dm(SPIDMAC) = r0;) then no program will load. However, if I save and restore the original value of the SPIDMAC register, then my program loads fine. So its seems that maybe if I backup and restore each of the altered SPI registers it might work. I have yet to complete this. However, this seems like an awful big step to leave out of the engineering note. This is why I feel as though I am missing something altogether. But I do not see what it could be.

Reply
  • It seems as though I cannot make any changes to anything SPI related. Or else it would corrupt the default SPI setup for the transmission of the program code. For example, if I do nothing else SPI and only do the first two lines of the example code (r0 = 0x80; dm(SPIDMAC) = r0;) then no program will load. However, if I save and restore the original value of the SPIDMAC register, then my program loads fine. So its seems that maybe if I backup and restore each of the altered SPI registers it might work. I have yet to complete this. However, this seems like an awful big step to leave out of the engineering note. This is why I feel as though I am missing something altogether. But I do not see what it could be.

Children
No Data