- Timestamp:
- Aug 23, 2017, 9:27:43 AM (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
EcnlProtoTool/trunk/asp3_dcre/target/gr_peach_gcc/target_kernel_impl.c
- Property svn:keywords deleted
-
Property svn:mime-type
changed from
text/x-csrc
totext/x-csrc;charset=UTF-8
r279 r321 7 7 * Graduate School of Information Science, Nagoya Univ., JAPAN 8 8 * 9 * ä¸è¨èä½æ¨©è 10 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 11 * ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 12 * å¤ã»åé 13 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 14 * (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 15 * 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 16 * ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 17 * (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 18 * ç¨ã§ããå½¢ã§åé 19 å¸ããå ´åã«ã¯ï¼åé 20 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 21 * è 22 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 23 * ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 24 * (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 25 * ç¨ã§ããªãå½¢ã§åé 26 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 27 * ã¨ï¼ 28 * (a) åé 29 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 30 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 31 * ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 32 * (b) åé 33 å¸ã®å½¢æ 34 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 35 * å ±åãããã¨ï¼ 36 * (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 37 * 害ãããï¼ä¸è¨èä½æ¨©è 38 ããã³TOPPERSããã¸ã§ã¯ããå 39 責ãããã¨ï¼ 40 * ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 41 * ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 42 ããã³TOPPERSããã¸ã§ã¯ãã 43 * å 44 責ãããã¨ï¼ 45 * 46 * æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 47 ã 48 * ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 49 * ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 50 * ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 51 * ã®è²¬ä»»ãè² ããªãï¼ 9 * 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ 10 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 11 * 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 12 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 13 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 14 * スコード中に含まれていること. 15 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 16 * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 17 * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 18 * の無保証規定を掲載すること. 19 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 20 * 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 21 * と. 22 * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 23 * 作権表示,この利用条件および下記の無保証規定を掲載すること. 24 * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 25 * 報告すること. 26 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 27 * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 28 * また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 29 * 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 30 * 免責すること. 31 * 32 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 33 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 34 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 35 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 36 * の責任を負わない. 52 37 * 53 38 * $Id$ … … 55 40 56 41 /* 57 * ã«ã¼ãã«ã®ã¿ã¼ã²ããä¾åé¨ï¼GR-PEACHç¨ï¼42 * カーネルのターゲット依存部(GR-PEACH用) 58 43 */ 59 44 … … 67 52 68 53 /* 69 * ã«ã¼ãã«åä½æã®ã¡ã¢ãªãããã¨é¢é£ããå®ç¾© 70 * 71 * 0x18000000 - 0x1fffffffï¼ã·ãªã¢ã«ãã©ãã·ã¥ã¡ã¢ãªï¼128MBï¼ 72 * 0x20000000 - 0x209fffffï¼å 73 èµSRAMï¼10MBï¼ 74 * 0x3fe00000 - 0x3fffffffï¼I/Oé åï¼2MBï¼ï¼äºç´é åãå«ã 75 * 0xe8000000 - 0xffffffffï¼I/Oé åï¼384MBï¼ï¼äºç´é åãå«ã 76 */ 77 78 /* 79 * MMUã¸ã®è¨å®å±æ§ï¼ç¬¬1ã¬ãã«ãã£ã¹ã¯ãªãã¿ï¼ 54 * カーネル動作時のメモリマップと関連する定義 55 * 56 * 0x18000000 - 0x1fffffff:シリアルフラッシュメモリ(128MB) 57 * 0x20000000 - 0x209fffff:内蔵SRAM(10MB) 58 * 0x3fe00000 - 0x3fffffff:I/O領域(2MB),予約領域を含む 59 * 0xe8000000 - 0xffffffff:I/O領域(384MB),予約領域を含む 60 */ 61 62 /* 63 * MMUへの設定属性(第1レベルディスクリプタ) 80 64 */ 81 65 #define MMU_ATTR_RAM (ARM_MMU_DSCR1_SHARED|ARMV6_MMU_DSCR1_APX0 \ … … 86 70 |ARM_MMU_DSCR1_CB01|ARMV6_MMU_DSCR1_NOEXEC) 87 71 /* 88 * MMUã®è¨å®æ 89 å ±ï¼ã¡ã¢ãªã¨ãªã¢ã®æ 90 å ±ï¼ 72 * MMUの設定情報(メモリエリアの情報) 91 73 */ 92 74 ARM_MMU_CONFIG arm_memory_area[] = { … … 98 80 99 81 /* 100 * MMUã®è¨å®æ 101 å ±ã®æ°ï¼ã¡ã¢ãªã¨ãªã¢ã®æ°ï¼ 82 * MMUの設定情報の数(メモリエリアの数) 102 83 */ 103 84 const uint_t arm_tnum_memory_area … … 105 86 106 87 /* 107 * ä½æ¶è²»é»åã¢ã¼ãã®åæå88 * 低消費電力モードの初期化 108 89 */ 109 90 static void 110 91 lowpower_initialize(void) 111 92 { 112 /* ã¹ã¿ã³ãã¤ã¢ã¼ãæã«ç«¯åç¶æ 113 ãç¶æããï¼CoreSightåä½ */ 93 /* スタンバイモード時に端子状態を維持する.CoreSight動作 */ 114 94 sil_wrb_mem(RZA1_STBCR2, 0x6a); 115 (void) sil_reb_mem(RZA1_STBCR2); /* ããã¼ãªã¼ã*/116 117 /* IEBus, irDA, LIN0, LIN1, MTU2, RSCAN2, ASC, PWM åä½*/95 (void) sil_reb_mem(RZA1_STBCR2); /* ダミーリード */ 96 97 /* IEBus, irDA, LIN0, LIN1, MTU2, RSCAN2, ASC, PWM動作 */ 118 98 sil_wrb_mem(RZA1_STBCR3, 0x00); 119 (void) sil_reb_mem(RZA1_STBCR3); /* ããã¼ãªã¼ã*/120 121 /* SCIF0, SCIF1, SCIF2, SCIF3, SCIF4, SCIF5, SCIF6, SCIF7 åä½*/99 (void) sil_reb_mem(RZA1_STBCR3); /* ダミーリード */ 100 101 /* SCIF0, SCIF1, SCIF2, SCIF3, SCIF4, SCIF5, SCIF6, SCIF7動作 */ 122 102 sil_wrb_mem(RZA1_STBCR4, 0x00); 123 (void) sil_reb_mem(RZA1_STBCR4); /* ããã¼ãªã¼ã*/124 125 /* SCIM0, SCIM1, SDG0, SDG1, SDG2, SDG3, OSTM0, OSTM1 åä½*/103 (void) sil_reb_mem(RZA1_STBCR4); /* ダミーリード */ 104 105 /* SCIM0, SCIM1, SDG0, SDG1, SDG2, SDG3, OSTM0, OSTM1動作 */ 126 106 sil_wrb_mem(RZA1_STBCR5, 0x00); 127 (void) sil_reb_mem(RZA1_STBCR5); /* ããã¼ãªã¼ã*/128 129 /* A/D, CEU, DISCOM0, DISCOM1, DRC0, DRC1, JCU, RTClock åä½*/107 (void) sil_reb_mem(RZA1_STBCR5); /* ダミーリード */ 108 109 /* A/D, CEU, DISCOM0, DISCOM1, DRC0, DRC1, JCU, RTClock動作 */ 130 110 sil_wrb_mem(RZA1_STBCR6, 0x00); 131 (void) sil_reb_mem(RZA1_STBCR6); /* ããã¼ãªã¼ã*/132 133 /* DVDEC0, DVDEC1, ETHER, FLCTL, USB0, USB1 åä½*/111 (void) sil_reb_mem(RZA1_STBCR6); /* ダミーリード */ 112 113 /* DVDEC0, DVDEC1, ETHER, FLCTL, USB0, USB1動作 */ 134 114 sil_wrb_mem(RZA1_STBCR7, 0x24); 135 (void) sil_reb_mem(RZA1_STBCR7); /* ããã¼ãªã¼ã*/136 137 /* IMR-LS20, IMR-LS21, IMR-LSD, MMCIF, MOST50, SCUX åä½*/115 (void) sil_reb_mem(RZA1_STBCR7); /* ダミーリード */ 116 117 /* IMR-LS20, IMR-LS21, IMR-LSD, MMCIF, MOST50, SCUX動作 */ 138 118 sil_wrb_mem(RZA1_STBCR8, 0x05); 139 (void) sil_reb_mem(RZA1_STBCR8); /* ããã¼ãªã¼ã*/140 141 /* I2C0, I2C1, I2C2, I2C3, SPIBSC0, SPIBSC1, VDC50, VDC51 åä½*/119 (void) sil_reb_mem(RZA1_STBCR8); /* ダミーリード */ 120 121 /* I2C0, I2C1, I2C2, I2C3, SPIBSC0, SPIBSC1, VDC50, VDC51動作 */ 142 122 sil_wrb_mem(RZA1_STBCR9, 0x00); 143 (void) sil_reb_mem(RZA1_STBCR9); /* ããã¼ãªã¼ã*/144 145 /* RSPI0, RSPI1, RSPI2, RSPI3, RSPI4, CD-ROMDEC, RSPDIF, RGPVG åä½*/123 (void) sil_reb_mem(RZA1_STBCR9); /* ダミーリード */ 124 125 /* RSPI0, RSPI1, RSPI2, RSPI3, RSPI4, CD-ROMDEC, RSPDIF, RGPVG動作 */ 146 126 sil_wrb_mem(RZA1_STBCR10, 0x00); 147 (void) sil_reb_mem(RZA1_STBCR10); /* ããã¼ãªã¼ã*/148 149 /* SSIF0, SSIF1, SSIF2, SSIF3, SSIF4, SSIF5 åä½*/127 (void) sil_reb_mem(RZA1_STBCR10); /* ダミーリード */ 128 129 /* SSIF0, SSIF1, SSIF2, SSIF3, SSIF4, SSIF5動作 */ 150 130 sil_wrb_mem(RZA1_STBCR11, 0xc0); 151 (void) sil_reb_mem(RZA1_STBCR11); /* ããã¼ãªã¼ã*/152 153 /* SDHI00, SDHI01, SDHI10, SDHI11 åä½*/131 (void) sil_reb_mem(RZA1_STBCR11); /* ダミーリード */ 132 133 /* SDHI00, SDHI01, SDHI10, SDHI11動作 */ 154 134 sil_wrb_mem(RZA1_STBCR12, 0xf0); 155 (void) sil_reb_mem(RZA1_STBCR12); /* ããã¼ãªã¼ã */ 156 } 157 158 /* 159 * æ±ç¨å 160 ¥åºåãã¼ãã®åæåï¼ãã¼ãï¼ããªãã§ã©ã«å 161 ¼ç¨ãã³ã®ã¢ãµã¤ã³ã®è¨å®ï¼ 135 (void) sil_reb_mem(RZA1_STBCR12); /* ダミーリード */ 136 } 137 138 /* 139 * 汎用入出力ポートの初期化(ポート/ペリフェラル兼用ピンのアサインの設定) 162 140 */ 163 141 static void 164 142 port_initialize(void) 165 143 { 166 /* ãã¼ã6:ããã3ï¼TxD2ï¼ã®è¨å®*/144 /* ポート6:ビット3(TxD2)の設定 */ 167 145 rza1_config_port(RZA1_PORT_PIBC(6), 3, 0); 168 146 rza1_config_port(RZA1_PORT_PBDC(6), 3, 0); 169 147 rza1_config_port(RZA1_PORT_PIPC(6), 3, 1); 170 /* 第7å 171 ¼ç¨æ©è½ï¼TxD2ï¼ï¼åºå */ 148 /* 第7兼用機能(TxD2),出力 */ 172 149 rza1_config_port(RZA1_PORT_PMC(6), 3, 1); 173 150 rza1_config_port(RZA1_PORT_PFCAE(6), 3, 1); … … 176 153 rza1_config_port(RZA1_PORT_PM(6), 3, 0); 177 154 178 /* ãã¼ã6:ããã2ï¼RxD2ï¼ã®è¨å®*/155 /* ポート6:ビット2(RxD2)の設定 */ 179 156 rza1_config_port(RZA1_PORT_PIBC(6), 2, 0); 180 157 rza1_config_port(RZA1_PORT_PBDC(6), 2, 0); 181 158 rza1_config_port(RZA1_PORT_PIPC(6), 2, 1); 182 /* 第7å 183 ¼ç¨æ©è½ï¼RxD2ï¼ï¼å 184 ¥å */ 159 /* 第7兼用機能(RxD2),入力 */ 185 160 rza1_config_port(RZA1_PORT_PMC(6), 2, 1); 186 161 rza1_config_port(RZA1_PORT_PFCAE(6), 2, 1); … … 189 164 rza1_config_port(RZA1_PORT_PM(6), 2, 1); 190 165 191 /* ãã¼ã6:ããã13ï¼LED1ï¼èµ¤ï¼ã®è¨å®*/166 /* ポート6:ビット13(LED1/赤)の設定 */ 192 167 rza1_config_port(RZA1_PORT_PIBC(6), 13, 0); 193 168 rza1_config_port(RZA1_PORT_PBDC(6), 13, 0); 194 /* ãã¼ãã¢ã¼ãï¼åºå*/169 /* ポートモード,出力 */ 195 170 rza1_config_port(RZA1_PORT_PMC(6), 13, 0); 196 171 rza1_config_port(RZA1_PORT_PM(6), 13, 0); 197 172 198 /* ãã¼ã6:ããã14ï¼LED2ï¼ç·ï¼ã®è¨å®*/173 /* ポート6:ビット14(LED2/緑)の設定 */ 199 174 rza1_config_port(RZA1_PORT_PIBC(6), 14, 0); 200 175 rza1_config_port(RZA1_PORT_PBDC(6), 14, 0); 201 /* ãã¼ãã¢ã¼ãï¼åºå*/176 /* ポートモード,出力 */ 202 177 rza1_config_port(RZA1_PORT_PMC(6), 14, 0); 203 178 rza1_config_port(RZA1_PORT_PM(6), 14, 0); 204 179 205 /* ãã¼ã6:ããã15ï¼LED3ï¼éï¼ã®è¨å®*/180 /* ポート6:ビット15(LED3/青)の設定 */ 206 181 rza1_config_port(RZA1_PORT_PIBC(6), 15, 0); 207 182 rza1_config_port(RZA1_PORT_PBDC(6), 15, 0); 208 /* ãã¼ãã¢ã¼ãï¼åºå*/183 /* ポートモード,出力 */ 209 184 rza1_config_port(RZA1_PORT_PMC(6), 15, 0); 210 185 rza1_config_port(RZA1_PORT_PM(6), 15, 0); 211 186 212 /* ãã¼ã6:ããã12ï¼LED4ï¼ã¦ã¼ã¶ï¼ã®è¨å®*/187 /* ポート6:ビット12(LED4/ユーザ)の設定 */ 213 188 rza1_config_port(RZA1_PORT_PIBC(6), 12, 0); 214 189 rza1_config_port(RZA1_PORT_PBDC(6), 12, 0); 215 /* ãã¼ãã¢ã¼ãï¼åºå*/190 /* ポートモード,出力 */ 216 191 rza1_config_port(RZA1_PORT_PMC(6), 12, 0); 217 192 rza1_config_port(RZA1_PORT_PM(6), 12, 0); 218 193 219 /* ãã¼ã6:ããã0ï¼ã¦ã¼ã¶ãã¿ã³ï¼ã®è¨å®*/194 /* ポート6:ビット0(ユーザボタン)の設定 */ 220 195 rza1_config_port(RZA1_PORT_PIBC(6), 0, 1); 221 196 rza1_config_port(RZA1_PORT_PBDC(6), 0, 0); 222 /* 第6å 223 ¼ç¨æ©è½ï¼IRQ5ï¼ï¼å 224 ¥å */ 197 /* 第6兼用機能(IRQ5),入力 */ 225 198 rza1_config_port(RZA1_PORT_PMC(6), 0, 1); 226 199 rza1_config_port(RZA1_PORT_PFCAE(6), 0, 1); … … 231 204 232 205 /* 233 * ã·ã¹ãã ãã°ã®ä½ã¬ãã«åºåã®ããã®åæå 234 * 235 * ã»ã«ã¿ã¤ãtPutLogGRPeachå 236 ã«å®è£ 237 ããã¦ããé¢æ°ãç´æ¥å¼ã³åºãï¼ 206 * システムログの低レベル出力のための初期化 207 * 208 * セルタイプtPutLogGRPeach内に実装されている関数を直接呼び出す. 238 209 */ 239 210 extern void tPutLogGRPeach_initialize(void); 240 211 241 212 /* 242 * ã¿ã¼ã²ããä¾åã®åæå213 * ターゲット依存の初期化 243 214 */ 244 215 void 245 216 target_initialize(void) 246 217 { 247 extern void *vector_table; /* ãã¯ã¿ãã¼ãã«*/248 249 /* 250 * Low exception vectors ã使ç¨218 extern void *vector_table; /* ベクタテーブル */ 219 220 /* 221 * Low exception vectorsを使用 251 222 */ 252 223 /*arm_set_low_vectors();*/ 253 224 254 225 /* 255 * ãããä¾åã®åæå226 * チップ依存の初期化 256 227 */ 257 228 /*chip_initialize();*/ 258 229 259 230 /* 260 * ä½æ¶è²»é»åã¢ã¼ãã®åæå231 * 低消費電力モードの初期化 261 232 */ 262 233 lowpower_initialize(); 263 234 264 235 /* 265 * æ±ç¨å 266 ¥åºåãã¼ãã®åæåï¼ãã¼ãï¼ããªãã§ã©ã«å 267 ¼ç¨ãã³ã®ã¢ãµã¤ã³ã®è¨å®ï¼ 236 * 汎用入出力ポートの初期化(ポート/ペリフェラル兼用ピンのアサインの設定) 268 237 */ 269 238 port_initialize(); 270 239 271 240 /* 272 * ãã¯ã¿ãã¼ãã«ã®è¨å®241 * ベクタテーブルの設定 273 242 */ 274 243 /*CP15_WRITE_VBAR((uint32_t) &vector_table);*/ 275 244 276 245 /* 277 * L2 ãã£ãã·ã¥ã³ã³ããã¼ã©ï¼PL310ï¼ã®åæå246 * L2キャッシュコントローラ(PL310)の初期化 278 247 */ 279 248 /*pl310_initialize(0x0U, ~0x0U);*/ 280 249 281 250 /* 282 * LED ãéè²ã«ç¹ç¯ããã251 * LEDを青色に点灯させる 283 252 */ 284 253 gr_peach_set_led(GR_PEACH_LED_BLUE, 1); 285 254 286 255 /* 287 * ä½ã¬ãã«åºåç¨ã«SIOãåæå256 * 低レベル出力用にSIOを初期化 288 257 */ 289 258 #ifndef TOPPERS_OMIT_TECS … … 293 262 294 263 /* 295 * ã¿ã¼ã²ããä¾åã®çµäºå¦ç264 * ターゲット依存の終了処理 296 265 */ 297 266 void … … 301 270 302 271 /* 303 * ãããä¾åã®çµäºå¦ç272 * チップ依存の終了処理 304 273 */ 305 274 chip_terminate(); 306 275 307 276 /* 308 * bkpt å½ä»¤ã«ãããããã¬ã«å¶å¾¡ã移ãï¼ãã©ã¡ã¼ã¿ãä½ãè¯ããæªæ¤è¨ï¼277 * bkpt命令によりデバッガに制御を移す(パラメータが何が良いか未検討) 309 278 */ 310 279 if (first){ … … 317 286 318 287 /* 319 * LED ã®ç¹ç¯ï¼æ¶ç¯288 * LEDの点灯/消灯 320 289 */ 321 290 void
Note:
See TracChangeset
for help on using the changeset viewer.