(轉載)重新編譯SJF2410以適應NM9805並口卡(PCMICIA接口)

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/

發佈了13 篇原創文章 · 獲贊 0 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章