AT91: How copy kernel code to SRAM and execute?

Jean-Christophe PLAGNIOL-VILLARD plagnioj at jcrosoft.com
Sun Feb 26 13:44:09 EST 2012


On 18:37 Sun 26 Feb     , ARM Linux wrote:
> I am looking for some examples on how to copy a small piece of kernel code
> to internal SRAM and then execute it.
> 
> Why?
> If you want to restart, you execute the "/sbin/reboot" command
> which will eventually call the "arch_reset" function, which in the AT91
> case will write to a "user reset" register.
> 
> The problem is that the chip may reset in the middle of an SDRAM
> read transfer.
> The SDRAM will see it's clock stopped and will continue to drive the bus.
> 
> When the ROM bootloader tries to access any boot memory (Parallel
> flash or NAND flash)
> on the parallel bus, there will be a bus conflict between the boot
> memory and the SDRAM,
> and the bootROM will not properly detect the boot program, and will enter
> an In System Programming mode.
> 
> This is described in the SAM9G20 datasheet, but is probably valid
> for all older generation AT91 devices as well.
> 
> The workaround seems to be to turn off the SDRAM and then do the reset.
> Obviously you cannot read instructions from SDRAM after it has been
> turned off.
> 
	Which version of the kernel do you use?

	There is no need to put the code in the sram, you just need to put the
	code in cached before shutdown the SDRAM/DDR

Best Regards,
J.



More information about the linux-arm-kernel mailing list