source: ssp_rpi3/trunk/arch/arm64_gcc/bcm283x/chip_user.txt@ 386

Last change on this file since 386 was 386, checked in by nmir-saito, 5 years ago

modify svn:mimetype of files

  • Property svn:keywords set to Id
  • Property svn:mime-type set to text/plain; charset=utf-8
File size: 5.4 KB
Line 
1=====================================================================
2 BCM283xチップ依存部
3 Last Modified: '19/04/16
4=====================================================================
5
6
7(1) 対応しているターゲットシステムの種類・構成
8
9bcm283xチップ依存部は,主に Raspberry Pi で使用される Broadcom製チップを
10ターゲットとする.現時点では Raspberru Pi 3B に搭載されるBCM2837 をサポートする.
11
12(2) 使用する開発環境と動作検証した条件(バージョン,オプション等)
13
14カーネルはGCCを用いてコンパイルする.動作確認したバージョンは各ターゲ
15ット依存部のドキュメントに記載する.
16
17(3) ターゲット定義事項の規定
18
19(3-1) 割込み処理に関する規定
20
21(3-1-1) 概要
22
23BCM283x は独自の割込みコントローラを搭載し,以下の特徴を持つ.
24・割込み優先レベルはサポートしない.
25・割込みは全てレベルトリガである.したがって割込み要求フラグは
26 割込み発生元のデバイスを直接操作してクリアする必要がある.
27
28BCM283x依存部では,IRQ をカーネル管理の割込み,FIQをカーネル管理外の割込みとする.
29
30
31(3-1-2) 割込みハンドラ番号と割込み番号の割当て,両者の対応
32
33割込みハンドラ番号と割込み番号は,BCM2835及びBCM2836の
34ペリフェラルマニュアル(下記a及びb)から,ペンディングレジスタのビット位置に基づいて
350から127の番号を割り当てる.(個々の定義は bcm2837.h を参照)
36
37 0 ... 31 Core interrupt (下記aのP16 「Core0 interrupt source」に対応)
3832 ... 63 ARM peripherals interrupt(bのP113「Basic pending register」に対応)
3964 ... 95 ARM peripherals interrupt(bのP115「GPU pending register 1」に対応)
4096 ...127 ARM peripherals interrupt(bのP115「GPU pending register 2」に対応)
41
42(a) QA7(ARM Quad A7 core)
43https://www.raspberrypi.org/documentation/hardware/raspberrypi/bcm2836/QA7_rev3.4.pdf
44
45(b) BCM2835 ARM Peripherals
46https://www.raspberrypi.org/documentation/hardware/raspberrypi/bcm2835/BCM2835-ARM-Peripherals.pdf
47
48
49(3-1-3) 割込み優先度の段階数(TMIN_INTPRIの値),その設定方法
50
51割込み優先度の段階数は,ターゲット依存部毎に異なる.
52BCM283x の割込みコントローラは優先度制御機能を持たないためソフトウェアで実現する.
53そのため段階数を独自に設定することが可能である.
54
55カーネル管理内の割込みに対する最高優先度(TMIN_INTPRI)はチップ依存部で
56既定値を定義しているが,ターゲット依存部で設定することも可能である.
57
58各割込みの割込み優先度は,CFG_INT で設定する.優先度は TMIN_INTPRI 以上の値
59(優先度としては低い値)を指定する.
60
61(3-1-4) dis_intとena_intのサポートの有無,その制限事項
62
63dis_int と ena_int はサポートしない
64
65
66(3-1-5) CFG_INTの制限事項と拡張(ターゲット定義で使用できる割込み属性)
67
68レベル割込みしかサポートしないため,エッジ/レベルのトリガ設定は意味をもたない.
69その他,ターゲット独自に使用可能な割込み属性はない.
70
71
72(3-1-6) カーネル管理外の割込み
73
74FIQ割込みをカーネル管理外の割込みとして扱う.
75
76FIQ割込みが発生すると該当する割込みベクタからレジスタの退避を行なった後に
77call_fiq_handler (core_config.c) が呼び出される.この関数は,
78コアの全ての例外がマスクされた状態(ステータスレジスタのD,A,I,Fが全て1)で
79呼び出される.
80
81FIQを利用するための設定,発生したFIQ 割込みに対する要因判別,
82及び対応するハンドラ等の処理は独自に実装する必要がある.
83
84カーネル管理外の割込みを設定するためのAPIはサポートしない.
85
86
87(3-2) CPUロック・割込みロック
88
89CPUロックは,ステータスレジスタのIビットの値で判別する.
90全割込みロックフラグの実装ではこれに加えFビットも使用する.
91
92CPUロックフラグは割込みロックフラグとは独立したフラグとしてサポートする.
93そのため,SIL_LOC_INT呼び出し時はIフラグの状態を記憶し,
94SIL_UNL_INT呼び出し時に元の状態に戻している.
95
96
97(3-3) 性能評価用システム時刻の参照に関する規定
98
99get_utmをサポートしない.
100
101
102(3-4) スタートアップルーチンでの初期化内容
103
104スタートアップルーチンはターゲット依存部のドキュメントに記載する.
105
106
107(4) ディレクトリ構成・ファイル構成
108 ./arch/arm64_gcc/bcm283x/
109 MANIFEST
110 Makefile.chip
111 bcm2837.h
112 chip_cfg1_out.h
113 chip_check.trb
114 chip_config.c
115 chip_config.h
116 chip_design.txt
117 chip_kernel.h
118 chip_kernel.trb
119 chip_rename.def
120 chip_rename.h
121 chip_serial.c
122 chip_serial.cfg
123 chip_serial.h
124 chip_sil.h
125 chip_stddef.h
126 chip_support.S
127 chip_sym.def
128 chip_test.h
129 chip_timer.cfg
130 chip_timer.h
131 chip_unrename.h
132 chip_user.txt
133 pl011.h
134
135(12) バージョン履歴
136
1372018/05/30
138 ・最初のリリース
1392019/04/15
140 ・BCM283xチップ依存部の分離に合わせて修正
Note: See TracBrowser for help on using the repository browser.