写这个东西旨在分享一些开发经验,希望能对新接触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的开发工具并不是很成熟