1 | =====================================================================
|
---|
2 | BCM283xãããä¾åé¨
|
---|
3 | Last Modified: '19/04/16
|
---|
4 | =====================================================================
|
---|
5 |
|
---|
6 |
|
---|
7 | (1) 対å¿ãã¦ããã¿ã¼ã²ããã·ã¹ãã ã®ç¨®é¡ã»æ§æ
|
---|
8 |
|
---|
9 | bcm283xãããä¾åé¨ã¯ï¼ä¸»ã« 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 |
|
---|
24 | BCM283x ã¯ç¬èªã®å²è¾¼ã¿ã³ã³ããã¼ã©ãæè¼ãï¼ä»¥ä¸ã®ç¹å¾´ãæã¤ï¼
|
---|
25 | ã»å²è¾¼ã¿åªå
|
---|
26 | ã¬ãã«ã¯ãµãã¼ãããªãï¼
|
---|
27 | ã»å²è¾¼ã¿ã¯å
|
---|
28 | ¨ã¦ã¬ãã«ããªã¬ã§ããï¼ãããã£ã¦å²è¾¼ã¿è¦æ±ãã©ã°ã¯
|
---|
29 | å²è¾¼ã¿çºçå
|
---|
30 | ã®ããã¤ã¹ãç´æ¥æä½ãã¦ã¯ãªã¢ããå¿
|
---|
31 | è¦ãããï¼
|
---|
32 |
|
---|
33 | BCM283xä¾åé¨ã§ã¯ï¼IRQ ãã«ã¼ãã«ç®¡çã®å²è¾¼ã¿ï¼FIQãã«ã¼ãã«ç®¡çå¤ã®å²è¾¼ã¿ã¨ããï¼
|
---|
34 |
|
---|
35 |
|
---|
36 | (3-1-2) å²è¾¼ã¿ãã³ãã©çªå·ã¨å²è¾¼ã¿çªå·ã®å²å½ã¦ï¼ä¸¡è
|
---|
37 | ã®å¯¾å¿
|
---|
38 |
|
---|
39 | å²è¾¼ã¿ãã³ãã©çªå·ã¨å²è¾¼ã¿çªå·ã¯ï¼BCM2835åã³BCM2836ã®
|
---|
40 | ããªãã§ã©ã«ããã¥ã¢ã«(ä¸è¨aåã³b)ããï¼ãã³ãã£ã³ã°ã¬ã¸ã¹ã¿ã®ãããä½ç½®ã«åºã¥ãã¦
|
---|
41 | 0ãã127ã®çªå·ãå²ãå½ã¦ãï¼(åã
|
---|
42 | ã®å®ç¾©ã¯ bcm2837.h ãåç
|
---|
43 | §)
|
---|
44 |
|
---|
45 | 0 ... 31 Core interrupt (ä¸è¨aã®P16 ãCore0 interrupt sourceãã«å¯¾å¿)
|
---|
46 | 32 ... 63 ARM peripherals interrupt(bã®P113ãBasic pending registerãã«å¯¾å¿)
|
---|
47 | 64 ... 95 ARM peripherals interrupt(bã®P115ãGPU pending register 1ãã«å¯¾å¿)
|
---|
48 | 96 ...127 ARM peripherals interrupt(bã®P115ãGPU pending register 2ãã«å¯¾å¿)
|
---|
49 |
|
---|
50 | (a) QA7(ARM Quad A7 core)
|
---|
51 | https://www.raspberrypi.org/documentation/hardware/raspberrypi/bcm2836/QA7_rev3.4.pdf
|
---|
52 |
|
---|
53 | (b) BCM2835 ARM Peripherals
|
---|
54 | https://www.raspberrypi.org/documentation/hardware/raspberrypi/bcm2835/BCM2835-ARM-Peripherals.pdf
|
---|
55 |
|
---|
56 |
|
---|
57 | (3-1-3) å²è¾¼ã¿åªå
|
---|
58 | 度ã®æ®µéæ°ï¼TMIN_INTPRIã®å¤ï¼ï¼ãã®è¨å®æ¹æ³
|
---|
59 |
|
---|
60 | å²è¾¼ã¿åªå
|
---|
61 | 度ã®æ®µéæ°ã¯ï¼ã¿ã¼ã²ããä¾åé¨æ¯ã«ç°ãªãï¼
|
---|
62 | BCM283x ã®å²è¾¼ã¿ã³ã³ããã¼ã©ã¯åªå
|
---|
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 |
|
---|
80 | dis_int 㨠ena_int ã¯ãµãã¼ãããªã
|
---|
81 |
|
---|
82 |
|
---|
83 | (3-1-5) CFG_INTã®å¶éäºé
|
---|
84 | ã¨æ¡å¼µï¼ã¿ã¼ã²ããå®ç¾©ã§ä½¿ç¨ã§ããå²è¾¼ã¿å±æ§ï¼
|
---|
85 |
|
---|
86 | ã¬ãã«å²è¾¼ã¿ãããµãã¼ãããªãããï¼ã¨ãã¸/ã¬ãã«ã®ããªã¬è¨å®ã¯æå³ããããªãï¼
|
---|
87 | ãã®ä»ï¼ã¿ã¼ã²ããç¬èªã«ä½¿ç¨å¯è½ãªå²è¾¼ã¿å±æ§ã¯ãªãï¼
|
---|
88 |
|
---|
89 |
|
---|
90 | (3-1-6) ã«ã¼ãã«ç®¡çå¤ã®å²è¾¼ã¿
|
---|
91 |
|
---|
92 | FIQå²è¾¼ã¿ãã«ã¼ãã«ç®¡çå¤ã®å²è¾¼ã¿ã¨ãã¦æ±ãï¼
|
---|
93 |
|
---|
94 | FIQå²è¾¼ã¿ãçºçããã¨è©²å½ããå²è¾¼ã¿ãã¯ã¿ããã¬ã¸ã¹ã¿ã®éé¿ãè¡ãªã£ãå¾ã«
|
---|
95 | call_fiq_handler (core_config.c) ãå¼ã³åºãããï¼ãã®é¢æ°ã¯ï¼
|
---|
96 | ã³ã¢ã®å
|
---|
97 | ¨ã¦ã®ä¾å¤ããã¹ã¯ãããç¶æ
|
---|
98 | (ã¹ãã¼ã¿ã¹ã¬ã¸ã¹ã¿ã®D,A,I,Fãå
|
---|
99 | ¨ã¦1)ã§
|
---|
100 | å¼ã³åºãããï¼
|
---|
101 |
|
---|
102 | FIQãå©ç¨ããããã®è¨å®ï¼çºçããFIQ å²è¾¼ã¿ã«å¯¾ããè¦å å¤å¥ï¼
|
---|
103 | åã³å¯¾å¿ãããã³ãã©çã®å¦çã¯ç¬èªã«å®è£
|
---|
104 | ããå¿
|
---|
105 | è¦ãããï¼
|
---|
106 |
|
---|
107 | ã«ã¼ãã«ç®¡çå¤ã®å²è¾¼ã¿ãè¨å®ããããã®APIã¯ãµãã¼ãããªãï¼
|
---|
108 |
|
---|
109 |
|
---|
110 | (3-2) CPUããã¯ã»å²è¾¼ã¿ããã¯
|
---|
111 |
|
---|
112 | CPUããã¯ã¯ï¼ã¹ãã¼ã¿ã¹ã¬ã¸ã¹ã¿ã®Iãããã®å¤ã§å¤å¥ããï¼
|
---|
113 | å
|
---|
114 | ¨å²è¾¼ã¿ããã¯ãã©ã°ã®å®è£
|
---|
115 | ã§ã¯ããã«å ãFãããã使ç¨ããï¼
|
---|
116 |
|
---|
117 | CPUããã¯ãã©ã°ã¯å²è¾¼ã¿ããã¯ãã©ã°ã¨ã¯ç¬ç«ãããã©ã°ã¨ãã¦ãµãã¼ãããï¼
|
---|
118 | ãã®ããï¼SIL_LOC_INTå¼ã³åºãæã¯Iãã©ã°ã®ç¶æ
|
---|
119 | ãè¨æ¶ãï¼
|
---|
120 | SIL_UNL_INTå¼ã³åºãæã«å
|
---|
121 | ã®ç¶æ
|
---|
122 | ã«æ»ãã¦ããï¼
|
---|
123 |
|
---|
124 |
|
---|
125 | (3-3) æ§è½è©ä¾¡ç¨ã·ã¹ãã æå»ã®åç
|
---|
126 | §ã«é¢ããè¦å®
|
---|
127 |
|
---|
128 | get_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 |
|
---|
167 | 2018/05/30
|
---|
168 | ã»æåã®ãªãªã¼ã¹
|
---|
169 | 2019/04/15
|
---|
170 | ã»BCM283xãããä¾åé¨ã®åé¢ã«åããã¦ä¿®æ£
|
---|