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;
}
转载自:http://blog.jacobhere.com/2008/06/how_to_recompile_sjf2410_nm9805_pcmicia_pata_port/