利用ISA总线实现对DSP芯片VC5402的软配置
的VC5402的程序代码。
⑶把example.out.c文件中的代码由HPI写到VC5402的内部RAM中。HOST主机软件,需要用户自己来编写,可以采用VC或VB调用驱动程序来完成,也可以通过TURB0C2.0直接通过I/O操作来完成,甚至可用MASM的汇编语言来编写,程序的主要任务就是读取example.out.c文件和写I/O端口。HOST主机软件的流程图见图四。为了便于读者编程验证,我们用TURBOC2.0编写了名为HOST_HPI.C的主机程序,读者可以运行该程序来读取example.out.c文件,把41字的代码装载入VC5402。使用方法如下:在DOS命令提示符下键入:HOST_HPI.exe后,屏幕将提示输入example.out.c文件的路径,例如:键入:C:\ti\myprojects\example.out.c后,HOST_HPI.exe将完成HOST装载VC5402的任务,如果看到发光二级管不停的闪烁,表明VC5402已经开始正常运行程序了。至此,整个装载过程完毕。
3.HOST_HPI.C源程序
/*HOST_HPI.C*/
#include"stdio.h"
#include"dos.h"
#defineSIZE100
main()
{
FILE*fp;
UnsignedintDSP_RES,HPIC_H,HPIC_L;
UnsignedintHPIA_H,HPIA_L,HPID_H,HPID_L;
char*a,ch,filename;
unsignedinti,j,length,addr,start[10],*data;
printf("Pleaseinputthenamefile:\n");
scanf("%s",filename);/*输入程序文件名*/
if((fp=fopen(filename,"r"))==NULL)/*打开程序文件*/
{
printf("cannotopenfile:\n");
exit(0);
}
DSP_RES=0x240;/*设置DSP各寄存器的I/O地址*/
HPIC_H=0x230;
HPIC_L=0x231;
HPIA_H=0x234;
HPIA_L=0x235;
HPID_H=0x236;
HPID_L=0x237;
outportb(DSP_RES,0x00);/*DSP复位(DSP_RES寄存器置00H)*/
delay(2000);/*延时以保证DSP准确的复位*/
outportb(DSP_RES,0x01);/*DSP跳出复位(DSP_RES寄存器置01H)*/
outportb(HPIC_H,0x00);/*DSP的HPIC寄存器置0000H*/
outportb(HPIC_L,0x00);
i=0;
while(!feof(fp))/*判断程序文件是否结束*/
{
fgets(a,SIZE,fp);
fgets(a,SIZE,fp);
fscanf(fp,"%s",a);
fscanf(fp,"%s",a);
fscanf(fp,"%x",&length);/*读取数据的长度*/
fgets(a,SIZE,fp);
fscanf(fp,"%s",a);
fscanf(fp,"%s",a);
fscanf(fp,"%x",&addr);/*读取程序的开始地址*/
fgets(a,SIZE,fp);
fgets(a,SIZE,fp);
for(j=0;j<length;j++)
fscanf(fp,"%x,",data+j);
start[i]=addr;/*保存程序开始地址*/
for(j=0;j<length;j++)/*为DSP装入数据*/
{
/*给DSP的HPIA寄存器赋程序地址,先赋高位再赋低位*/
outportb(HPIA_H,addr>>8);
outportb(HPIA_L,addr&0x00ff);
/*给DSP的HPID寄存器赋程序数据,先赋高位再赋低位*/
outportb(HPID_H,*(data+j)>>8);
outportb(HPID_L,*(data+j)&0x00ff);
addr++;/*程序地址加1*/
}
for(j=0;j<4;j++)
fgets(a,SIZE,fp);
《利用ISA总线实现对DSP芯片VC5402的软配置(第3页)》
本文链接地址:http://www.oyaya.net/fanwen/view/176269.html
⑶把example.out.c文件中的代码由HPI写到VC5402的内部RAM中。HOST主机软件,需要用户自己来编写,可以采用VC或VB调用驱动程序来完成,也可以通过TURB0C2.0直接通过I/O操作来完成,甚至可用MASM的汇编语言来编写,程序的主要任务就是读取example.out.c文件和写I/O端口。HOST主机软件的流程图见图四。为了便于读者编程验证,我们用TURBOC2.0编写了名为HOST_HPI.C的主机程序,读者可以运行该程序来读取example.out.c文件,把41字的代码装载入VC5402。使用方法如下:在DOS命令提示符下键入:HOST_HPI.exe后,屏幕将提示输入example.out.c文件的路径,例如:键入:C:\ti\myprojects\example.out.c后,HOST_HPI.exe将完成HOST装载VC5402的任务,如果看到发光二级管不停的闪烁,表明VC5402已经开始正常运行程序了。至此,整个装载过程完毕。
3.HOST_HPI.C源程序
/*HOST_HPI.C*/
#include"stdio.h"
#include"dos.h"
#defineSIZE100
main()
{
FILE*fp;
UnsignedintDSP_RES,HPIC_H,HPIC_L;
UnsignedintHPIA_H,HPIA_L,HPID_H,HPID_L;
char*a,ch,filename;
unsignedinti,j,length,addr,start[10],*data;
printf("Pleaseinputthenamefile:\n");
scanf("%s",filename);/*输入程序文件名*/
if((fp=fopen(filename,"r"))==NULL)/*打开程序文件*/
{
printf("cannotopenfile:\n");
exit(0);
}
DSP_RES=0x240;/*设置DSP各寄存器的I/O地址*/
HPIC_H=0x230;
HPIC_L=0x231;
HPIA_H=0x234;
HPIA_L=0x235;
HPID_H=0x236;
HPID_L=0x237;
outportb(DSP_RES,0x00);/*DSP复位(DSP_RES寄存器置00H)*/
delay(2000);/*延时以保证DSP准确的复位*/
outportb(DSP_RES,0x01);/*DSP跳出复位(DSP_RES寄存器置01H)*/
outportb(HPIC_H,0x00);/*DSP的HPIC寄存器置0000H*/
outportb(HPIC_L,0x00);
i=0;
while(!feof(fp))/*判断程序文件是否结束*/
{
fgets(a,SIZE,fp);
fgets(a,SIZE,fp);
fscanf(fp,"%s",a);
fscanf(fp,"%s",a);
fscanf(fp,"%x",&length);/*读取数据的长度*/
fgets(a,SIZE,fp);
fscanf(fp,"%s",a);
fscanf(fp,"%s",a);
fscanf(fp,"%x",&addr);/*读取程序的开始地址*/
fgets(a,SIZE,fp);
fgets(a,SIZE,fp);
for(j=0;j<length;j++)
fscanf(fp,"%x,",data+j);
start[i]=addr;/*保存程序开始地址*/
for(j=0;j<length;j++)/*为DSP装入数据*/
{
/*给DSP的HPIA寄存器赋程序地址,先赋高位再赋低位*/
outportb(HPIA_H,addr>>8);
outportb(HPIA_L,addr&0x00ff);
/*给DSP的HPID寄存器赋程序数据,先赋高位再赋低位*/
outportb(HPID_H,*(data+j)>>8);
outportb(HPID_L,*(data+j)&0x00ff);
addr++;/*程序地址加1*/
}
for(j=0;j<4;j++)
fgets(a,SIZE,fp);
《利用ISA总线实现对DSP芯片VC5402的软配置(第3页)》