嵌入式系统开发中程序定位的方法

闲云
闲云 这家伙很懒,还没有设置简介...

0 人点赞了该文章 · 20 浏览

嵌入式系统开发中程序定位的方法

    科技的发展让电子设备越来越智能化,而不同的电子智能化则需要相应的嵌入式系统开发。嵌入式系统一般指非 pc 系统,有计算机功能但又不称之为计算机的设备或器材。它是以应用为中心,软硬件可裁减的,适应应用系统对功能、可靠性、成本、体积、功耗等综合性严格要求的专用计算机系统。下面网主要为您介绍嵌入式系统开发中程序定位的方法:
    1、EXE文件格式和DOS重定位 
    DOS下的EXE文件是一种可重定位文件 (Re-locatableFile),它由重定位标头和装入模块组成。后者含 一段或几段程序代码,段数与类型取决于程序规模和编译时所用的内存模式,然后是 初始化与未初始化的数据及堆栈,还可能有程序排错信息。代码、数据和堆栈段地址 均是参考到程序开头的相对地址。标头放在装入模块之前,含若干定位控制信息和一 张定位表。控制信息包括EXE文件大小、标头长度、需要重定位的项数和位置、装 入模块的开头和堆栈的相对地址等。定位表是一组形式为段址:偏址的远指针,指示 装入模块中要重定位的那些段址相对于模块开头处的位置。装进RAM后,加载程序 建立起程序段前缀PSP,并根据系统当前可用RAM地址修改这些段址,对装入模 块重定位,使程序中所有参考绝对地址的量正确指向模块装入后的起始地址,然后执、。因此它可在RAM中的任何位置上执行

    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文件。若在连接时进行限定,可生成只含内存分配段表的简单MAP文件。段表的每行描述一个段,按代码段、数据段和堆栈段的次序排列。MicrosoftC和BorlandC的MAP文件每行长度略有区别,但行上各参数(段始址、段末址、段长、段名、段类)的位置是固定的。 定位程序根据第一个RAM段的段名,从MAP文件中抽取出它的起始地址,它就是数据区的相对始址。再从标头内容计算出装入模块大小,即要占用的ROM容量。将系统ROM始址加上代码段在装入模块中的相对地址,便得到程序开始执行的地址。

    然后,对定位指针进行自小到大排序。根据各段的始末地址逐段析出段址,并从装入模块中读入该段代码或数据。接着按定位指针顺序考察待定位的段址,若它落在该段范围内,便进行定位操作,即把此段址修改成实际的ROM或RAM地址。直到将属于这个段的定位指针全部处理好后,便把这段内容写到输出文件。对所有段都进行定位后,便获得ROM图。 

   

发布于 2022-09-29 17:27

免责声明:

本文由 闲云 原创或收集发布于 火鲤鱼 ,著作权归作者所有,如有侵权可联系本站删除。

火鲤鱼 © 2026 专注小微企业服务 冀ICP备09002609号-8