フォーラムへの返信
-
投稿者投稿
-
ethernet の プログラムを lwip を使用して動作させようとしていますが
下記の関数で アボートエラーが発生します.
何が原因でしょうか.err_t ip4_input(struct pbuf *p, struct netif *inp) 内の
ip_addr_copy_from_ip4(ip_data.current_iphdr_dest, iphdr->dest);※変数をデバッガで直接値を変更する事は可能だが
上記代入をすると エラーが発生し停止する.追加ですが、boot起動時に動作しているモジュール(Timer2等)一覧を教えていただけないでしょうか?
AM3352のTIMER2動作に関してですが、起動ROMのタイムアウトのためにDMTIMER2が使用されているようですが、
起動時にレジスタの設定を変更しなくても、タイマーカウントが動作していて正常と考えて問題ないでしょうか?MMUに関しては動作モード変更時にレジスタの値を一旦キャッシュに退避させて、元のモードを戻るときにキャッシュから読みだして戻すような動作を検討しています。
確保エリア(スペース)をソースで指定してもソース記載の順番でアドレスの小さい空きエリアに確保されるのではなく、
それぞれ空きエリアに入る順番で配置されるのでしょうか?
ソース上、1→2→3→4の順番で記載しても実際に割り振られるエリアはアドレスの小さい順で3→2→1→4になる等です。スタック退避の指定時、指定エリアの上にも同じだけのスペースが空いていないと、コンパイルエラーになるようなのですが、
そういうものなのでしょうか?MMUで指定範囲の間にキャッシュがあると処理が遅くなる可能性があるでしょうか?
また、MMUでアドレス範囲指定するとソースの記載順にエリアを配置するわけではなく、エリアを確保できる順に配置されるのは通常の動作なのでしょうか?UART0にはPCを接続し、その他は基板上のIC関係に接続されています。
CPUの型式はAM3352BZCZ30になります。
SPI0のメモリに起動プログラムを書き込みでいるので、起動状態は確認でいます。
また、UARTに関しては”CCCC”が出力されていまます。その他は確認ができていません。
ハード上、UARTブート設定(第1:uart、第2:XIP、第3:MMC0、第4:SPI0)でSPIから起動するのですが、この後、時間が経過するとリブートしてしまいます。
UARTモードでSPIブート起動すると、そのようになるのでしょうか?SPIブート設定(第1:SPI0、第2:MMC0、第3:EMAC0、第4:UART)でSPIから起動するとリブートは起こりません。
-
投稿者投稿
