新石器Wiki

近年はシリコン(石)から進化した便利なもので溢れる時代。そんな気になった事や試した事など記す。

ユーザ用ツール

サイト用ツール


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