LoginSignup
0
0

FreeRTOSを動かしてみる(6)

Posted at

うーんだいぶ鬱陶しい

めっちゃやられてる
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への割り込みは大分面倒くさそうなので以下のようにした。

image

残りは以下

  • 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全く関係なかった
当分はスタブ側かなぁ

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0