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 | (-- ä»¥ä¸ --)
|
---|