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/