首页 > 技术 > 重新编译SJF2410以适应NM9805并口卡(PCMICIA接口)

重新编译SJF2410以适应NM9805并口卡(PCMICIA接口)

2008年6月23日

H-Jtag软件自带的H-Flasher只提供了烧写Nor-Flash的功能,并不能烧写Nand等,很庆幸SJF2410提供了C++源代码,立马装了个VC对代码进行重编译以适应我的PCI转出来的并口卡,简单的来说就是将默认的378地址改成我的FFE8。

主要要改的是两个文件

1、ppt.h

源代码如下,可以看到默认的LPT1-3地址都在上面,将2和3删去,将LPT1地址改为0xFFE8
#ifndef __PPT_H__
#define __PPT_H__

int GetValidPpt(void);
int InstallGiveIo(void);
void SetPptCompMode(void);

extern int validPpt;

#define LPT1 0×378  // the search order is LPT1 then 2 then 3
#define LPT2 0×278  // first valid address found is used (re-order if needed for multiple ports)
#define LPT3 0×3bc  // hardware base address for parallel port

#define OutputPpt(value)    _outp((unsigned short)validPpt,value)
#define InputPpt()      _inp((unsigned short)(validPpt+0×1))

#endif //__PPT_H__

如下:

#ifndef __PPT_H__
#define __PPT_H__

int GetValidPpt(void);
int InstallGiveIo(void);
void SetPptCompMode(void);

extern int validPpt;

#define LPT1 0xFFE8
#define OutputPpt(value)    _outp((unsigned short)validPpt,value)
#define InputPpt()      _inp((unsigned short)(validPpt+0×1))

#endif //__PPT_H__

2、PPT.c
按道理来说改完上面的就可以用了,但是不知道为什么,编译后还是提示找不到并口,于是手动将LPT1返回。
涉及到的函数是int GetValidPpt(void)。
源代码:

int GetValidPpt(void)
{
// search for valid parallel port
_outp(LPT1, 0×55);
if((int)_inp(LPT1) == 0×55)
return LPT1;

_outp(LPT2, 0×55);
if((int)_inp(LPT2) == 0×55)
return LPT2;

_outp(LPT3, 0×55);
if((int)_inp(LPT3) == 0×55)
return LPT3;

return LPT1;
}

修改后:

int GetValidPpt(void)
{
// search for valid parallel port
return LPT1;
}

Jacob 技术

  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.

*

Anti-spam image