基于AT91SAM7X平台的应用开发笔记——之一

来源:互联网 发布:国企年假 知乎 编辑:程序博客网 时间:2024/06/05 04:45

写这个东西旨在分享一些开发经验,希望能对新接触ARM平台开发的人有所帮助;

1.ARM7和ARM9的区别

        在决定开发一个应用之初,必须对开发平台进行选择,选择的一个重要依据就是要了解平台的本质特征;

        除了像CPU速度、片上资源等“量”上的区别之外,ARM7和ARM9(或者更高版本的ARM内核平台)之间比较本质的区别在于:ARM7是单片机,而ARM9是单板机;所谓的单片机就是指系统集成在一块芯片上,所以大部分的ARM7的内部都封装了存储器,也就是在不需要进行任何外扩资源的情况下就可以进行开发;而大部分的ARM9MCU的内部都没有集成存储器(可能有一些ROM和很小的内部RAM用于BOOT),也就是说一般需在板子上再增加SDRAM和FLASH等资源系统才能正常工作,即所谓的单板机;并且大部分的ARM7单片机都不具备外部总线,也是由这个特征决定的。

         如果是从0开始,并且又能满足主要的应用需求的情况下,选择ARM7是比较妥当的,ARM9因为没有内部存储资源,所以程序运行依赖于外部设备,比如外部SDRAM,外部NANDFLASH,有的还有NORFLASH,而这些资源在使用之前都必须进行适合的配置,所以要想让ARM9系统跑起来,你必须了解所有的细节,包括编译和加载,因为一般情况下,代码是放在NANDFLASH中,在运行时再由BOOTLOADER加载到SDRAM中,这就涉及到一个地址空间重新映射的问题,要解决这些问题,不仅需要正确的理解之外,工具也是必不可少的,可惜的是相对于ARM7而言ARM9的开发工具并不是很成熟,例如ARM9能很好的支持FLASH程序调试的工具就很少.

 

2.工具

        开发工具非常重要;

        JLink是SEGGER公司的一个功能很强的一个USB仿真器;与其他仿真器而言一个比较突出的特点的是它可以支持FLASH多断点调试,所谓的多断点就是说可以设置2个以上的断点。一般在RAM中DEBUG时使用的断点都是软件断点,即仿真器通过修改断点处的代码来达到“中断”程序运行的功能,但是在FLASH中DEBUG时,由于FLASH一般情况下是只读的,所以软件断点无法实现,只能通过CPU提供的硬件断点资源来实现,而一般CPU的硬件断点资源只有2个。这个也是很多人误解debug只能在RAM里进行的原因。

        Jlink支持很多编译器,包括IAR和ADS等;相对而言IAR对Jlink的支持更好。关于Jlink的安装和配置一般仿真器    供应商都会提供比较详细的说明,这里要说一下的是关于调试器的.mac宏文件,这个文件是用来定义仿真器启动时的初始化内容,一般包括PLL设置,REMAP操作,如果有外部资源的话可能还有外部资源的初始化(比如SDRAM等。。),这里需要注意的是,FLASH-debug和RAM-debug的仿真器初始化工作可能是不一样的,必须配置不同的.mac文件;

 

3.编译器

        其实大部分的编译器都是大同小异,选择取决于个人的喜好;ADS和IAR的主要区别在我看来就是ADS基本不升级,而IAR一直在升级,,但现在看下来主流应该是IAR。

         介绍ADS的书和材料很多,这里主要对IAR进行一些简单的介绍。

        待续。。