Feb 1, 2023
Operating System development tutorials in Rust on the Raspberry Pi をする #3
はじめに
前回の続きから.
03_hacky_hello_world
- QEMU がエミュレートする UART を介して,
println!マクロで文字列を表示できるようにするconsole::console関数はcore::fmt::Writeトレイトを実装した構造体を返す (src/bsp/raspberrypi.rs)- このトレイトは
write_str,write_char,write_fmt関数をもつ
- このトレイトは
write_str関数は UART(アドレスが0x3F201000)に一文字ずつ書き込む (src/console.rs)print!とprintln!はそれぞれwrite_fmt関数を呼び出す(src/print.rs)write_strを実装するとwrite_fmtも自動的に実装されるのか?
実行結果
$ make
Compiling kernel ELF - rpi3
Compiling tock-registers v0.8.1
Compiling mingo v0.3.0 (/home/kenta/Git/Kenta11/rust-raspberrypi-OS-tutorials/03_hacky_hello_world)
Compiling aarch64-cpu v9.0.0
Finished release [optimized] target(s) in 3.88s
Generating stripped binary
Name kernel8.img
Size 6 KiB
$ make test
Boot test - rpi3
docker: Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/create": dial unix /var/run/docker.sock: connect: permission denied.
See 'docker run --help'.
make: *** [Makefile:216: test_boot] エラー 126
$ sudo make test
[sudo] kenta のパスワード:
Boot test - rpi3
-------------------------------------------------------------------
🦀 Running 1 console I/O tests
-------------------------------------------------------------------
1. Checking for the string: 'Stopping here'..................[ok]
Console log:
Hello from Rust!
Kernel panic!
Panic location:
File 'src/main.rs', line 129, column 5
Stopping here
-------------------------------------------------------------------
✅ Success: Boot test
-------------------------------------------------------------------
$ sudo make qemu
Launching QEMU
Hello from Rust!
Kernel panic!
Panic location:
File 'src/main.rs', line 129, column 5
Stopping here.