[384] | 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ãããä¾åé¨ã®åé¢ã«åããã¦ä¿®æ£
|
---|