develop:rtk_kernel:rtk_kernel-rpi:implement:start
目次
実装
「rtk_kernel for Raspberry Pi」の実装関係の情報。
メモリマップ
実装仕様書doc/T-Kernel2.0/doc/impl-tef_em1d.txt
からの差分
(2) ROM 詳細(Raspberry PiではD-RAMでu-bootでロード) 0x00004000 +-----------------------+ |ROM 情報(config) | 0x00004080 +-----------------------+ |(予約) | 0x00008000 +-----------------------+ |例外分岐処理 | |T-Monitor | 0x00030000 +-----------------------+ |T-Kernel | +-----------------------+ |(ユーザーエリア) | +-----------------------+ |(u-bootは起動時に | | このあたりに移動) | 0x08000000 +-----------------------+
(3) RAM 詳細 0x10000000 +-----------------------+ |第1レベル | |ページテーブル | 0x10004000 +-----------------------+ |例外ベクターテーブル | 0x10004400 +-----------------------+ |システム共有情報 | 0x10004440 +-----------------------+ |T-Monitor | |データ/スタック | 0x10006000 +-----------------------+ ← RAM_TOP |OS 用 | 0x20000000 +-----------------------+ ← RAM_END
例外ベクターテーブル
2.4 例外ベクターテーブル ベクター番号 0x10004000 +-----------------------+ |デフォルトハンドラ | 0 |未定義命令 | 1 |プリフェッチアボート | 2 |データアボート | 3 0x10004010 +-----------------------+ |スーパーバイザ SVC 4 | 4 |コール : | | | SVC 28 | 28 0x10004074 +-----------------------+ |デバッグアボート 命令| 29 | データ| 30 0x1000407c +-----------------------+ |高速割込 FIQ | 31 0x10004080 +-----------------------+ |割込 IRQ 0 | 32 | : | | | IRQ 95 | 127 0x10004200 +-----------------------+ |予備 IRQ 96 | 128 | : | | | IRQ 127| 255 0x10004400 +-----------------------+
- デフォルトハンドラは、ハンドラが登録されていない例外・割込が発生した場合に呼び出されるハンドラ。NULL を未登録とする。
- ベクター番号は、tkdefint() の割込定義番号(dintno)として使用する。
- ベクター番号は、SVC 命令の番号(イミディエート値)として使用する。
- IRQ 0〜95 は、割込コントローラ(INT)の INT 0〜95 に対応する
シリアルポート割り当て
T-Kernel/T-Monitorではシリアルポートは、Raspberry Piでは下記を利用
モデル | TYPE_RPI | UART# | 備考 |
---|---|---|---|
Pi Zero | 1 | 0 | PL011 |
Pi 1 Model B+ | 1 | 0 | PL011 |
Pi 2 Model B | 2 | 0 | PL011 |
Pi 3 Model B | 3 | 1 | mini UART |
タイマー
システムタイマーとしてTimer(ARM side)を使用。割り込み周期はconfigで変更できるが、デフォルトでは1msecに設定。
LED割り当て
T-MonitorのcpuLED()関数で、LED操作ができる。LED表示の為に下記のGPIOポートを割り当てている。
Raspberry Pi Zero/1/2
bit番号 | GPIO番号 | 備考 |
---|---|---|
0 | 47 | ACT(緑) |
1 | 35 | PWR(赤),Raspberry Pi Zeroは無し |
Raspberry Pi 3
Raspberry Pi 3ではACT/PWRはARM CPUから操作できない。
bit番号 | GPIO番号 | 備考 |
---|---|---|
0 | 17 | コネクタの11ピン |
JTAGピン
JTAGデバッグ可能なように、T-Monitorの初期化時に、Raspberry PiのJTAGピンを有効にしている。Raspberry PiコネクタのJTAGピンの割り当ては下記。
ピン番号 | GPIO番号 | GPIOモード | 機能(JTAG) |
---|---|---|---|
15 | GPIO22 | ALT4 | TRST |
7 | GPIO4 | ALT5 | TDI |
13 | GPIO27 | ALT5 | TMS |
22 | GPIO25 | ALT5 | TCK |
18 | GPIO24 | ALT5 | TDO |
- Raspberry Pi Zero/2ではJTAGデバッガ接続できるは確認したが、Raspberry Pi 3では未確認。
関連記事
参考
develop/rtk_kernel/rtk_kernel-rpi/implement/start.txt · 最終更新: 2020/01/07 14:20 by yoko