Keil ARM RVMDK软件仿真的设置

   弄了几天,终于吧ADS原来的一个LED小程序移植到KEIL ARM里面,并且搞掂可以在SDRAM中调试了。首先说说硬件平台,ARM是三星的S3C2410,SDRAM是HY57V561620BT*2,64M容量,标准的SDRAM片选接在nGSC6,故地址空间在0x30000000~0x33ffffff。软件平台是Keil ARM就是Realview MDK V3.40中国评估版,可以在www.realview.com.cn上下载,现在破解不是很好,几乎每次调试后都要重新破解,以前用的V3.05虽然可以完全破解,但是3.05版的darmss9.dll文件,不支持2410,无法编译2410的程序,另外我也试过V3.20,但是不直接用wiggler JTAG来调试,所以就直接上3.40版本的RVMDK了,JTAG用H-JTAGV9.1,很快H-JTAG就可以支持NAND FLASH的烧写了,twentyone加油!下面详细介绍如何设置RVMDK。
       安装RVMDK后,我这里用了本来ADS工程带的start.s启动代码,下次再试试用keil向导带的S3C2410.s启动代码,把其它C程序文件添加到keil工程中,设置工程属性option for target,在target页中,Xtal设置的晶振频率只在软件仿真中有用,实际硬件调试,还是要设置MPLLCON寄存器实现,关键是设置Read/Only Memory Areas与Read/Write Memory Areas,这里是跟SDRAM的地址对应才行。如果是软件仿真,就在下面on-chip的IROM1与IRAM1前打钩,Startup钩上。

        另外是Linker页的设置,把Use Memory Layout form Target Dialog的小钩去掉,在R/O base与R/W base设置,另外我这里使用了分散加载文件Scatter,在Scatter file中添加,misc controls中要设置--entry入口地址0x30000000与SDRAM地址对应,输入
--info totals --entry 0x30000000 --scatter .\output\start.sct --info sizes
.\output\start.sct 注意替换自己编写的scatter文件的目录路径。如果是软件仿真,则
R/O base与R/W base设置为0x00000000 与0x00002000,misc control内容改为
--info totals --entry 0x00000000 --scatter .\output\start.sct --info sizes
加载的scatter文件内容也要做修改,下面有介绍。
 

        另外   重新编写.sct加载文件,不然会出现
   Error: L6218E: Undefined symbol Image$$RW$$Limit 这样的错误,说没定义RW段,
重新编写的.sct加载文件

LR_IROM1 0x30000000 0x00002000 {    ; load region size_region
RO +0   { ; load address = execution address
   *.o (RESET, +First) ;(RESET, +First)的含义是把RESET段的内容编译后放在0x00000000位置
   ;*(InRoot$$Sections)
   .ANY (+RO)
}
RW 0x30002000 0x00002000 { ; RW data
   .ANY (+RW +ZI)
}
ZI +0   { ; ZI data
   .ANY (+ZI)
}
}

    如果是软件仿真,则改为如下,在0x0地址开始调试

LR_IROM1 0x00000000 0x00002000 {    ; load region size_region
RO +0   { ; load address = execution address
   *.o (RESET, +First) ;(RESET, +First)的含义是把RESET段的内容编译后放在0x00000000位置
   ;*(InRoot$$Sections)
   .ANY (+RO)
}
RW 0x00002000 0x00002000 { ; RW data
   .ANY (+RW +ZI)
}
ZI +0   { ; ZI data
   .ANY (+ZI)
}
}

        还有Debug页的设置,选Use Simulator是软件仿真,右边选择RDI Interface Driver,用wiggler JTAG,再点Settings,选择H-JTAG.DLL的路径,这些设置不懂可以装了H-JTAG后看它的帮助文档有介绍。
Load Application at Startup前的小钩钩去掉,在Initialization File中,添加初始化脚步文件.ini,编辑内容如下,关键是定义上电后PC指针地址,我的RAM.ini文件如下,另外提醒RVMDK区分大小写,Main函数要注意大小写一致

FUNC void Setup (void) {
// Program Entry Point
PC = 0x30000000;
}
LOAD output\start.axf INCREMENTAL      // Download

Setup();                             // Setup for Running

g, Main


你可能感兴趣的:(Keil ARM RVMDK软件仿真的设置)