优龙YLP2440开发板点滴

来源:互联网 发布:软件工程硕士 在职学费 编辑:程序博客网 时间:2024/06/15 15:16

  ARM Jtag调试时,默认AXD并不会初始化SDRAM(这也难怪,AXD并不知道板子的连线情况),因此在把代码下到SDRAM调试之前需要进行初始化。可以利用NAND中已有的bootloader来实现SDRAM初始化:先复位JTAG,然后复位板子,看到SD卡旁的LED闪烁了就说明bootloader已经运行了,SDRAM也可用了。也可以让AXD通过JTAG配置2440SDRAM控制寄存器实现对SDRAM的初始化,引用别人的;劳动成果:

通过axd命令行对目标板进行设置

     因为我用的yl2440板是配置为nand启动的,sdram是在0x30000000地址的,所以需要先对存储器控制寄存器进行设置,在axd下设置方法是:选systems views->command lines interface,输入如下命令对寄存器设置
                     
地址                            长度
setmem 0x53000000, 0x00000000,  32
还可以将要设置的寄存器写入一个文件,在命令行用ob(obey) config.ini即可批量执行设置指令或在options->Configure Interface中做如下设置

我的config文件内容如下:
setmem 0x53000000, 0x00000000,       32
setmem 0x4a000008, 0xffffffff,               32
setmem 0x4a00001c, 0x00007fff,          32
setmem 0x48000000, 0x2212d110,       32
setmem 0x48000004, 0x00000f40,        32
setmem 0x48000008, 0x00002e50,       32
setmem 0x4800000c, 0x00002e50,       32
setmem 0x48000010, 0x00002e50,       32
setmem 0x48000014, 0x00002e50,       32
setmem 0x48000018, 0x00002e50,       32
setmem 0x4800001c, 0x00018005,       32
setmem 0x48000020, 0x00018005,       32
setmem 0x48000024, 0x00960542,       32
setmem 0x48000028, 0x00000032,       32
setmem 0x4800002c, 0x00000030,       32
setmem 0x48000030, 0x00000030,       32
如果设置正确则开发版的SDRAM生效,则可以加载目标代码了

 

工程设置RO_baseImgae entry point都为0x30100000,实测表明无论把bin文件下载到SDRAM中的任何地方都可以正常执行(当然是通过BIOS下载并移交控制权的),工程设置中将2440init.o定位在映象的最前面,因此2440init.S不仅负责C代码的搬移工作而且它的执行是地址无关的。

以上恰恰说明了刚买来板子的时候可以用JLINK直接跑起来而不需要在AXD中输入SDRAM初始化命令(那个时候还不知道SDRAM要初始化,只是看到2440init.o中有对SDRAM的初始化)或者通过写一个固定txt文件来针对板子初始化。

 

原创粉丝点击