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

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

add target dependent files of ssp for rpi3

  • Property svn:keywords set to Id
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
20(3-1) 割込み処理に関する規定
21
22(3-1-1) 概要
23
24BCM283x は独自の割込みコントローラを搭載し,以下の特徴を持つ.
25・割込み優å…
26ˆãƒ¬ãƒ™ãƒ«ã¯ã‚µãƒãƒ¼ãƒˆã—ない.
27・割込みはå…
28¨ã¦ãƒ¬ãƒ™ãƒ«ãƒˆãƒªã‚¬ã§ã‚る.したがって割込み要求フラグは
29 割込み発生å…
30ƒã®ãƒ‡ãƒã‚¤ã‚¹ã‚’直接操作してクリアする必
31要がある.
32
33BCM283x依存部では,IRQ をカーネル管理の割込み,FIQをカーネル管理外の割込みとする.
34
35
36(3-1-2) 割込みハンドラ番号と割込み番号の割当て,両者
37の対応
38
39割込みハンドラ番号と割込み番号は,BCM2835及びBCM2836の
40ペリフェラルマニュアル(下記a及びb)から,ペンディングレジスタのビット位置に基づいて
410から127の番号を割り当てる.(個々
42の定義は bcm2837.h を参ç…
43§)
44
45 0 ... 31 Core interrupt (下記aのP16 「Core0 interrupt source」に対応)
4632 ... 63 ARM peripherals interrupt(bのP113「Basic pending register」に対応)
4764 ... 95 ARM peripherals interrupt(bのP115「GPU pending register 1」に対応)
4896 ...127 ARM peripherals interrupt(bのP115「GPU pending register 2」に対応)
49
50(a) QA7(ARM Quad A7 core)
51https://www.raspberrypi.org/documentation/hardware/raspberrypi/bcm2836/QA7_rev3.4.pdf
52
53(b) BCM2835 ARM Peripherals
54https://www.raspberrypi.org/documentation/hardware/raspberrypi/bcm2835/BCM2835-ARM-Peripherals.pdf
55
56
57(3-1-3) 割込み優å…
58ˆåº¦ã®æ®µéšŽæ•°ï¼ˆTMIN_INTPRIの値),その設定方法
59
60割込み優å…
61ˆåº¦ã®æ®µéšŽæ•°ã¯ï¼Œã‚¿ãƒ¼ã‚²ãƒƒãƒˆä¾å­˜éƒ¨æ¯Žã«ç•°ãªã‚‹ï¼Ž
62BCM283x の割込みコントローラは優å…
63ˆåº¦åˆ¶å¾¡æ©Ÿèƒ½ã‚’持たないためソフトウェアで実現する.
64そのため段階数を独自に設定することが可能である.
65
66カーネル管理内
67の割込みに対する最高優å…
68ˆåº¦(TMIN_INTPRI)はチップ依存部で
69既定値を定義しているが,ターゲット依存部で設定することも可能である.
70
71各割込みの割込み優å…
72ˆåº¦ã¯ï¼ŒCFG_INT で設定する.優å…
73ˆåº¦ã¯ TMIN_INTPRI 以上の値
74(優å…
75ˆåº¦ã¨ã—ては低い値)を指定する.
76
77(3-1-4) dis_intとena_intのサポートの有無,その制限事項
78
79
80dis_int と ena_int はサポートしない
81
82
83(3-1-5) CFG_INTの制限事項
84と拡張(ターゲット定義で使用できる割込み属性)
85
86レベル割込みしかサポートしないため,エッジ/レベルのトリガ設定は意味をもたない.
87その他,ターゲット独自に使用可能な割込み属性はない.
88
89
90(3-1-6) カーネル管理外の割込み
91
92FIQ割込みをカーネル管理外の割込みとして扱う.
93
94FIQ割込みが発生すると該当する割込みベクタからレジスタの退避を行なった後に
95call_fiq_handler (core_config.c) が呼び出される.この関数は,
96コアのå…
97¨ã¦ã®ä¾‹å¤–がマスクされた状æ…
98‹(ステータスレジスタのD,A,I,Fがå…
99¨ã¦1)で
100呼び出される.
101
102FIQを利用するための設定,発生したFIQ 割込みに対する要因判別,
103及び対応するハンドラ等の処理は独自に実装
104する必
105要がある.
106
107カーネル管理外の割込みを設定するためのAPIはサポートしない.
108
109
110(3-2) CPUロック・割込みロック
111
112CPUロックは,ステータスレジスタのIビットの値で判別する.
113å…
114¨å‰²è¾¼ã¿ãƒ­ãƒƒã‚¯ãƒ•ãƒ©ã‚°ã®å®Ÿè£…
115ではこれに加えFビットも使用する.
116
117CPUロックフラグは割込みロックフラグとは独立したフラグとしてサポートする.
118そのため,SIL_LOC_INT呼び出し時はIフラグの状æ…
119‹ã‚’記憶し,
120SIL_UNL_INT呼び出し時にå…
121ƒã®çŠ¶æ…
122‹ã«æˆ»ã—ている.
123
124
125(3-3) 性能評価用システム時刻の参ç…
126§ã«é–¢ã™ã‚‹è¦å®š
127
128get_utmをサポートしない.
129
130
131(3-4) スタートアップルーチンでの初期化内
132容
133
134スタートアップルーチンはターゲット依存部のドキュメントに記載する.
135
136
137(4) ディレクトリ構成・ファイル構成
138 ./arch/arm64_gcc/bcm283x/
139 MANIFEST
140 Makefile.chip
141 bcm2837.h
142 chip_cfg1_out.h
143 chip_check.trb
144 chip_config.c
145 chip_config.h
146 chip_design.txt
147 chip_kernel.h
148 chip_kernel.trb
149 chip_rename.def
150 chip_rename.h
151 chip_serial.c
152 chip_serial.cfg
153 chip_serial.h
154 chip_sil.h
155 chip_stddef.h
156 chip_support.S
157 chip_sym.def
158 chip_test.h
159 chip_timer.cfg
160 chip_timer.h
161 chip_unrename.h
162 chip_user.txt
163 pl011.h
164
165(12) バージョン履歴
166
1672018/05/30
168 ・最初のリリース
1692019/04/15
170 ・BCM283xチップ依存部の分離に合わせて修正
Note: See TracBrowser for help on using the repository browser.