说明:
S3C44B0
Flash
RAM
型号:SST39VF160
大小:1M×16bit
起始地址:0x0
编程算法:SST39X160X Flash
1. 【环境】 MDK 3.40 及以上版本,ULINK2 仿真器,S3C44B0 开发板。
型号:HY57V65160B
大小:4M×16bit
起始地址:0x0C000000
RAM——分散加载文件
A. 首先设置 Linker 对话框,选择分散加载文件,如图 1.
图 1
在图 1 中点击 Edit,即可看到分散加载文件的内容:
; *************************************************************
; *** Scatter-Loading Description File generated by uVision ***
; *************************************************************
; Run in RAM
LR_ROM1 0x0C000000
{ ; load region
ER_ROM1 0x0C000000 0x050000
{ ; load address = execution address
*.o (RESET, +First)
*(InRoot$$Sections)
.ANY (+RO)
}
RW_RAM1 0x0C050000 0x020000
{ ; RW data
.ANY (+RW +ZI)
}
}
上面是一个最基础的分散加载文件,指定程序在RAM 中调试。0x0C000000 是
RAM 的起始地址,在本文的说明部分已经指出了。
您可以根据自己的实际情况编写分散加载文件
参考: http://www.embedinfo.com/FAQ/FAQanswer.asp?id=262
B. 然后设置 Debug 对话框,如下图,图 2。
在上图中点击 Edit 可以看到 DebugInRam.ini 的内容。
//*** <<< Use Configuration !disalbe! Wizard in Context Menu >>> ***
FUNC void Setup (void)
{
_WWORD (0x1c00000, 0x00000008);
_WWORD (0x01C80000, 0x11119102);
_WWORD (0x01C80004, 0x00000600);
_WWORD (0x01C80008, 0x00007FFC);
_WWORD (0x01C8000C, 0x00007FFC);
_WWORD (0x01C80010, 0x00007FFC);
_WWORD (0x01C80014, 0x00007FFC);
_WWORD (0x01C80018, 0x00007FFC);
_WWORD (0x01C8001C, 0x00018000);
_WWORD (0x01C80020, 0x00018000);
_WWORD (0x01C80024, 0x00860459);
_WWORD (0x01C80028, 0x00000010);
_WWORD (0x01C8002C, 0x00000020);
_WWORD (0x01C80030, 0x00000020);
// Program Entry Point
pc = 0x0C000000;
}
LOAD ./Run_In_Ram/LED_Test.axf INCREMENTAL
Setup(); // Setup for Running
go main
红色:初始化外部 SDRAM 以便 SDRAM 能够访问,如果您的 RAM 是内部
就不用初始化了。
绿色:因为程序是下载到 0x0c000000,而 PC 默认为 0.因此必须制定 PC
以是其能找到正确的程序。
蓝色:加载生成的.axf 文件。等同于选中图 2 中的 Load application at Startup
紫色: 指定程序运行到 main。等同于选中图 2 中的 Run to main
C. 设置好 A,B 两项,程序就能在 RAM 中正确运行和调试了。注意 Utilities 里面不
要选中 Update…,如图 3.
RAM—— 配置 target 对话框
图 3
前面我们利用分散加载文件实现了程序在 RAM 中的运行调试,下面我们介绍另外一种方法,
直接在 MDK 中配置选项框。
1) 配置 target,如图 4.
图 4
我们在看看分散加载文件,对比一下您就能发现其实这两种方法本质一样。
2) 看到这里大家是不是有个疑问,如何选择使用分散加载文件还是直接用 MDK 进行配置
呢?请看图 5.
图 5
注意一下红色标记。不勾上它就是选用分散加载文件了。对比一下图 1 吧。
OK,接下来要做的就是 RAM——分散加载文件中的步骤 B,C 了。这里就不重复咯。
两种方法已经结束完毕,大家看看代码吧