IAR调试S3C6410的笔记(一)

    最近公司的项目需要用到S3C6410。经过多方斟酌,最后选定飞凌的核心板(不是广告,只是因为它引出的管教比较多,而且有定位孔。最近飞凌和友善因为Flash问题打的火热,挺有意思~)。
    悲催的是KEIL只支持到arm9,IAR没有现成的工程例程。没办法,只能用飞凌给的RVDS2.2来调试裸机了(什么RVDS?简直和ADS1.2一样)。或许作为研发人员多多少少都有些强迫症吧,看着RVDS的界面十分不爽,于是开始了IAR的折腾之旅。
    其实我对IAR还是很有好感的。简洁的界面、高效的编译、对Jlink的完美支持,这里就不得不说一下keil了,keil4.12已经有去掉jlink的趋势了, 虽然可以在TOOLS.INI添加,可KEIL也太小气了吧~
    啰啰嗦嗦说了那么多,下面进入正题吧。先贴一张IAR链接调试时的流程图一张(摘自EWARM Debugging Guide)

IAR调试S3C6410的笔记(一)_第1张图片
    我个人的理解是Debugger先将CPU初始化到能下载代码的程度,包括时钟配置、初始化SDRAM/FLASH控制器等,然后按照一定的规则、把编译好的代码(包括启动代码、中断向量表、堆栈、函数等)写入SDRAM/FLASH中,把PC指针指向启动代码的首地址,开始执行程序(其实代码在向main函数跳转的时候还会先执行一段编译器代码,这里就不详细说了)。
    IAR是如何控制jlink初始化CPU、jlink是怎么分配地址空间的,这就引出了两个非常重要的文件:mac文件和icf文件。
    其中mac文件就是jlink初始化CPU的配置文件,通过mac的引导,jlink将对CPU的寄存器进行配置。
    icf文件是内存分配文件,在icf里可以配置堆栈段、数据段、程序段的起始地址和大小。 
    至于mac和icf文件的具体用法可以百度解决,最好是能看英文的帮助文档。哎,真后悔当初没有好好学英语。


你可能感兴趣的:(c,百度,Flash,文档,编译器,debugging)