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 · 最終更新: by yoko
