うーんだいぶ鬱陶しい
めっちゃやられてる
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
ESTAB 0 0 127.0.0.1:56617 127.0.0.1:7144
ESTAB 0 0 127.0.0.1:48880 127.0.0.1:7144
ESTAB 0 0 127.0.0.1:32881 127.0.0.1:7144
ESTAB 0 0 127.0.0.1:41148 127.0.0.1:7144
ESTAB 0 0 127.0.0.1:41409 127.0.0.1:7144
ESTAB 0 0 127.0.0.1:33462 127.0.0.1:7144
ESTAB 0 0 127.0.0.1:58204 127.0.0.1:7144
ESTAB 0 0 127.0.0.1:50647 127.0.0.1:7144
ESTAB 0 0 127.0.0.1:34587 127.0.0.1:7144
ESTAB 0 0 127.0.0.1:34782 127.0.0.1:7144
ESTAB 0 0 127.0.0.1:59473 127.0.0.1:7144
ESTAB 0 0 127.0.0.1:43149 127.0.0.1:7144
ESTAB 0 0 127.0.0.1:35596 127.0.0.1:7144
ESTAB 0 0 127.0.0.1:52096 127.0.0.1:7144
ESTAB 0 0 127.0.0.1:60311 127.0.0.1:7144
ESTAB 0 0 127.0.0.1:36015 127.0.0.1:7144
ESTAB 0 0 127.0.0.1:53033 127.0.0.1:7144
ESTAB 0 0 127.0.0.1:53193 127.0.0.1:7144
ESTAB 0 0 127.0.0.1:36851 127.0.0.1:7144
ESTAB 0 0 127.0.0.1:53472 127.0.0.1:7144
ESTAB 0 0 127.0.0.1:37475 127.0.0.1:7144
ESTAB 0 0 127.0.0.1:38055 127.0.0.1:7144
ESTAB 0 0 127.0.0.1:46897 127.0.0.1:7144
ESTAB 0 0 127.0.0.1:47370 127.0.0.1:7144
ESTAB 0 0 127.0.0.1:39190 127.0.0.1:7144
ESTAB 0 0 127.0.0.1:47590 127.0.0.1:7144
ESTAB 0 0 127.0.0.1:39582 127.0.0.1:7144
ESTAB 0 0 127.0.0.1:56029 127.0.0.1:7144
ESTAB 0 0 127.0.0.1:48233 127.0.0.1:7144
ESTAB 0 0 127.0.0.1:48244 127.0.0.1:7144
PC自体が遠隔操作可能で暗号化ストレージのマウントも出来るんじゃしょうがない。
オレンジの嫌がらせは放っておいて実装を進める。
NIC デバイスドライバ
ホスト側はこんな感じで良いかな。
NICへの割り込みは大分面倒くさそうなので以下のようにした。
残りは以下
- Qemuからの出力
- Qemuへの入力
出力は当初ファイルを考えていたが共有メモリでも良いかもしれない
Qemuからの出力
printfが直通出来るんだから他にもなんかあるんじゃないか?
ということで大元のコードを見てみる
gpioとかi2sとかあるようだけど
どうも簡単には行かなそう
こんなのもあるみたいだけど面倒くさそう
ということでqemuに手を入れようと思う。
実際にやりたいのはqemu-ホスト間通信ではなく、freertos-Linux間でTCP/IP通信が出来ることなので
ロケハンで使うのは適当で良いだろうという判断
qemuのビルド
環境
- fedora 39 xfce
始めたときはubuntu上でやっていたが、今は訳あってfedoraでやっている。
centosとかRHELとかfedoraベースのものは多分同じ感じで行けるはず。
gccとかpythonは入っている前提
ビルド手順
ビルドツールのインストール
sudo yum install -y ninja-build glib2-devel.x86_64
ソースコードのダウンロード
git clone https://github.com/qemu/qemu.git
build
mkdir build_qemu
cd build_qemu
../qemu/configure --target-list=arm-softmmu --enable-debug
make
Core i5-4200U で20分くらい
動作確認
sudo /path/to/build_qemu/qemu-system-arm -machine mps2-an385 -m 16 -monitor null -semihosting --semihosting-config enable=on,target=native -kernel ./build/RTOSDemo.axf -serial stdio -nographic
[0000] NetworkInterface.c(132) pxFillInterfaceDescriptor mac:0 fr:0x53a7
[1cd8] NetworkInterface.c(192) ether_task fr:0x281
[67ac] FreeRTOS_IP.c(1397) xSendEventStructToIPTask et:0 fr:0x56c1
[2510] app_server.c(14) server_task fr:0x281
[2510] app_server.c(31) vCreateTCPServerSocket sock:536948136 fr:0xd951
[2510] FreeRTOS_IP.c(1397) xSendEventStructToIPTask et:9 fr:0x98e1
[2d48] app_client.c(28) client_task fr:0x281
[2d48] app_client.c(36) client_task fopen failed fr:0x281
[2d48] app_client.c(54) vTCPSend IN fr:0xd827
[2d48] app_client.c(64) vTCPSend socket fr:0xd827
いい感じ
今回もFreeRTOS全く関係なかった
当分はスタブ側かなぁ