原创 基于51单片机的实时操作系统的研究(二

2010-6-15 11:04 2296 9 9 分类: MCU/ 嵌入式

基于51单片机的实时操作系统的研究(二)


51操作系统 2009-04-17 14:37:46 阅读398 评论1 字号:



1.4. 嵌入是系统的开发过程                                                            


    在嵌入式开发过程中有宿主机和目标机的角色之分:宿主机是执行编译、链接、定址过程的计算机;目标机指运行嵌入式软件的硬件平台。首先须把应用程序转换成可以在目标机上运行的二进制代码。这一过程包含三个步骤:编译、链接、定址。编译过程由交叉编译器实现。所谓交叉编译器就是运行在一个计算机平台上并为另一个平台产生代码的编译器。常用的交叉编译器有GNU C/C++gcc)。编译过程产生的所有目标文件被链接成一个目标文件,称为链接过程。定址过程会把物理存储器地址指定给目标文件的每个相对偏移处。该过程生成的文件就是可以在嵌入式平台上执行的二进制文件。
   
嵌入式开发过程中另一个重要的步骤是调试目标机上的应用程序。嵌入式调试采用交叉调试器,一般采用宿主机-目标机的调试方式,它们之间由串行口线或以太网或BDM线相连。交叉调试有任务级、源码级和汇编级的调试,调试时需将宿主机上的应用程序和操作系统内核下载到目标机的RAM中或直接烧录到目标机的ROM中。目标监控器是调试器对目标机上运行的应用程序进行控制的代理(Debugger Agent),事先被固化在目标机的FlashROM中,在目标机上电后自动启动,并等待宿主机方调试器发来的命令,配合调试器完成应用程序的下载、运行和基本的调试功能,将调试信息返回给宿主机。
    
向嵌入式平台移植软件 : 大部分嵌入式开发人员选用的软件开发模式是先在PC机上编写软件,再进行软件的移植工作。在PC机上编写软件时,要注意软件的可移植性,选用具有较高移植性的编程语言(如C语言),尽量少调用操作系统函数,注意屏蔽不同硬件平台带来的字节顺序、字节对齐等问题。


1.4.1  代码优化注意的问题


嵌入式系统对应用软件的质量要求更高,因而在嵌入式开发中尤其须注意对代码进行优化,尽可能地提高代码的效率,减少代码的大小。虽然现代CC++编译器都提供了一定程度的代码优化,但大部分由编译器执行的优化技术仅涉及执行速度和代码大小的平衡,不可能使程序既快又小,因而必须在编写嵌入式软件时采取必要的措施。
 
1)提高代码的效率

    ①switch-case
语句。在程序中经常会使用switch-case语句,每一个由机器语言实现的测试和跳转仅仅是为了决定下一步要做什么,就浪费了处理器时间。为了提高速度,可以把具体的情况按照它们发生的相对频率排序。即把最可能发生的情况放在第一,最不可能发生的情况放在最后,这样会减少平均的代码执行时间。
   
全局变量。使用全局变量比向函数传递参数更加有效率,这样做去除了函数调用前参数入栈和函数完成后参数出栈的需要。当然,使用全局变量会对程序有一些负作用。
 
2)减小代码的大小
   
嵌入式系统编程应避免使用标准库例程,因为很多大的库例程设法处理所有可能的情况,所以占用了庞大的内存空间,因而应尽可能地减少使用标准库例程。
 
3)避免内存泄漏
  
用户内存空间(堆)为RAM中全局数据和任务堆栈空间都分配后的剩余空间,为了使程序能有足够的内存运行,必须在申请的内存不用后及时地将其释放,以确保再次申请时能有空间。如果程序中存在内存泄漏(即申请内存后没有及时释放)的情况,程序最终会因为没有足够的内存空间而无法运行。
  以上简单说明了嵌入式系统的特点、嵌入式产品的开发和应用。嵌入式系统开发和其他的开发工作实质上并无区别,唯一改变的是每个硬件平台都是独特的,这一个不同点导致了许多附加的开发复杂性,因而,在嵌入式开发过程中要格外注意软件创建过程;而且,在开发嵌入式产品之前要对选用的嵌入式硬件平台有较多的了解,具备相应的硬件知识,和硬件工程师密切配合;在选用嵌入式操作系统和硬件平台时要根据所要开发的应用的需要以及成本等方面的考虑选择合适的系统和平台。


1.4.2 本论文中电路所使用的单片机的简单介绍


    P89C51RA2/RB2/RC2/RD2xx包含8K/16K/32K/64K可并行可编程的非易失性带FLASH程序存储器,并可实现对器件串行在系统编程(ISP)和在应用中编程(IAP)。在系统编程(ISPIn-System Programming):当MCU安装在用户板上时,允许用户下载新的代码。在应用中编程(IAPIn-Application Programming):MCU可以在系统中获取新代码并对自己重新编程。这种方法允许通过调制解调器连接进行远程编程。片内ROM中固化的默认的串行加载程序(Boot Loader)允许ISP通过UART将程序代码装入Flash存储器,而Flash代码中则不需要加载程序。对于IAP,用户程序通过使用片内ROM中的标准程序对Flash存储器进行擦除和重新编程。
     
该器件可通过并行编程或在系统编程对一个Flash位进行编程,从而选择6时钟或12时钟模式。此外,也可通过时钟控制寄存器CKCON中的X2位选择6时钟或12时钟模式。
另外,当处于6时钟模式时,片内外设可以选择一个机器周期6时钟或是12时钟。可通过CKCON寄存器对每个外设的时钟源进行选择。
      
该系列微控制器是80C51微控制器的派生器件,是采用先进CMOS工艺制造的8位微控制器,指令系统与80C51完全相同。该器件有48I/O口、316位定时/计数器、多中断源-4中断优先级-嵌套的中断结构、1个增强型UART、片内振荡器及时序电路。
      
新增的特性使得P89C51RA2/RB2/RC2/RD2成为功能更强大的微控制器,从而更好地支持需要用到脉宽调制,高速I/O,递增/递减计数功能(如电机控制)等应用场合。


主要的特性
基于51单片机的实时操作系统的研究(二) - 风枝惊鹊 - 我的地盘基于51单片机的实时操作系统的研究(二) - 风枝惊鹊 - 我的地盘80C51
中央处理单元;
基于51单片机的实时操作系统的研究(二) - 风枝惊鹊 - 我的地盘基于51单片机的实时操作系统的研究(二) - 风枝惊鹊 - 我的地盘
具有ISPIAP功能的片内FLASH程序存储器;
基于51单片机的实时操作系统的研究(二) - 风枝惊鹊 - 我的地盘基于51单片机的实时操作系统的研究(二) - 风枝惊鹊 - 我的地盘
片内Boot ROM包含底层FLASH编程子程序,以实现通过UART下载程序;
基于51单片机的实时操作系统的研究(二) - 风枝惊鹊 - 我的地盘基于51单片机的实时操作系统的研究(二) - 风枝惊鹊 - 我的地盘
可实现最终用户应用的编程(IAP);
基于51单片机的实时操作系统的研究(二) - 风枝惊鹊 - 我的地盘基于51单片机的实时操作系统的研究(二) - 风枝惊鹊 - 我的地盘
87C51兼容的并行编程硬件接口;
基于51单片机的实时操作系统的研究(二) - 风枝惊鹊 - 我的地盘基于51单片机的实时操作系统的研究(二) - 风枝惊鹊 - 我的地盘
每个机器周期为6个时钟周期(标准);


  基于51单片机的实时操作系统的研究(二) - 风枝惊鹊 - 我的地盘可通过并行编程器选择6时钟/12时钟模式(芯片擦除后默认的时钟模式为12时钟);基于51单片机的实时操作系统的研究(二) - 风枝惊鹊 - 我的地盘可通过ISP对选择6时钟/12时钟模式的Flash位进行擦除和编程;


基于51单片机的实时操作系统的研究(二) - 风枝惊鹊 - 我的地盘可通过SFR位“在运行中改变”6时钟/12时钟模式;


基于51单片机的实时操作系统的研究(二) - 风枝惊鹊 - 我的地盘CPU6时钟模式时,外围功能(PCA、定时器、UART)可选择使用6时钟/12时钟模式;基于51单片机的实时操作系统的研究(二) - 风枝惊鹊 - 我的地盘基于51单片机的实时操作系统的研究(二) - 风枝惊鹊 - 我的地盘采用6时钟周期时频率可高达20MHz(相当于40MHz),采用12时钟周期时频率可达33MHz基于51单片机的实时操作系统的研究(二) - 风枝惊鹊 - 我的地盘基于51单片机的实时操作系统的研究(二) - 风枝惊鹊 - 我的地盘全静态操作;基于51单片机的实时操作系统的研究(二) - 风枝惊鹊 - 我的地盘基于51单片机的实时操作系统的研究(二) - 风枝惊鹊 - 我的地盘RAM可外部扩展到64K字节;基于51单片机的实时操作系统的研究(二) - 风枝惊鹊 - 我的地盘基于51单片机的实时操作系统的研究(二) - 风枝惊鹊 - 我的地盘4个中断优先级;


基于51单片机的实时操作系统的研究(二) - 风枝惊鹊 - 我的地盘7个中断源;基于51单片机的实时操作系统的研究(二) - 风枝惊鹊 - 我的地盘 48I/O口;基于51单片机的实时操作系统的研究(二) - 风枝惊鹊 - 我的地盘基于51单片机的实时操作系统的研究(二) - 风枝惊鹊 - 我的地盘全双工增强型UART


 


http://xky19870905.blog.163.com/blog/#m=0

文章评论0条评论)

登录后参与讨论
我要评论
0
9
关闭 站长推荐上一条 /2 下一条