![](/zbxe/layouts/mr_layouts_1st/images/default/blank.gif)
도와주세요!!
우선 커널버젼은 2.6.21-falinux 입니다.
EZ-X5를 사용하고 있고요.
EZ-X5 User's Manual의 DIO 관련 예제를 수행하다 안 되서 (nCS3 쓰는 예제)
kernel/linux/arch/arm/mach-pxa/falinux_ez-x5.c 파일을 확인해보니 매핑이 되어 있지 않는 것 같아서
다음과 같이 nCS3을 등록해주었습니다. (Line No. 209~214 부분)
=============================================================================
178static struct map_desc ez_x5_io_desc[] __initdata = {
179 { /* nCS0 Boot Flash -- slow RD/WR */
180 .virtual = 0xf0000000,
181 .pfn = __phys_to_pfn(PXA_CS0_PHYS+0x000000),
182 .length = 0x00400000,
183 .type = MT_DEVICE
184 },
185 { /* nCS0 CS8900 -- slow RD/WR */
186 .virtual = 0xf1000000,
187 .pfn = __phys_to_pfn(PXA_CS0_PHYS+0x400000),
188 .length = 0x00100000,
189 .type = MT_DEVICE
190 },
191 { /* nCS1 CS8900 -- slow RD/WR */
192 .virtual = 0xf1100000,
193 .pfn = __phys_to_pfn(PXA_CS0_PHYS+0x800000),
194 .length = 0x00100000,
195 .type = MT_DEVICE
196 },
197 { /* nCS1 REV -- fast RD/WR CPLD.REV2 */
198 .virtual = 0xf1500000,
199 .pfn = __phys_to_pfn(PXA_CS1_PHYS+0x800000),
200 .length = 0x00100000,
201 .type = MT_DEVICE
202 },
203 { /* nCS1 REV -- fast RD/WR CPLD.REV2 */
204 .virtual = 0xf1600000,
205 .pfn = __phys_to_pfn(PXA_CS1_PHYS+0xC00000),
206 .length = 0x00100000,
207 .type = MT_DEVICE
208 },
209 { /* nCS3 */
210 .virtual = 0xf3000000,
211 .pfn = __phys_to_pfn(PXA_CS3_PHYS),
212 .length = 0x01000000,
213 .type = MT_DEVICE
214 }
215 };
==============================================================================
그런데 이렇게 수정하고 나서 컴파일해서 하니깐 쓰던 GPIO16에서 나오던 PWM이 안 나오는 등 문제가 있네요.
질문1) falinux_ez-x5.c를 수정하는 게 맞는 건가요?
질문2) 올바르게 코드를 수정한 건지 궁금합니다.
이것을 추가한다고 해서 문제가 될 것 같지 않습니다. 만약 커널에서 0xf3000000 를 사용하고 있다면 문제가 될 수도 있습니다.
만약 이 부분이 의심이 되면 nCS3의 위와 같이 매핑을 하지 마시고, 디바이스 드라이버에서 ioremap 함수로 가상주소를 얻어서 사용해 보세요...
그럼 좋은 하루 되세요..