新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 采用PSD913F2 扩展 8031程序空间(图)

采用PSD913F2 扩展 8031程序空间(图)

——
作者:成都中晓龙电子有限公司 陈荣飘 张永慧 时间:2007-02-06来源:收藏

概述
  8031系列单片机是应用非常广泛的mcu,但是随着控制领域的不断智能化、复杂化,程序长度可能远远大于8031的64kb限制。可以采用psd913f2作为8031的外部存储器,其程序空间最大可达256kb,用keilc51的blankswitch技术可使8位mcu运行256kb的应用程序。

  psd913f2内置256kb闪存,分为8个页面,每页空间16kb,内置可选的32kb启动存储器、2kb的sram、27个i/o端口、电源管理单元、40个可编程逻辑宏单元cpld,通过串口在线配置fpga所有代码,适用于8031、mc68hc11、dallas、z80等20余种单片机。

本文引用地址:http://www.eepw.com.cn/article/22745.htm


8031与psd913f硬件设计
  在多数应用中,mcu与外部存储器之间连接时都必须用74ls373作为地址锁存器。但psd913f2内含地址锁存器,因此psd913f2的引脚可直接与8031相连,如图1所示。


8031与psd913f软件设计
  keilc51语言源程序经过c51编译器编译后,生成浮动地址的目标代码文件。这种浮动地址的目标代码是不能直接装入8051运行的,必须经过连接定位器bl51的连接和定位,生成具有绝对地址的目标代码。同时bl51支持分组连接定位,允许生成代码大于64kb的目标程序,可以在具有适当硬件扩展逻辑的8051系统中进行代码组之间的切换,以达到正常运行的目的。bl51可以管理最多32个代码组,每个代码组最大为64kb。bl51连接定位器生成的omf51格式的绝对目标文件,可装入dscope51或intel兼容的仿真器进行调试,也可通过符号转换器oh51转换成intel hex文件以便于eprom编程。

  在采用bl51对目标程序进行分组连接定位时,要求8051系统具有相应的硬件分组扩展逻辑。默认的分组方式是采用8051的p1端口作硬件扩展地址线。采用1条p1口线时,分组数为2,采用5条p1口线时,最多可分为32个代码组,剩余的p1口线也可用于其他用途。也可采用外部数据存储器xdata空间地址单元来进行分组,与采用8051的p1端口作为分组地址线不同的是,对于一个指定用于分组地址的xdata端口字节中的剩余位,不能再用于其他目的。采用的分组方式、组数和地址在l51_bank.a51中进行配置。

  下面介绍一下应用bankswitch的步骤。
  1.建一个keilc51的新工程如psdos,在菜单project选择中选择option for target “target 1”选择项,按图2所示进行项目配置。

  设置如下。
  ● 由于psd913f2中有两块flash,从flash为32kb。故在off-chip code memory-eprom设为0x0000~0x7fff。
  ● 在psd913f2的psdsoft express已配置2kb的sram,地址范围为0x2000~0x27ff,故在off-chip xdata memory-ram设为0x2000,长度为0x0800。
  ● 在psd913f2的主flash为128kb,共分为8个物理页,已在psdsoft express软件中定义地址为0x8000~0xbfff,因此在keilc51中如图2所示分为4个banks,地址范围为0x8000~0xbfff。

  2.在keilc51的安装目录keilc51c51 examplesbank_ex1中,把l51_bank.a51文件的拷贝并加入到新工程。在l51_bank.a51文件中需改以下代码。

  a?b_nbanks equ 4 //定义最大分组(0~32),可为2、4、8、16和32。
  ?b_mode equ 1 //0:通过8051单片机的i/o口进行分组切换,1:通过xdata存储器单元进行分组切换。
  ?b_xdataport equ 01e0h //如果?b_mode被定义为1,就通过xdata口定义xdata口引脚地址/位来映射开关定义xdata口地址01e0h。

  3.新建主程序和各bank文件。

  4.设置文件的属性。选择主文件,选择options for file,设置code bank为“common”,设置stop on exit为“not specified”,对init.c、psdoper.c也进行同样的设置。

  5.设置文件的属性。如图3所示右击文件psd_bank.c,选择options for file "psd_bank0.c",设置为bank #0。同样对psd_bank1.c设置为bank #1、psd_bank2.c设置为bank #2、psd_bank3.c设置为bank #3。

  6.设置好后,进行编译。

  7.进行编程。打开psdsoft express软件,在merge mcu firmware with psd模块中设置各个flash页面的地址和文件名,如图4所示。
  ● 主flash第0页(fs0),地址:0x8000-0xbfff,文件名:psdos.hoo
  ● 主flash第1页(fs1),地址:0x8000-0xbfff,文件名:psdos.ho1
  ● 主flash第2页(fs2),地址:0x8000-0xbfff,文件名:psdos.ho2
  ● 主flash第3页(fs3),地址:0x8000-0xbfff,文件名:psdos.ho3
  ● 次flash(csboost 0),地址:0x8000-0xbfff,文件名:psdos.hoo

  8.通过flashlink便可将文件下载到psd913f2中,实现bankswitch功能,使8031的程序空间大于64kb。
  用keil c51的bankswitch必须注意以下几点。
  ● 下面的一些代码必须放在公共区域内,复位和中断向量、代码常数、c51中断函数、组切跳转表、库函数。
  ● 代码组切换需要大约50个机器周期和2字节的堆栈空间。因此应当仔细安排程序结构以尽量减少代码之间的切换。


结束语
  采用bankswitch扩展8031程序空间,在不对硬件作任何修改的情况下,8031便可实现运行大于64kb的程序,充分发挥8031和keilc51的优异功能。



关键词:

评论


相关推荐

技术专区

关闭