PCB抄板专家世纪芯官方网站——PCB抄板网 首页公司介绍资讯中心案例展示服务推荐常见问题联系我们 24小时客服热线:+86-0755-83035861/83035836

PCB抄板网世纪芯电子产品仿制开发技术服务门户 > 抄板技术 > 正文

嵌入式系统设计要点

2009年09月02日10:07

  采用大容量EPROM来固化程序的专用系统,正在智能仪器和自动化等领域里 得到广泛应用。传统设计方法用汇编语言编写程序,这主要是从保证速度和节省存储 空间考虑,但编程费时,调试和排错很不容易。微电子技术的飞速发展,使高性能微 处理器和大容量存储器的价格变得十分便宜,速度和存储容量不再是困扰设计者的主 要问题。人们将ROMBIOS和CRT显示器等外设加进这类专用系统,并尝试用 高级语言来开发其软件,即把通用计算机上的软件和硬件“嵌入”专用系统,构成所 谓的嵌入式系统(EmbeddedSystem)。由于C语言容易编程、代码紧 凑、可移植性和可维护性好,因而被普遍用于嵌入式程序的设计。
  大多数嵌入式系统无操作系统支持,要由设计者提供所有低级I/O功能。系统 I/O资源有限,程序必须固化在EPROM中,不能象在DOS下那样从磁盘装入 和由用户编程。设计者要编写一个定位程序(Locator),把EXE格式的应 用程序转换成可固化进EPROM的二进制文件(ROM图)。还要编写一个启动程 序(runtimeStartupCode),与ROM图一起嵌入EPROM, 先由它建立数据区和对系统硬件作必要初始化,然后调Main函数,执行应用程序。 若想发挥C语言之优势,使用一些标准I/O语句,如用printf驱动显示器等, 则要在嵌入式程序中加进经过修改的库函数。总之,C语言编程会使系统开发面临一 些新问题,要求设计人员具备软硬件方面的综合知识,才能正确进行系统调试和排错。
  当然,如果拥有专用的嵌入式系统开发工具,设计工作便要省劲些。它们通常配 有定位程序和可供设计者修改的启动程序样板,有些还能通过串口或并口,在PC机 上联机调试程序,甚至有源级代码调试功能。利用工控机来设计系统,事情就更简单。 不过,专用开发工具和工控机价格昂贵,因此许多人在设计嵌入式系统时选择自己编 写定位程序和启动程序,甚至编写可嵌入的I/O库函数。本文就嵌入式系统的程序 设计方法及设计中可能遇到的问题作些讨论,供打算设计嵌入式程序的读者参考,有关编写定位程序和启动程序的具体方法将另文介绍。
  2 嵌入式程序的定位
  2。1 EXE文件格式和DOS重定位
  DOS下的EXE文件是一种可重定位文件 (Re-locatableFile),它由重定位标头和装入模块组成。后者含 一段或几段程序代码,段数与类型取决于程序规模和编译时所用的内存模式,然后是 初始化与未初始化的数据及堆栈,还可能有程序排错信息。代码、数据和堆栈段地址 均是参考到程序开头的相对地址。标头放在装入模块之前,含若干定位控制信息和一 张定位表。控制信息包括EXE文件大小、标头长度、需要重定位的项数和位置、装 入模块的开头和堆栈的相对地址等。定位表是一组形式为段址:偏址的远指针,指示 装入模块中要重定位的那些段址相对于模块开头处的位置。装进RAM后,加载程序 建立起程序段前缀PSP,并根据系统当前可用RAM地址修改这些段址,对装入模 块重定位,使程序中所有参考绝对地址的量正确指向模块装入后的起始地址,然后执 行(图1)。因此它可在RAM中的任何位置上执行。图 DOS对EXE文件的定位过程
  2。2 嵌入式程序的定位
  嵌入式系统有ROM和RAM两类内存,程序被固化进ROM,而程序 变量和堆栈应设在RAM中。因此,对EXE文件的重定位过程与DOS下不一样。定位程序必须根据系统的ROM和RAM地址,对定位表中各远指针指向的字进行修改。定位程序最后以一种可加载进测试系统或
  可烧入EPROM的形式输出程序,即ROM图,它可以是二进制或Intel的HEX格式,根据EPROM编程器、仿真器或调试程序的要求而定。
  可用两种方法把EXE文件转换为ROM图:
  一是使用EXE2BIN命令。若EXE文件定位表中不含有定位远指针,EXE2BIN便将它转换成COM文件,它是可固化进EPROM的二进制文件,否则便放弃转换。这仅适用于较小的单段程序。较新版本的EXE2BIN在发现EXE文件中含重定位项时,会提示用户提供一个基地址,进行重定位。若选用适当的内存模式,并限制使用远指针,它也可能用一个基地址进行定位。但对于规模较大的程序,EXE2BIN无能为力。
  二是根据标头和MAP文件所提供的信息进行定位,适用于所有的EXE文件(图2)。若在连接时进行限定,可生成只含内存分配段表的简单MAP文件。段表的每行描述一个段,按代码段、数据段和堆栈段的次序排列。MicrosoftC和BorlandC的MAP文件每行长度略有区别,但行上各参数(段始址、段末址、段长、段名、段类)的位置是固定的。 定位程序根据第一个RAM段的段名,从MAP文件中抽取出它的起始地址,它就是数据区的相

在线询价/咨询服务

24小时服务热线:18923830090

全国咨询热线:0755-83346939

走进世纪芯

世纪芯是一支由众多技术研发专家和科研企业结盟组成了技术服务型团队,自组建以来一直帮助政府、知名科研机构以及国内众多抄板企业攻克技术难题,10年来,我们专注反向技术研究并不断挑战大型疑难项目,目前已经成为国内抄板企业的中流砥柱。