基于Paradigm IDE开发PC104嵌入式系统的RAM配置方法
描述了Paradigm C++ IDE嵌入式系统开发工具的功能和应用范围,并介绍了PC104嵌入式计算机系统的性能和特点,重点说明了在Paradigm环境下开发基于PC104的应用系统的存储空间的设置和实现方法。
一、Paradigm IDE –16位和32位x86嵌入式开发工具
1、Paradigm C++ Professional IDE
Paradigm C++ Professional是美国Devtools公司用于开发嵌入式系统应用的集成开发环境,它支持嵌入式x86系统,包括一个x86的集成开发环境(IDE)。包含了编译、汇编、链接、定位和调试功能,支持20-bit地址空间(1MB)的实模式目标系统,支持由Emutec公司提供的PROMJet ROM仿真器调试接口。
通过Paradigm C++ Professional集成开发环境,可以编辑嵌入式C/C++代码,支持实模式,扩展模式和保护模式的嵌入式x86开发系统。通过使用Paradigm C++ Professional package,可以迅速生成一个项目,通过可视化的应用界面,Windows2000的操作风格,进行编译、汇编、链接以及代码的定位,最后生成嵌入式应用程序。可以快速、方便的完成嵌入式系统的代码开发。
集成开发环境的主要工具有:编辑器(Editor)、C/C++ 编译器(Compiler)、汇编器(Assembler)、链接器(Linker)、定位器(Locator )、集成调试器(Integrated debugger )。
2、Paradigm IDE系列支持的处理器(CPU)
2.1实模式:所有x86实模式处理器和内核包括:
①AMD Am186EM, Am186ES, Am186ER, Am186ED, Am186CC, Am186CH, AM186CU
②AMD Elan SC300/310, SC400/410, SC520
③INTEL 80C186EA/XL, 80C186EB, 80C186EC, 80386EX
④NEC V-Series Processors
⑤VAutomation x86 cores
2.2保护模式:所有x86保护模式处理器包括:
①AMD ELAN SC300/310, SC400/410, SC520
②AMD Am386, Am486, AMD-K6, Athlon
③Intel 386EX, 486, Celeron, Pentium, Pentium II, III, IV
二、PC104简介
PC104是一种带有PC的PC兼容模块(电路板),它是一种标准。这种带有PC的电路板即PC104因为它的标准化、精确化所以可以被堆叠在一起,从而建立起一种嵌入式计算机系统,这种类型的系统经常可以在工厂、实验室、被编程控制的复杂系统的机器上所见。PC104系统非常类似于PC主板,但是两者之间又有很大不同。
PC104这个名字起源于一些于它类似的和一些特殊的可堆叠在一起的总线连接器,它们总共有104根插针,这种系统能够被一些特殊的工具编程,使用这种集成化的PC系统能够大大缩减开发商的费用和时间。虽然仅仅只有4英寸长,4英寸宽,但是它已经是嵌入式系统设计师最基础的需求。
1、PC104标准:
PC104有两个版本,8位和16位,分别与PC和PC/AT相对应。PC104 PLUS 则与PCI总线相对应。
第一块PC104产生于1987年,但严格意义的规范说明在1992年才公布,从那以后,对PC104感兴趣的人越来越多,当时就有125个厂家引进PC104规范生产PC104兼容产品。像原来的PC总线一样,PC104一直是以一个非法定标准在执行,而不是委员会设计制定的。
1992年IEEE开始着手为PC和PC/AT总线制定一个精简的IEEEP996标准(草稿),PC104作为基本文件被采纳,叫做IEEE P996.1兼容PC嵌入式模块标准。
可见,PC104是一种专门为嵌入式控制而定义的工业控制总线。我们知道IEEE-P996是PC和PC/AT工业总线规范,IEEE协会将它定义IEEE-P996.1,很明显PC104实质上就是一种紧凑型的IEEE-P996,其信号定义和PC/AT基本一致,但电气和机械规范却完全不同,是一种优化的、小型、堆栈式结构的嵌入式控制系统。
PC104与普通PC总线控制系统的主要不同是:
①小尺寸结构:标准模块的机械尺寸是3.6X3.8英寸,即96X96mm
②堆栈式连接:去掉总线背板和插板滑道,去除开发底板和机笼提高可靠性,总线以“针”和“孔”形式层叠连接,这种层叠封装有极好的抗震性。
③轻松总线驱动:减少总线信号驱动器,减少元件数量和电源消耗,4mA总线驱动即可使模块正常工作,每个模块1-2瓦能耗。
2、使用 PC104模块的两个方法:
虽然PC104模块的扩展和应用是灵活的,但最好还是用两种基本方法在设计的嵌入系统中使用PC104:
①独立的模块堆栈: PC104模块是自我堆栈式。这方式中,模块是被用作全兼容的总线底板,但是不需要背板板和或插槽叠成的。每个模块留出 0.6英寸间距。
②作为元件应用:在这方式下,模块作为用一个高度集成元件,插入一个定制的母板上,母板上包含有应用接口和总线逻辑,它的自我堆栈方式,可在一个位置上安装几个模块。这种方式允许在系统调试或者测试时,临时更换模块,同时有利于我们将来的产品升级或者更换选件。由于PC104的管脚定义与ISA、PCI的规范完全兼容,所以如果在产品内部用 PC104模块时,也可以应自己的需要设计生产更多的专业应用PC104模块种类。
三、Paradigm IDE 开发PC104应用程序方法
用Paradigm的集成开发环境开发嵌入式应用时,它有两种常用方法,一种是直接在Paradigm环境下编写应用程序,并编写Config配置文件,确定代码在RAM中的地址、数据的地址、系统保留的空间范围等,然后编译、链接,生成运行文件后烧录到FLASH ROM或EPROM中,将ROM插入PC104的存储插座上运行应用程序;另一种是借助第三方公司的仿真器,在线编程并调试应用程序,当程序调试通过后再烧录到ROM中。第二种方法要方便、灵活许多,而且可以缩短调试时间,使开发人员可以将主要的精力集中在代码的编写和调试过程中而减少其他的干扰。
下面就分两种方法说明用Paradigm开发PC104的应用程序时如何分配RAM空间及配置代码地址、数据地址等。
1、PC104应用系统可通过CPU板上的存储插座(EPROM或FLASH ROM)直接装载应用程序,由系统上电或复位时自动执行BIOS扩展程序。PC104的CPU板上有一个类似于计算机主板上的ROM-BIOS芯片,系统上电或复位后,ROM-BIOS初始化板上的硬件,并完成上电自检,然后ROM-BIOS检查高端内存是否存在BIOS扩展,如有,则运行BIOS扩展的程序,首先将存于EPROM中的应用程序复制到RAM指定位置中,然后运行应用程序。
Paradigm IDE集成开发环境是通过项目来进行文件管理的。开发应用系统软件时,首先新建一个项目,然后选择系统的应用类型及相关参数,再加入源程序代码(C程序),编译时会在.C文件后方显示源程序的行数及其占用的空间大小,项目的结构如图1所示。
图1 不用仿真器调试方式的项目界面
项目第一行的.axe文件是Paradigm生成的项目主文件,最后的“No Target/ROM”表示项目直接生成可烧录EPROM的文件,不采用仿真器调试方式;第二行的.cfg文件,是用来分配RAM空间和配置地址的,关于地址设置主要在.cfg文件中实现;.rom文件下则是源程序和库文件等。下面是cfg文件的内容示例及说明。
文件内容
说明
|
文件内容 |
说明 | |
|
Cputype i80486 |
//系统的CPU类型 | |
|
#if defined(__PDREMOTE__) map 0x00000 to 0x0ffff as reserved map 0x20000 to 0x2ffff as rdwr map 0x30000 to 0x7ffff as rdwr map 0x80000 to 0x9ffff as rdonly map 0xf0000 to 0xfffff as reserved #define DATA_START 0x2000 #define CODE_RAM 0x3000 #define CODE_START 0x8000 #define BOOT_START 0xffc0 hexfile binary offset=0x80000 size=64 |
// 如果使用仿真器时内存的设置 // 系统保留 // 用于存放数据 // 用于存放应用程序 // 在RAM中模拟的EPROM空间 // 系统占用 // 数据起始地址 // 应用程序在RAM中的起始地址 // 应用程序在EPROM中的起始地址 // 系统初始化代码起始地址 // 生成文件为二进制,大小为64K | |
|
#else map 0x10000 to 0x9ffff as rdwr map 0x00000 to 0x0ffff as reserved map 0xd0000 to 0xfffff as rdonly #define DATA_START 0x1000 #define CODE_RAM 0x4000 #define CODE_START 0xd000 #define BOOT_START 0xffc0 hexfile binary offset=0xd0000 size=64 #endif |
// 没有使用仿真器时的设置 // 应用程序和数据可用空间 // 系统保留 // PC104 EPROM空间,其中0xf0000到0xfffff为系统保留 // 数据起始地址 // RAM中的代码起始地址 // EPROM中的代码起始地址 // 系统初始化代码起始地址 // 生成文件为二进制,大小为64K,从EPROM起始地址开始存放 | |
|
| ||
|
absfile axe86 |
// Paradigm 调试文件输出类型 | |
|
listfile segments |
// 绝对段映射图 | |
|
dup DATA ROMDATA |
// 初始化时复制数据 | |
|
dup FAR_DATA ROMFARDATA |
// 初始化时复制远程数据 | |
|
class BOOTSTRAP = CODE_START class CODE = CODE_RAM class DATA = DATA_START |
// 启动时的起始代码位置 // 应用程序代码在RAM中的位置 // 数据在RAM中的位置 | |
2、借助仿真器调试时,如用Emutec公司提供的PROMJet ROM仿真器调试时,应采取以下步骤:
①建立一个仿真器监控程序项目,集成开发环境会自动生成相应的监控程序源代码(.c文件),然后对该项目的.cfg文件做如下设置,编译链接生成二进制文件。
②将应用程序项目属性中“连接目标”改为“Emutec PROMJet”,表示应用程序将通过仿真器下载到PC104上,其他设置不变,再重新编译链接。
③将仿真器插到PC104存储插座上,通过接口电缆连接到计算机,下载应用程序时,将仿真器监控程序生成的二进制文件也绑定下载,即可进入监控调试界面,跟踪应用程序运行。
四、小结
上面介绍了在Paradigm C++集成开发环境下,对开发以PC104为核心的嵌入式系统时的程序和数据存储空间的设置方法和对配置参数的含义说明。PC104与台式PC体系结构完全兼容的微处理器结构,以及结构紧凑、模块化的优点,为嵌入式系统的开发提供了更简便,可持续性更好的方法。而Paradigm可以支持很多种X86模式的CPU,而且它具有良好的界面和强大的功能,还有方便灵活的调试工具,可以大大提高开发进度,提供工作效率。随着嵌入式系统应用开发的深入和范围的扩大,Paradigm C++集成软件开发环境和PC104硬件系统都将会有更广泛的应用。
参考文献:
1、 李振格 编译 Borland C++3.0 & Turbo C++3.0 for Windows 用户参考手册
北京航空航天大学出版社 1992.9.
2、深圳亿道公司 Paradigm C++ IDE 用户手册 2002.
3、盛博科技公司 SBS PC104 技术手册 1999



