2.5.1 内存大、小端排序问题
对于需要多于8位的数据,为其分配一组连续的存储空间,字节排序有两种方式:小端(little endian)和大端(big endian)。Intel处理器采用小端方式,Freescale处理器采用大端方式。所谓大端是指高字节存储在低的地址中,而低字节则存在高地址中;小端则恰好相反,把低字节存在低地址中,而高字节存在高地址中。例如:将0x1234写入到以0x0000开始的内存中,则结果为:
地址 大端方式 小端方式
0x0000 0x12 0x34
0x0001 0x34 0x12
由于Freescale处理器采用大端方式,因此对汇编指令“LDHX $0080”的理解是:将地址为$0080的内容赋给寄存器HX的高字节H,$0081的内容赋给寄存器HX的低字节X。相应的汇编指令“STHX $0080”是寄存器HX的高字节(H)部分赋给存储单元$0080,低字节(X)部分赋给存储单元$0081。
2.5.2 嵌入式系统MCU的选择问题
嵌入式系统通常是一个专门执行某项任务的目标平台,而这种任务往往有着特定的要求,所以嵌入式系统意味着系统设计要高度优化,针对性强,而对于嵌入式系统“心脏”MCU的选择是一件至关重要的事情。
从2.1节的介绍可以了解到仅仅是Freescale的8位微处理器已经很多了,如果再了解Intel、ATMEL、德州仪器等公司的微处理器,你就会发现微处理器品种繁多,令你眼花缭乱,从众多的型号中选择出适合特定项目的MCU是一件不容易的事情。
在一个系统中使用什么样的嵌入式处理器内核主要取决于应用的领域、用户的需求、成本问题、开发的难易程度、芯片的购买途径等因素。从技术角度来看应遵循下列原则:
(1) 合理的ROM和RAM空间
ROM空间用于存放程序代码,RAM用于存放程序运行时的变量值,针对不同的应用系统,这种合理选择就显得尤为重要。比如开发一个带有LCD显示系统,而显示的汉字数字不多,这时可以考虑选择不带汉字字模的LCD,把所使用到的汉字字模固化到主控MCU的ROM中。假如要开发一个带有以太网功能的系统,主控MCU所具有的RAM空间就很关键,通常一帧以太帧的数据量在1500字节,所以选用4K的RAM空间是很必要的。
(2) 合适的片上子系统(模块)
根据实际需求,有侧重点地选择系统需要的模块:定时器、SCI、SPI、CAN、USB、A/D及PWM等。比如在制作一个方向测定系统,需要使用方向传感器,主控MCU则需要采集两路电压的模拟量,这时对A/D模块就有一定的要求,方向值在0~360度之间变化,8位精度的A/D模块就不能满足性能要求,一款带有10位精度的A/D模块的主控MCU将是不错的选择。
(3) 是否具有理想的开发工具支持
项目成功的关键在于优秀的开发工具,跨平台编译器和完善的调试支持,比如在线仿真器(ICE,In-Circuit Emulators)、模拟器(Simulators)等。具有好的开发工具、完整的源程序实例可以大大加快开发进度,提高开发效率。
练习题
【基础题】
1.MC908GP32的引脚主要分为哪几类?简要说明主要引脚的功能。
2.HC08系列、HCS08系列和RS08系列MCU有哪些差别?
3.HCS08系列MCU的主要特点是什么?
4.RS08系列MCU的主要特点是什么?
5.MC908GP32、MC9S08GB60和MC9RS08KA2的内存映像结构有些什么区别?
6.嵌入式系统中RAM的作用是什么?
7.大端和小端的含义是什么?在实际程序设计中,关于大端和小端要注意什么问题?
【综合题】
8.上Freescale的网站,了解Freescale微处理器的设计路线图,最新生产的微处理器的特性。
9.了解Intel、Micorchip、Atmal、Freescale公司生产的微处理器的体系结构。


