原始出处地址:http://blog.csdn.net/believe_yx/article/details/6673727
环境:EWARM 6.30.1 、Tiny6410
下面进入正题吧。先贴一张IAR链接调试时的流程图一张(摘自EWARM Debugging Guide)
我个人的理解是Debugger先将CPU初始化到能下载代码的程度,包括时钟配置、初始化SDRAM/FLASH控制器等,然后按照一定的规则、把编译好的代码(包括启动代码、中断向量表、堆栈、函数等)写入SDRAM/FLASH中,把PC指针指向启动代码的首地址,开始执行程序(其实代码在向main函数跳转的时候还会先执行一段编译器代码,这里就不详细说了)。
EWARM是如何控制jlink初始化CPU、jlink是怎么分配地址空间的,这就引出了两个非常重要的文件:mac文件和icf文件。
其中mac文件就是jlink初始化CPU的配置文件,通过mac的引导,jlink将对CPU的寄存器进行配置。(类似于U-boot所做的对硬件初始化工作)
icf文件是内存分配文件,在icf里可以配置堆栈段、数据段、程序段的起始地址和大小。(EWARM 5.0以前版本为xcf)
至于mac和icf文件的具体用法可以百度解决,最好是能看英文的帮助文档。哎,真后悔当初没有好好学英语。