[363] | 1 |
|
---|
| 2 | == TOPPERS/JSP ã«ã¼ãã« ã¦ã¼ã¶ãºããã¥ã¢ã« ==
|
---|
| 3 | (LatticeMico32 ã¿ã¼ã²ããä¾åé¨)
|
---|
| 4 |
|
---|
| 5 | (Release 1.4.3 対å¿, æçµæ´æ°: 7-Mar-2008)
|
---|
| 6 | ------------------------------------------------------------------------
|
---|
| 7 | TOPPERS/JSP Kernel
|
---|
| 8 | Toyohashi Open Platform for Embedded Real-Time Systems/
|
---|
| 9 | Just Standard Profile Kernel
|
---|
| 10 |
|
---|
| 11 | Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
|
---|
| 12 | Toyohashi Univ. of Technology, JAPAN
|
---|
| 13 |
|
---|
| 14 | ä¸è¨èä½æ¨©è
|
---|
| 15 | ã¯ï¼ä»¥ä¸ã® (1)ã(4) ã®æ¡ä»¶ãï¼Free Software Foundation
|
---|
| 16 | ã«ãã£ã¦å
|
---|
| 17 | ¬è¡¨ããã¦ãã GNU General Public License ã® Version 2 ã«è¨
|
---|
| 18 | è¿°ããã¦ããæ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ã¢ï¼æ¬ã½ããã¦ã§ã¢
|
---|
| 19 | ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹å¤ã»åé
|
---|
| 20 | å¸ï¼ä»¥ä¸ï¼
|
---|
| 21 | å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼
|
---|
| 22 | (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½
|
---|
| 23 | 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼
|
---|
| 24 | ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼
|
---|
| 25 | (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿
|
---|
| 26 | ç¨ã§ããå½¢ã§åé
|
---|
| 27 | å¸ããå ´åã«ã¯ï¼åé
|
---|
| 28 | å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨
|
---|
| 29 | è
|
---|
| 30 | ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨
|
---|
| 31 | ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼
|
---|
| 32 | (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿
|
---|
| 33 | ç¨ã§ããªãå½¢ã§åé
|
---|
| 34 | å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã
|
---|
| 35 | ã¨ï¼
|
---|
| 36 | (a) åé
|
---|
| 37 | å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è
|
---|
| 38 | ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è
|
---|
| 39 | ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼
|
---|
| 40 | (b) åé
|
---|
| 41 | å¸ã®å½¢æ
|
---|
| 42 | ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã«
|
---|
| 43 | å ±åãããã¨ï¼
|
---|
| 44 | (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ
|
---|
| 45 | 害ãããï¼ä¸è¨èä½æ¨©è
|
---|
| 46 | ããã³TOPPERSããã¸ã§ã¯ããå
|
---|
| 47 | 責ãããã¨ï¼
|
---|
| 48 |
|
---|
| 49 | æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è
|
---|
| 50 | ã
|
---|
| 51 | ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ãã®é©ç¨å¯è½æ§ã
|
---|
| 52 | å«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´
|
---|
| 53 | æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ãã®è²¬ä»»ãè² ããªãï¼
|
---|
| 54 |
|
---|
| 55 | ------------------------------------------------------------------------
|
---|
| 56 |
|
---|
| 57 | 1. LatticeMico32 (lm32) ã¿ã¼ã²ããä¾åé¨ã®æ¦è¦
|
---|
| 58 |
|
---|
| 59 | 1.1 ã¿ã¼ã²ããã·ã¹ãã ã¨éçºç°å¢
|
---|
| 60 | ããLatticeMico32 ããã»ããµã®ã¿ã¼ã²ããã·ã¹ãã 㯠Lattice FPGA æè¼ã®æ¬¡ã®
|
---|
| 61 | ãéçºã»è©ä¾¡ãã¼ãããµãã¼ããã¦ããã
|
---|
| 62 |
|
---|
| 63 | ã»Lattice 社æä¾; LatticeECP2 LatticeMico32/DSP éçºãã¼ã
|
---|
| 64 | (FPGA LatticeECP2-50 æè¼)
|
---|
| 65 |
|
---|
| 66 | ããéçºç°å¢ã«ã¯ãGCC ãªã©ã® GNU éçºç°å¢ãç¨ãããªãã¸ã§ã¯ããã¡ã¤ã«ãã©ã¼
|
---|
| 67 | ãããã㯠ELF ãæ¨æºã¨ããã
|
---|
| 68 |
|
---|
| 69 |
|
---|
| 70 | 1.2 ãµãã¼ãæ©è½ã®æ¦è¦
|
---|
| 71 | ããLatticeMico32 ä¾åã®æ©è½ã¨ãã¦ãå²è¾¼ã¿ã®ç¦æ¢ã¨è¨±å¯(dis_intãena_int)ã
|
---|
| 72 | ãã·ã¹ãã æå»åç
|
---|
| 73 | §æ©è½(get_tim)ãå²è¾¼ã¿ãã¹ã¯ã®å¤æ´ã»åç
|
---|
| 74 | §(chg_ixxãget_ixx)
|
---|
| 75 | ãããµãã¼ããã¦ããã詳細ãªãµãã¼ãé¢æ°ã«ã¤ãã¦ã¯æ¬ããã¥ã¢ã«ã®æ«å°¾ã«ä¸è¦§
|
---|
| 76 | ãã§ã¾ã¨ãã¦ããã
|
---|
| 77 |
|
---|
| 78 |
|
---|
| 79 | 1.3 ã·ã¹ãã æ§æ
|
---|
| 80 | ããLatticeMico32 㯠FPGA ã対象ã¨ãã¦ããããããã®ããã»ããµ/ããªãã§ã©ã«
|
---|
| 81 | ãæ§æã«å¯¾ããèªç±åº¦ã大ãããå¾ã£ã¦ JSP ã«ã¼ãã«ãåä½ãããããã«å¿
|
---|
| 82 | è¦ãª
|
---|
| 83 | ãå
|
---|
| 84 | ±éãªããã»ããµä¾åé¨ã /lm32 ä¸ã«ãã¿ã¼ã²ããã·ã¹ãã ä¾åé¨ã¯ãä¸è¿°ã®
|
---|
| 85 | ãè©ä¾¡ãã¼ãã®å ´åã«é¢ã㦠/lm32/ECP2 ä¸ã«ããã
|
---|
| 86 | ãããªããFPGA ã¯é»æºæå
|
---|
| 87 | ¥å¾ã«ã¦ã¼ã¶ã®è«çåè·¯ãä½ãè¾¼ãããã»ã¹ï¼ã³ã³ãã£ã°
|
---|
| 88 | ãã¬ã¼ã·ã§ã³ï¼ãä¸è¬ã«å¿
|
---|
| 89 | è¦ã§ããã LatticeECP2 ãããããã¿ã¤ãã§ããã
|
---|
| 90 | ãã·ã¹ãã ã¨ãã¦ã¯ãä½ããã®ä¸æ®çºæ§ã¡ã¢ãªå
|
---|
| 91 | ã«ãã®ã³ã³ãã£ã°ã¬ã¼ã·ã§ã³ç¨ã
|
---|
| 92 | ãã¼ã¿ãä¿æãã¦ããå¿
|
---|
| 93 | è¦ãããã
|
---|
| 94 |
|
---|
| 95 | ããã¿ã¼ã²ããã·ã¹ãã 㧠JSP ã«ã¼ãã«ãåä½ãããããã®ãã³ã¢ããªãã§ã©ã«
|
---|
| 96 | ãæå°æ§æã以ä¸ã«ç¤ºããJTAG ãããã°ãã¼ãã¯ä»»æã§ããã
|
---|
| 97 | ãã»ã¿ã¤ã
|
---|
| 98 | ãã»UART
|
---|
| 99 | ãã»ã¹ãã¬ã¼ã¸ã»ã³ã³ãã¼ãã³ãï¼å
|
---|
| 100 | é¨ RAMãå¤é¨ SRAMãå¤é¨ãã©ãã·ã¥ã¡ã¢ãªï¼
|
---|
| 101 |
|
---|
| 102 | ãã¹ãã¬ã¼ã¸ã»ã³ã³ãã¼ãã³ãã®æ§æï¼ãã¼ãæ¹æ³ï¼ã¨ãã¦ã¯ 2 ã¤ã®é¸æè¢ãããã
|
---|
| 103 | ãå
|
---|
| 104 | é¨ RAM ããã®ãã¼ãï¼
|
---|
| 105 | ããã«ã¼ãã«ã¤ã¡ã¼ã¸ã«å¯¾å¿ãããã¨ãã§ããç¨åº¦ã« FPGA ã®å
|
---|
| 106 | é¨ RAM ã大ãã
|
---|
| 107 | ããå ´åãã¹ãã¬ã¼ã¸ã»ã³ã³ãã¼ãã³ãã¨ãã¦ã¯å
|
---|
| 108 | é¨ RAM ã®ã¿ã¨ãã¦ãæ§æå¯è½ã§
|
---|
| 109 | ãããããã¹ã¿ãã¯é åãå
|
---|
| 110 | é¨ã«æã¤ãå¤é¨ SRAM ã«æã¤ãã¯ããã¯ãå
|
---|
| 111 | é¨ RAM ã®
|
---|
| 112 | ããè¦æ¨¡ãè¨è¨æ¹éã«ä¾åããã
|
---|
| 113 | ãããæ¬ãã¼ãæ¹æ³ã¯ãFPGA ãã³ã³ãã£ã°ã¬ã¼ã·ã§ã³ããéã«ãå
|
---|
| 114 | é¨ RAM ãã«ã¼ã
|
---|
| 115 | ããã«ã¤ã¡ã¼ã¸ã§åæã«åæåãããã®ã§ããããã¼ããã¼ããå¿
|
---|
| 116 | è¦ã¨ãããã¨ãªãã
|
---|
| 117 | ãããªã»ããå¾ç´ã¡ã«ãªã»ãããã¯ã¿ã¢ãã¬ã¹ããã¤ã¡ã¼ã¸ãå®è¡ããã
|
---|
| 118 |
|
---|
| 119 | ãå¤é¨ãã©ãã·ã¥ã¡ã¢ãªããã®ãã¼ãï¼
|
---|
| 120 | ããã¤ã¡ã¼ã¸ãå¤é¨ãã©ãã·ã¥ã«æ ¼ç´ããå¤é¨ SRAMï¼æãã¯å
|
---|
| 121 | é¨ RAMï¼ã§ã¤ã¡ã¼ã¸
|
---|
| 122 | ããå®è¡ããå ´åãã¹ãã¬ã¼ã¸ã»ã³ã³ãã¼ãã³ãã¨ãã¦ã¯å¤é¨ SRAM ã¨ãã©ãã·ã¥
|
---|
| 123 | ãã¡ã¢ãªã®æ§æã«ãªãããªã»ããå¾ããã©ãã·ã¥ã¡ã¢ãªå
|
---|
| 124 | ã®ãã¼ããã¼ããã¾ãèµ·å
|
---|
| 125 | ãããåãã¼ã¿ã»ã¯ã·ã§ã³ãé©åã«å¦çå¾ãå®è¡ãéå§ããã
|
---|
| 126 |
|
---|
| 127 | ããªã FPGA ã«ä½ãè¾¼ãè«çåè·¯ï¼ãã¼ãã¦ã§ã¢ãã©ãããã©ã¼ã ï¼ã®ä½æãFPGA
|
---|
| 128 | ãã³ã³ãã£ã°ã¬ã¼ã·ã§ã³ç¨ãã¡ã¤ã«ã®çæã«é¢ãã詳細ã«ã¤ãã¦ã¯ä»¥ä¸ã®è³æãªã©
|
---|
| 129 | ããåç
|
---|
| 130 | §ããããã
|
---|
| 131 | ãã»LatticeMico32 Software Developer User Guide
|
---|
| 132 | ãã»LatticeMico32 Development Kit User's Guide for LatticeECP2
|
---|
| 133 | ãã»ispLEVER ããã¥ã¢ã«ï¼æ¥æ¬èªï¼
|
---|
| 134 |
|
---|
| 135 | ãåè³æã¯ä»¥ä¸ URL ããå
|
---|
| 136 | ¥æå¯è½
|
---|
| 137 | ãã»http://www.latticesemi.com/dynamic/index.cfm?fuseaction=view_documents&document_type=35&sloc=01-01-08-11-48-02
|
---|
| 138 | ãã»http://www.latticesemi.co.jp/docs/index.cfm
|
---|
| 139 |
|
---|
| 140 |
|
---|
| 141 | 1.4 ã·ã¹ãã ã³ã³ãã£ã°ã¬ã¼ã·ã§ã³
|
---|
| 142 | ããJSP ã«ã¼ãã«ãæ°è¦éçºã·ã¹ãã ã§å®è¡ããããã«ã¯ãé©åãªã¿ã¼ã²ããä¾å
|
---|
| 143 | ããã¡ã¤ã«ã®ä¸é¨ããã®ã·ã¹ãã ç¹æã®å
|
---|
| 144 | 容ã«æ¸ãæããã確èªã»ç·¨éãã¹ããã©
|
---|
| 145 | ãã¡ã¼ã¿ã¯ä»¥ä¸ã®éãã§ããã
|
---|
| 146 |
|
---|
| 147 | ãlm32/Makefile.config
|
---|
| 148 | COPTS : ã³ã³ãã¤ã«ãªãã·ã§ã³
|
---|
| 149 | LDFLAGS : ãªã³ã«ãªãã·ã§ã³
|
---|
| 150 |
|
---|
| 151 | ãlm32/sys_defs.h
|
---|
| 152 | TIC_NUME : ã¿ã¤ã ãã£ãã¯å¨æã®åå
|
---|
| 153 | TIC_DENO : ã¿ã¤ã ãã£ãã¯å¨æã®åæ¯
|
---|
| 154 | TIMER_CLOCK : ã¿ã¤ãã¼ã¯ããã¯å¤ãMICO32_CPU_CLOCK_HZ ã«ä¾å
|
---|
| 155 |
|
---|
| 156 | ãlm32/ECP2/lm32.h
|
---|
| 157 | MICO32_CPU_CLOCK_HZ : CPU ã¯ããã¯å¨æ³¢æ° [Hz]ãããã©ã«ã㯠25MHz
|
---|
| 158 | DEFAULT_UART_BOARDRATE ï¼UART ã®ããã©ã«ãã»ãã¼ã¬ã¼ã(Baud Rate) [bps]
|
---|
| 159 | TIMER_BASE_REG : TIMER ã®ãã¼ã¹ã¢ãã¬ã¹
|
---|
| 160 | UART0_BASE_REG : UART 0 ã®ãã¼ã¹ã¢ãã¬ã¹
|
---|
| 161 | UART1_BASE_REG : UART 1 ã®ãã¼ã¹ã¢ãã¬ã¹
|
---|
| 162 | INHNO_TIMER : TIMER ã®å²ã込㿠ID
|
---|
| 163 | INHNO_SIO1 : UART 0 ã®å²ã込㿠ID
|
---|
| 164 | INHNO_SIO2 : UART 1 ã®å²ã込㿠IDï¼UART 2 系統使ç¨ã®å ´åï¼
|
---|
| 165 |
|
---|
| 166 | ãlm32/ECP2/lm32elf.ldï¼ãªã³ã«ã¼ã¹ã¯ãªããï¼
|
---|
| 167 | _fstack : åæã¹ã¿ãã¯ã¢ãã¬ã¹ï¼é常å¤é¨ SRAM ã® ORIGIN 㨠LENGTHï¼
|
---|
| 168 |
|
---|
| 169 |
|
---|
| 170 | ã注1 ï¼ã³ã³ãã¤ã«ãªãã·ã§ã³ï¼COPTSï¼ã«é¢ãã¦
|
---|
| 171 | ããMico32 㯠CPU ã³ã¢ã®ãªãã·ã§ã³ã¨ãã¦å½ä»¤å®è¡ã¢ã·ã¹ãç¨ãã¸ãã¯ã®ä½¿ç¨
|
---|
| 172 | ããå¯å¦ã MSB ã«ã¦è¨å®ã§ãã (RTL 㯠MSB ãçæï¼ããã®è¨å®ã«åããã¦ã³ã³
|
---|
| 173 | ãããã¤ã«ãªãã·ã§ã³ãä»å ããã
|
---|
| 174 | ããã-mmultiply-enabledããã ï¼ä¹ç®å¨
|
---|
| 175 | ããã-mbarrel-shift-enabledã ï¼ãã¬ã«ã·ãã¿
|
---|
| 176 | ããã-mdivide-enabledããããï¼é¤ç®å¨
|
---|
| 177 | ããã-msign-extend-enabledã ï¼ç¬¦å·æ¡å¼µ
|
---|
| 178 | ã
|
---|
| 179 | ã注2 ï¼ãªã³ã«ã¼ã¹ã¯ãªããï¼lm32elf.ldï¼ã«é¢ãã¦
|
---|
| 180 | ããä¸è¿°ã®ã¹ã¿ãã¯ã«é¢ããå®ç¾©ä»¥å¤ã«ããã¼ããã¼ãããã¼ãã¡ã¢ãªã®æå®ãªã©
|
---|
| 181 | ãããè¡ãããCPU ãã¡ã¢ãªã®æ§æã«èªç±åº¦ãããã®ã§ãæ¬ãªã³ã«ã¼ã¹ã¯ãªããã®
|
---|
| 182 | ããç·¨éã«ã¯æ³¨æãããããåèã¨ãã¦ãlm32/ECP2/ ãµããã©ã«ãã«ã¯ä»¥ä¸ã®
|
---|
| 183 | ãããµã³ãã«ã¹ã¯ãªããä¾ãå«ã¾ãã¦ããããªããæå¹ãªãªã³ã«ã¼ã¹ã¯ãªããå
|
---|
| 184 | ãã㯠lm32elf.ld ã§ããã
|
---|
| 185 | ãlm32elf_ebr.ldãï¼
|
---|
| 186 | ãããFPGA ã³ã³ãã£ã°ã¬ã¼ã·ã§ã³å¾ãæã㯠CPU ãªã»ããå¾ãå
|
---|
| 187 | é¨ã¡ã¢ãªãã
|
---|
| 188 | ããããã¼ããã¹ã¿ãã¯ã¯å¤é¨ ASRAM
|
---|
| 189 | ã lm32elf_flash.ldãï¼
|
---|
| 190 | ãããFPGA ã³ã³ãã£ã°ã¬ã¼ã·ã§ã³å¾ãæã㯠CPU ãªã»ããå¾ãå¤é¨ãã©ãã·ã¥
|
---|
| 191 | ããããããã¼ããã¹ã¿ãã¯ã¯å¤é¨ ASRAM
|
---|
| 192 |
|
---|
| 193 |
|
---|
| 194 | 1.5 ä»ã®ã¿ã¼ã²ããã¸ã®ãã¼ãã£ã³ã°
|
---|
| 195 | ããLatticeMico32 ããã»ããµã¯ä»¥ä¸ã® Lattice 社製å FPGA ããã¤ã¹ã»ãã¡ããªã
|
---|
| 196 | ããµãã¼ããã¦ããã
|
---|
| 197 | ãã»LatticeECP2/ECP2MãLatticeSC/SCMãLatticeEC/ECP
|
---|
| 198 | ããã ããå®è£
|
---|
| 199 | ããè«çå路㮠RTL ã¯ãªã¼ãã³ã½ã¼ã¹ã®æ¹éã§ãããåºæ¬çã«å¯¾è±¡
|
---|
| 200 | ãããã¤ã¹ã¨ãã¦ã®å¶ç´ã¯ãªãã®ã§ãæè¡çã«ã¯ãã以å¤ã®ããã¤ã¹ã¸ã®å®è£
|
---|
| 201 | ãå¯
|
---|
| 202 | ãè½ã§ããã
|
---|
| 203 |
|
---|
| 204 |
|
---|
| 205 | 1.6 GDB ã¹ã¿ã
|
---|
| 206 | ããLatticeMico32 éçºãã¼ã«(MSB, SDK)ã§ã¯ GDB ã¹ã¿ãã¯ãµãã¼ããã¦ããªãã
|
---|
| 207 |
|
---|
| 208 |
|
---|
| 209 | 2. LatticeMico32 ããã»ããµä¾åé¨ã®æ©è½
|
---|
| 210 |
|
---|
| 211 | ããããã§ã¯ãã«ã¼ãã«ããã³ã·ã¹ãã ãµã¼ãã¹ã®æ©è½ã®ä¸ã§ï¼LatticeMico32
|
---|
| 212 | ãä¾åé¨ã«ã¤ãã¦è¿°ã¹ãã
|
---|
| 213 |
|
---|
| 214 | 2.1 ãã¼ã¿å
|
---|
| 215 | ããsigned int åããã³ unsigned int å㯠32 ãããå¹
|
---|
| 216 | ã§ããã
|
---|
| 217 |
|
---|
| 218 | 2.2 å²è¾¼ã¿ç®¡çæ©è½ã¨å²è¾¼ã¿ãã³ãã©
|
---|
| 219 | ããDEF_INH ã§æå®ããå²è¾¼ã¿ãã³ãã©çªå·ã¯ã"lm32.h" å
|
---|
| 220 | ã§æå®ããå²è¾¼ã¿çªå·
|
---|
| 221 | ãã表ãããã®ãã¼ã¿å㯠unsigned intï¼UINTï¼ã¨ãã¦å®ç¾©ããã¦ããã
|
---|
| 222 | ããDEF_INH ã§ç¡å¹ã®å²è¾¼ã¿åªå
|
---|
| 223 | 度ããå®éã®å²è¾¼ã¿åªå
|
---|
| 224 | 度ã¨ç°ãªãå¤ãæå®ãã
|
---|
| 225 | ãå ´åã®åä½ã¯ä¿è¨¼ãããªãã
|
---|
| 226 |
|
---|
| 227 | ããªãã¿ã¹ã¯ä¾å¤ãã³ãã©ã®ç»é²ã¯ã³ã³ãã£ã°ã¬ã¼ã·ã§ã³ã»ãã¡ã¤ã« .cfg å
|
---|
| 228 | ã«
|
---|
| 229 | ã以ä¸ã®å®ç¾©ãå ãããã¨ã«ãã£ã¦è¡ãã
|
---|
| 230 |
|
---|
| 231 | ããDEF_TEX(TASK_ID, { TA_HLNG, tsk_exc_routine });
|
---|
| 232 | ãããTASK_IDãããã: ç»é²ããã¿ã¹ã¯ã® ID
|
---|
| 233 | ãããtsk_exc_routineã: C ãã¡ã¤ã«ã§è¨è¿°ããã¿ã¹ã¯ä¾å¤ãã³ãã©å
|
---|
| 234 |
|
---|
| 235 |
|
---|
| 236 | 2.3 ã¹ã¿ã¼ãã¢ããã¢ã¸ã¥ã¼ã«ã®å¦çå
|
---|
| 237 | 容
|
---|
| 238 | ããã¹ã¿ã¼ãã¢ããã¢ã¸ã¥ã¼ã« "start.S" ã§ã¯ä»¥ä¸ã®åæåå¦çãè¡ãã
|
---|
| 239 |
|
---|
| 240 | ã(i) ãã£ãã·ã¥ã®åæå
|
---|
| 241 | ããå½ä»¤ãã£ãã·ã¥ããã¼ã¿ãã£ãã·ã¥ãå®è£
|
---|
| 242 | ãã¦ããå ´åãåæåãè¡ãã
|
---|
| 243 |
|
---|
| 244 | ã(ii) ã¹ã¿ãã¯ãã¤ã³ã¿ã¨ã°ãã¼ãã«ãã¤ã³ã¿ã¼ã®åæå
|
---|
| 245 | ããã¹ã¿ãã¯ãã¤ã³ã¿ã¨ã°ãã¼ãã«ãã¤ã³ã¿ã¼ãåæå¤ã«è¨å®ããã
|
---|
| 246 |
|
---|
| 247 | ã(iii) ä¾å¤ãã³ãã©ã®ç»é²
|
---|
| 248 | ãããªã»ããããã¹ã¨ã©ã¼ãã·ã¹ãã ã³ã¼ã«ãå²ãè¾¼ã¿ãªã©ã®ä¾å¤ãã³ãã©ã
|
---|
| 249 | ãããããç»é²ããã
|
---|
| 250 |
|
---|
| 251 | ã(iv) bss ã»ã¯ã·ã§ã³ã®åæå
|
---|
| 252 | ããbss ã»ã¯ã·ã§ã³ãã¯ãªã¢ããã
|
---|
| 253 |
|
---|
| 254 | ã(v) ã«ã¼ãã«ã®èµ·å
|
---|
| 255 | ããã«ã¼ãã«ãèµ·åãããkernel_start ãããªã¿ã¼ã³ãããã¨ã¯ãªãã
|
---|
| 256 |
|
---|
| 257 |
|
---|
| 258 | 3. ã½ããã¦ã§ã¢éçºç°å¢ã¨æé ä¾
|
---|
| 259 |
|
---|
| 260 | 3.1 ã«ã¼ãã«æ§ç¯ã®ç°å¢
|
---|
| 261 | ããã¢ããªã±ã¼ã·ã§ã³ããã«ãããåã«ãã«ã¼ãã«ç°å¢ãæºåããå¿
|
---|
| 262 | è¦ãããã以ä¸ã«
|
---|
| 263 | ããã®ãã§ãã¯äºé
|
---|
| 264 | ã»æé ã示ãã
|
---|
| 265 |
|
---|
| 266 | ãA. LatticeMico32 éçºãã¼ã« (Mico32 System Builder; MSB) ãã¤ã³ã¹ãã¼ã«ãã
|
---|
| 267 |
|
---|
| 268 | ãB. TOPPERS/JSP ã½ã¼ã¹ã³ã¼ããå
|
---|
| 269 | ¥æã解åããMico32 MSB ã¤ã³ã¹ãã¼ã«ã»ãã£ã¬ã¯
|
---|
| 270 | ããããªä¸ã«ç½®ã
|
---|
| 271 |
|
---|
| 272 | ãC. LatticeMico32 ã®ã¿ã¼ã²ããä¾åã³ã¼ãï¼lm32ï¼ãJSPããã±ã¼ã¸å
|
---|
| 273 | "jsp\configâ
|
---|
| 274 | ããã¨ãããµããã£ã¬ã¯ããªä¸ã«ãããã¨ã確èªãã
|
---|
| 275 |
|
---|
| 276 | ãD. JSP ããã±ã¼ã¸å
|
---|
| 277 | "user.txt" 7.3ç« ã«è¨è¿°ããã¦ããããã«ãGCC ãªã©ã®ãã¼ã«
|
---|
| 278 | ãããå°å
|
---|
| 279 | ¥ããã³ã³ãã£ã°ã¬ã¼ã¿ããã«ããããå®äºããã¨ããã¡ã¤ã« "cfg.exe" ã¨
|
---|
| 280 | ãã"chk.exe" ããã£ã¬ã¯ããªâjsp/cfg" ä¸ã«çæãããã
|
---|
| 281 | ããããªããMico32 MSBã«çµã¿è¾¼ã¾ãã¦ãã Cygwin ã·ã§ã«(Mico32 SDK) ã¯ãã®ç®ç
|
---|
| 282 | ããã«ã¯ä½¿ç¨ããªãã
|
---|
| 283 |
|
---|
| 284 | ãMSB ã¯ä¸è¨ URL ããç¡åã§ãã¦ã³ãã¼ãå¯è½ï¼ã©ã¤ã»ã³ã¹ã¢ã°ãªã¼ã¡ã³ãã«åæã®
|
---|
| 285 | ããã¿ã³ãã¯ãªãã¯ããå¿
|
---|
| 286 | è¦ãããï¼
|
---|
| 287 | ãã»http://www.latticesemi.com/dynamic/index.cfm?fuseaction=view_documents&document_type=65&sloc=01-01-08-11-48
|
---|
| 288 |
|
---|
| 289 |
|
---|
| 290 | 3.2 ã¢ããªã±ã¼ã·ã§ã³ã®ãã«ãä¾
|
---|
| 291 | ããLatticeECP2 FPGA ãã¿ã¼ã²ããããã¤ã¹ã¨ããã¢ããªã±ã¼ã·ã§ã³åã"hello_world"
|
---|
| 292 | ãã¨ããå ´åã®ä¾ã«ã¤ãã¦ãã«ãæé ã以ä¸ã«ç¤ºãã
|
---|
| 293 |
|
---|
| 294 | A. æ¡å¼µåã®ã¿ãç°ãªãååã®3ã¤ã®ãã¡ã¤ã«ãhello_world.cãhello_world.hãããã³
|
---|
| 295 | ããhello_world.cfg ãç¨æãã
|
---|
| 296 |
|
---|
| 297 | B. "/jsp" ãã£ã¬ã¯ããªä¸ã«ä½æ¥ãã£ã¬ã¯ã㪠lm32_hworldï¼ä¾ï¼ãä½æããããã
|
---|
| 298 | ãããã¡ã¤ã«ãã³ãã¼ãã
|
---|
| 299 |
|
---|
| 300 | C. Mico32 MSB (SDK)ã§ã·ã§ã«ãéã /jsp/lm32_hworld ã«ç§»åããå¾ã以ä¸ãå®è¡
|
---|
| 301 | ããããMakefile ãçæããã
|
---|
| 302 | ãã> ../configure -C lm32 -S ECP2 -A hello_world
|
---|
| 303 |
|
---|
| 304 | D. çæããã Makefile å
|
---|
| 305 | ã®ãªãã¸ã§ã¯ããã¡ã¤ã«æ¡å¼µååï¼71 è¡ç®ï¼ãç·¨éãã
|
---|
| 306 | ãï¼ä»»æï¼
|
---|
| 307 | ããã[å
|
---|
| 308 | ] OBJEXT=exe
|
---|
| 309 | ããã[æ°] OBJEXT=elf
|
---|
| 310 |
|
---|
| 311 | E. 次ã®ã³ãã³ããå®è¡ãã«ã¼ãã«ãæ§ç¯ãã
|
---|
| 312 | ãã> make depend
|
---|
| 313 |
|
---|
| 314 | F. 次ã®ã³ãã³ããå®è¡ãããç®çã¨ããã婦ãããã¨ãã¡ã¤ã« jsp.elf (å㯠jsp.exe)
|
---|
| 315 | ããçæããã
|
---|
| 316 | ãã> make
|
---|
| 317 | ãã> make jsp.bin
|
---|
| 318 | ãï¼> make; make jsp.bin ã¨ãã¦ãåãï¼
|
---|
| 319 |
|
---|
| 320 | (G. ã½ã¼ã¹ãã¡ã¤ã«ã®å¤æ´ãçããå ´å㯠E, F ãç¹°ãè¿ã)
|
---|
| 321 |
|
---|
| 322 |
|
---|
| 323 | 3.3 ãããã°æ¹æ³
|
---|
| 324 | ãã以ä¸ã«ã¢ããªã±ã¼ã·ã§ã³ããã°ã©ã ã®ãããã°æ¹æ³ä¾ã示ãã
|
---|
| 325 |
|
---|
| 326 | A. Mico32 SDK ã·ã§ã«ãéãã次ã®ã³ãã³ããå®è¡ãã
|
---|
| 327 | > TCP2JTAGVC2
|
---|
| 328 |
|
---|
| 329 | B. Mico32 SDK ã·ã§ã«ãããä¸ã¤éã /jsp/lm32_hworld ã«ç§»åå¾ã次ã³ãã³ããå®è¡
|
---|
| 330 | ããã㦠GDB ãããã°ç°å¢ã«å
|
---|
| 331 | ¥ã
|
---|
| 332 | > lm32-elf-gdb
|
---|
| 333 |
|
---|
| 334 | C. GDB ã«ã¦æ¬¡ã®ã³ãã³ãã§ã¿ã¼ã²ããã«ãªã³ã¯ãã
|
---|
| 335 | (gdb) target remote localhost:1000
|
---|
| 336 |
|
---|
| 337 | D. 次ã®ã³ãã³ããå®è¡ããã¤ã¡ã¼ã¸ããã¼ããã
|
---|
| 338 | (gdb) load jsp.elf
|
---|
| 339 | ãã
|
---|
| 340 | ãï¼3.2 F ã«ã¦çæãããªãã¸ã§ã¯ããã¡ã¤ã«åã jsp.exe ã®å ´å㯠load jsp.exeï¼
|
---|
| 341 |
|
---|
| 342 | E. GDB åã³ãã³ãã使ç¨ãã¦ãããã°ãããå®è¡ããå ´åã¯
|
---|
| 343 | (gdb) cont
|
---|
| 344 |
|
---|
| 345 |
|
---|
| 346 | 4. ãã®ä»
|
---|
| 347 |
|
---|
| 348 | 4.1 ãã£ã¬ã¯ããª/ãã¡ã¤ã«æ§æ
|
---|
| 349 | ããLatticeMico32 ããã»ããµä¾åé¨ãã¿ã¼ã²ããä¾åé¨ã®åãã¡ã¤ã«ã®æ¦è¦ã¯æ¬¡ã®
|
---|
| 350 | ãéã
|
---|
| 351 |
|
---|
| 352 | lm32/
|
---|
| 353 | Makefile.config Makefile ã® LatticeMico32 ä¾åå®ç¾©
|
---|
| 354 | cpu_rename.def ã«ã¼ãã«ã®å
|
---|
| 355 | é¨èå¥åã®ãªãã¼ã å®ç¾©
|
---|
| 356 | cpu_rename.h ã«ã¼ãã«ã®å
|
---|
| 357 | é¨èå¥åã®ãªãã¼ã
|
---|
| 358 | cpu_unrename.h ã«ã¼ãã«ã®å
|
---|
| 359 | é¨èå¥åã®ãªãã¼ã 解é¤
|
---|
| 360 | cpu_config.h ããã»ããµä¾åé¨ã®æ§æå®ç¾©
|
---|
| 361 | cpu_config.c ããã»ããµä¾åé¨ã®é¢æ°
|
---|
| 362 | cpu_context.h ã³ã³ããã¹ãæä½
|
---|
| 363 | cpu_defs.h ããã»ããµä¾åé¨ã®ã¢ããªã±ã¼ã·ã§ã³ç¨å®ç¾©
|
---|
| 364 | cpu_insn.h ä½ã¬ãã«ã®ããã»ããµæä½ã«ã¼ãã³
|
---|
| 365 | cpu_support.S ããã»ããµä¾åé¨ã®ãµãã«ã¼ãã³
|
---|
| 366 | makeoffset.c offset.h çæãµãã¼ãããã°ã©ã
|
---|
| 367 | tool_defs.h éçºç°å¢ä¾åé¨ã®ã¢ããªã±ã¼ã·ã§ã³ç¨å®ç¾©ï¼GNU éçºç°å¢ç¨)
|
---|
| 368 | tool_config.h éçºç°å¢ä¾åé¨ã®æ§æå®ç¾©ï¼GNU éçºç°å¢ç¨ï¼
|
---|
| 369 | start.S ã¹ã¿ã¼ãã¢ããã¢ã¸ã¥ã¼ã«
|
---|
| 370 |
|
---|
| 371 | lm32/ECP2
|
---|
| 372 | Makefile.config Makefile ã® LatticeECP2 LatticeMico32/DSP ãã¼ãä¾åå®ç¾©
|
---|
| 373 | lm32.h LatticeMico32 ã®å®ç¾©
|
---|
| 374 | lm32.c LatticeMico32 ç¨ã³ã¼ã
|
---|
| 375 | sys_config.h ã·ã¹ãã ä¾åé¨ã®æ§æå®ç¾©
|
---|
| 376 | sys_config.c ã·ã¹ãã ä¾åé¨ã®é¢æ°
|
---|
| 377 | sys_defs.h ã·ã¹ãã ä¾åé¨ã®ã¢ããªã±ã¼ã·ã§ã³ç¨å®ç¾©
|
---|
| 378 | sys_rename.def ã«ã¼ãã«ã®å
|
---|
| 379 | é¨èå¥åã®ãªãã¼ã å®ç¾©
|
---|
| 380 | sys_rename.h ã«ã¼ãã«ã®å
|
---|
| 381 | é¨èå¥åã®ãªãã¼ã
|
---|
| 382 | sys_unrename.h ã«ã¼ãã«ã®å
|
---|
| 383 | é¨èå¥åã®ãªãã¼ã 解é¤
|
---|
| 384 | sys_support.S ã·ã¹ãã ä¾åé¨ã®ãµãã«ã¼ãã³
|
---|
| 385 | hw_serial.h SIO ãã©ã¤ã
|
---|
| 386 | hw_serial.cfg SIO ãã©ã¤ãã®ã³ã³ãã£ã®ã¥ã¬ã¼ã·ã§ã³ãã¡ã¤ã«
|
---|
| 387 | hw_timer.h ã¿ã¤ãæä½ã«ã¼ãã³
|
---|
| 388 | lm32elf.ld ãã©ãã·ã¥ãã¼ãã§å¤é¨ SRAM å®è¡ã®ãªã³ã«ã¹ã¯ãªããä¾
|
---|
| 389 |
|
---|
| 390 |
|
---|
| 391 | 4.2 ã·ã¹ãã é¢æ°
|
---|
| 392 | ããµãã¼ããã JSP ã·ã¹ãã é¢æ°ã¯ä»¥ä¸ã®éããC ã©ã¤ãã©ãªã¯å®è£
|
---|
| 393 | ããã¦ããªãã
|
---|
| 394 |
|
---|
| 395 | 4.2.1 ã¿ã¹ã¯ç®¡çé¢æ°
|
---|
| 396 | CRE_TSK, act_tsk, iact_tsk, can_act, ext_tsk, ter_tsk,
|
---|
| 397 | chg_pri, get_pri
|
---|
| 398 |
|
---|
| 399 | 4.2.2 ã¿ã¹ã¯ä¾ååæé¢æ°
|
---|
| 400 | stp_tsk, tslp_tsk, wup_tsk, iwup_tsk, can_wup, rel_wai,
|
---|
| 401 | irel_wai, sus_tsk, rsm_tsk, frsm_tsk, dly_tsk
|
---|
| 402 |
|
---|
| 403 | 4.2.3 ã¿ã¹ã¯ä¾å¤ãã³ããªã³ã°é¢æ°
|
---|
| 404 | DEF_TEX, ras_tex, iras_tex, dis_tex, ena_tex, sns_tex
|
---|
| 405 |
|
---|
| 406 | 4.2.4 åæããã³éä¿¡é¢æ°
|
---|
| 407 | ã»ããã©
|
---|
| 408 | CRE_SEM, sig_sem, isig_sem, wai_sem, pol_sem, twai_sem
|
---|
| 409 |
|
---|
| 410 | ã¤ãã³ããã©ã°
|
---|
| 411 | CRE_FLG, set_flg, iset_flg, clr_flg, wai_flg, pol_flag,
|
---|
| 412 | twai_flag
|
---|
| 413 |
|
---|
| 414 | ãã¼ã¿ãã¥ã¼
|
---|
| 415 | CRE_DTQ, snd_dtq, psnd_dtq, ipsnd_dtq, tsnd_dtq, fsnd_dtq,
|
---|
| 416 | ifsnd_dtq, rcv_dtq, prcv_dtq, trcv_dtq
|
---|
| 417 |
|
---|
| 418 | ã¡ã¤ã«ããã¯ã¹
|
---|
| 419 | CRE_MBX, snd_mbx, rcv_mbx, prcv_mbx, trcv_mbx
|
---|
| 420 |
|
---|
| 421 | 4.2.5 ã¡ã¢ãªãã¼ã«ç®¡çé¢æ°
|
---|
| 422 | åºå®ãµã¤ãºã»ã¡ã¢ãªãã¼ã«
|
---|
| 423 | CRE_MPF, get_mpf, pget_mpf, tget_mpf, rel_mpf
|
---|
| 424 |
|
---|
| 425 | 4.2.6 æé管çé¢æ°
|
---|
| 426 | ã·ã¹ãã ã¿ã¤ã 管ç
|
---|
| 427 | set_tim, get_tim, isig_tim
|
---|
| 428 |
|
---|
| 429 | ãµã¤ã¯ãªãã¯ãã³ãã©ã¼
|
---|
| 430 | CRE_CYC, sta_cyc, stp_cyc
|
---|
| 431 |
|
---|
| 432 | 4.2.7 ã·ã¹ãã ç¶æ
|
---|
| 433 | 管çé¢æ°
|
---|
| 434 | rot_rdq, irot_rdq, get_tid, iget_tid, loc_cpu, iloc_cpu,
|
---|
| 435 | unl_cpu, iunl_cpu, dis_dsp, ena_dsp, sns_ctx, sns_loc,
|
---|
| 436 | sns_dsp, sns_dpn
|
---|
| 437 |
|
---|
| 438 | 4.2.8 å²ãè¾¼ã¿ç®¡çé¢æ°
|
---|
| 439 | DEF_INF, dis_int, ena_int, chg_ixx, get_ixx
|
---|
| 440 |
|
---|
| 441 | 4.2.9 ã·ã¹ãã ã³ã³ãã£ã°ã¬ã¼ã·ã§ã³ç®¡çé¢æ°
|
---|
| 442 | DEF_EXC, ATT_INI
|
---|
| 443 |
|
---|
| 444 |
|
---|
| 445 | 4.3 ãµãã¼ã
|
---|
| 446 | ããã°çãçºè¦ããå ´å㯠toppers-users ã® ML ã«å ±åããã㯠Mico32 ä¾åé¨
|
---|
| 447 | ãæ
|
---|
| 448 | å½è
|
---|
| 449 | ã®ä»¥ä¸ã®ã¡ã¼ã«ã¢ãã¬ã¹ã«é£çµ¡ãã¦é ããã
|
---|
| 450 |
|
---|
| 451 | ããxxxxxx@yyyy.jp
|
---|
| 452 |
|
---|
| 453 | (-- ä»¥ä¸ --)
|
---|