図1に示すコードパッケージに基づいてSJA1105ドライバとDP83848ドライバを移植しましたが、初期化中にプログラムがループに陥ってしまいます(図2参照)。移植されたファイルは.aファイル(静的ライブラリファイル)では、対応する.cファイルを表示できません。ソース ファイルには問題があり、具体的な原因はわかりません。プログラムがこのループに陥る原因を教えていただけますか?
こんにちは@18036965586 、
元の例 (このページで入手可能) Solved: S32K344-WB (WhiteBoard) EVB ソース コード - NXP コミュニティ- は、S32K3 RTD 2.0.0 を使用して構築されています。残念ながら、libsja1105_driver.aのソースコードは(SJA1105 用の低レベル SPI ドライバ) は使用できません。
ご承知のとおり、S32K3 RTD 2.0.0 でビルドされたドライバは、新しいバージョンの S32K3 RTD では動作しません。これが、プログラムがこのループに陥る理由です。
よろしくお願いいたします。
パベル
ありがとうございます。私の理解では、SJA1105を設定するにはRTD2.0ライブラリを使用する必要があるということですね。この例ではTCPIP_STACKのどのバージョンが使用されているか教えていただけますか?
こんにちは@jianghao さん
私の観察によると、TCPIP 1.0.0がインストールされているはずです。しかし、この例では変更されたソースファイルを使用しており、S32K344_Whiteboard_SW(LLD)_QuickStartGuide(UG10049).pdf に基づくと、いずれにしても「コードの更新」は行わない方が良いでしょう。
よろしくお願いいたします。
パベル
ありがとうございます、分かりました。この例は、mexを使用してコードを生成するように直接更新することはできません。つまり、新しいプロジェクトを作成し、SJA1105部品のドライバを新しいプロジェクトに転送してから、mexを使用してコードを更新することは可能でしょうか?可能であれば、どのファイルを転送する必要がありますか?(元のプロジェクトのどのファイルが、.mexファイルによる直接的なコード更新を不可能にしたのかを知りたいので)さらに、S32DS3.5 バージョン + RTD3.0 + FreeRTOS_10_5_1_UOS_3_1_0_DS_updatesite_D2304 を使用したいと考えています。これは実現可能だろうか?
こんにちは@jianghao さん
新規プロジェクトを開始する際は、常に最新のS32K3 RTDを使用することをお勧めします。
lwIPのサンプルから新しいプロジェクトを作成し、SJA1105用のLPSPIルーチンを追加することをお勧めします。同様のタスクについては、こちらのスレッドでも議論されています: NXP SJA1105S を SPI 経由で TC397XP(QSPI5) に接続 - NXP コミュニティ
よろしくお願いいたします。
パベル
ご提案ありがとうございました。SJA1105のドライバを新しいプロジェクトに移植し、コンパイルに成功しました。しかし、プロジェクト全体を通して「extern uint8_t SJA1105P_loadConfig(uint8_t configIndex, uint8_t switchId)」という名前の関数が呼び出されていないという新たな問題に遭遇しました。また、この関数はどの.aファイルでも呼び出されているのでしょうか? image.png
image.png
ご返信をお待ちしております。
ありがとうございます。