?
Hi !
Danke für das Angebot, aber es hat sich erledigt.
Es war ein harter Job, aber ich kann jetzt mit Linux online gehen !! :-))
Es waren tatsächlich einige Unions innerhalb von Strukturen nicht definiert.
Für den Fall, das es jemandem ähnlich ergeht, schreib ich hier mal die Änderungen rein, die nötig waren, um mein Modem zum Laufen zu bekommen.
Drei Unions musste ich der Datei Structs.h definieren:
// Datei Structs.h im Verzeichnis ADI_LINUX/ADIUTIL
// geändert: SwCm hinzugefügt
typedef struct
{
UInt16 Interrupt;
union
{
INT_IDMA_SWAP_INFO SwapIntInfo;
INT_IDMA_CMV_INFO CmvIntInfo;
} SwCm;
UInt16 DataSize;
} DeviceInt;
// geändert: RwMs hinzugefügt
typedef struct
{
union
{
CmvMsg *Msgs[ MAX_CMV_MESSAGES ];
UInt16 *RawCmd[ MAX_CMV_MESSAGES ];
}RwMs;
UInt32 MsgCount;
} MsgSequence;
// geändert: syfo hizugefügt
....
union
{
UInt8 symb_addr[4];
UInt32 fourcc;
}syfo;
UInt32 offset_addr;
...
Also einfach nur SwCm, RwMs, syfo hinzufügen. Diese Definitionen fehlten, die
Namen sind frei wählbar.
Dann musste ich noch die folgenden Dateien ändern:
// Datei AdiUsbAdlsDriver.c im Verzeichnis ADI_LINUX
// geändert: SwCm hinzugefügt
Zeile 560 : UInt16 SwapData = HSTOLE(pInt->SwCm.SwapIntInfo.SwapData);
Zeile 570: ProcessIncomingCmv(pHw, pInt->SwCm.CmvIntInfo.CmvData);
// Datei Makefile im Verzeichnis ADI_LINUX
// geändert: Option -c anstatt Option -C
Zeile 96: $(INSTALLER) -c -m 0664 -o root -g root OTHER/*.bnm $(OTHERDIR) && \
Zeile 97: $(INSTALLER) -c -m 0664 -o root -g root OTHER/*.conf (OTHERDIR) && \
// Datei Sm.c im Verzeichnis ADI_LINUX/ADIUTIL
// geändert: RwMs hinzugefügt
Zeile 195: MsgSend(pHw, pAdiSM->MsgSeq_Retrainer.RwMs.RawCmd[pAdiSM->MsgStage]);
Zeile 211: MsgSend(pHw, pAdiSM->MsgSeq_Retrainer.RwMs.RawCmd[++pAdiSM->MsgStage]);
Zeile 251: MsgSend(pHw, pAdiSM->MsgSeq_Stat.RwMs.RawCmd[0]);
Zeile 357: MsgSend(pHw, pAdiSM->MsgSeq_EnaFR.RwMs.RawCmd[0]);
Zeile 403: MsgSend(pHw, pAdiSM->MsgSeq_Stat.RwMs.RawCmd[0]);
Zeile 526: MsgSend(pHw, pAdiSM->MsgSeq_OpStat.RwMs.RawCmd[pAdiSM->MsgStage]);
Zeile 544: MsgSend(pHw, pAdiSM->MsgSeq_OpStat.RwMs.RawCmd[++pAdiSM->MsgStage]);
// Datei Msg.c im Verzeichnis ADI_LINUX/ADIUTIL
// geändert: syfo, RwMs hinzugefügt
Zeile 108: Seq.RwMs.Msgs[Seq.MsgCount++] = &Msg;
Zeile 397: Msg->syfo.fourcc = 0;
Zeile 423: Msg->syfo.symb_addr[0] = ( unsigned char )( ( unsigned short )( temp & 0xff00 ) >> 8 );
Zeile 424: Msg->syfo.symb_addr[1] = ( unsigned char )( ( unsigned short )( temp & 0x00ff ) );
Zeile 426: Msg->syfo.symb_addr[2] = ( unsigned char )( ( unsigned short )( temp & 0xff00 ) >> 8 );
Zeile 427: Msg->syfo.symb_addr[3] = ( unsigned char )( ( unsigned short )( temp & 0x00ff ) );
Zeile 429: if ( MsgCheckSymbolicAddress( (char *)(&Msg->syfo.symb_addr[0]) ) == true )
Zeile 664: pSm->MsgSeq_OpStat.RwMs.Msgs[pSm->MsgSeq_OpStat.MsgCount++] = &MsgSTAT0b;
Die Änderungen sind also im wesentlichen "nur" das Hinzufügen der neu definierten Unionen im Quellcode.
Mir ist aufgefallen, das in der Datei Structs.h noch weitere Strukturen und Unionen nicht definiert sind, aber diese Routinen waren für meinen PC nicht wichtig, also habe ich die auch nicht ändern müssen.
Dies mag bei einem anderen PC anders sein, das Prinzip dürfte aber gleich bleiben.
Gruß, J.