问题描述
当我在非2次幂寻址模式下为SPI闪存生成“.mcs”文件时,如何为PROMGen指定MultiBoot图像的地址?
解决/修复方法
在MultiBoot应用程序中,您需要为MultiBoot图像指定两个地址;一个是MultiBoot图像加载地址,它将被编程到GENERAL1和GENERAL2寄存器中,另一个是PROM文件中MultiBoot图像的起始地址(这个地址是你输入PROMGen的地址)。
对于2-power-of 2寻址SPI闪存,例如Numonyx M25Pxx,两个地址相同。但是,Atmel闪存,例如AT45DBxxxD,默认情况下处于非2次幂寻址模式。
“.mcs”文件中MultiBoot图像的起始地址不再等于MultiBoot图像加载地址。
“.mcs”文件中MultiBoot图像的起始地址等于MultiBoot图像加载Flash内部地址之前的字节数。
例如,在AT45DB161D默认寻址模式下,如果MultiBoot图像位于地址0x200000,则MultiBoot图像加载地址为0x200000,则12位页面地址为0x800,页面中的10位字节地址为0x000 。
有关其地址格式,请参阅AT45DB161D的数据表。
PROMGen的MultiBoot映像的起始地址是0x800 X 0x210 = 0x108000,因为AT45DB161D每页有528(0x210)个字节。
然后,您可以使用以下PROMGen命令生成“.mcs”文件:
promgen -w -p mcs -c FF -o multiboot_at45db161d -u 0 image1.bit -u 108000 image2.bit -s 2048 -spi
没有回复内容