logo
한국어 Select Language
FF 포럼
포럼지기에게 한 마디
공지사항
뉴스 EZ보드 통합 메뉴얼
FA-VUS 개발환경 !강추! 타켓보드 부팅-HyperTerminal 타켓보드 부팅-Tutty 타켓보드 부팅-minicom Windows환경-타겟 Linux 구동 Linux환경-타겟 Linux 구동 개발 시스템 구축 유형 페도라 설치 CentOS 설치 크로스 컴파일러 설치 TFTP 환경 구축 NFS 파일 시스템 구축 삼바 서버 구축 부트로더 부트로더 쓰기 커널 이미지 제작 및 설치 램디스크 이미지 제작 및 설치
임베디드 제품 사용기 오늘의 영어 휴게실 Appliance
강좌 & 팁
강좌 & 팁 EZ-보드 그래픽 & 멀티미디어 네트워크 프로그래밍 디바이스 드라이버 ImJa 솔루션 임베디드 FLEX 안드로이드 iOS 개발 FAIDE 하드웨어 C/C++ go언어 GNU C 레퍼런스 메뉴얼 ARM 루아 응용 프로젝트 이클립스 지그비 개발자 노트 권장도서 FPGA
VIVADO DSP HSIO Logic Zynq
함수설명
C 라이브러리 함수 커널 API 그래픽 라이브러리 - gxLib
자료실
자료실 FALINUX SDK ARM PC-V210 S3C6410
G100-S3C6410 S100-S3C6410 C221-S3C6410 N200-S3C6410 EZ-S3C6410
S5PV210
G100-S5PV210 S100-S5PV210 N200-S5PV210 C221-S5PV210
EZ-S3C2440 EZ-PXA270 EZ-X5 EZ-S2410 Auto Package
도와주세요
FAQ 도와주세요

  • 회원가입
  • ID/PW 찾기
 
  1. FAQ

  2. 도와주세요


최근 글

  • [특판][성Y인Y용Y품][...
  • 요즘 잘 나가는,,,
  • 요즘은 vmware 말고 ...
  • [docker] buildx 를 ...
  • buildroot 사용 관련
  • GPIO 제어 방법 문의 [1]
  • 임베디드 리눅스 개발...
  • make wandboard_quad ...
  • LCD 초기화 코드 좀 ... [1]
  • 임베디드 리눅스 커널...

최근 댓글

  • 오래 전에 해결법을 터득해서 ...
  • 비트 코인으로 작업하는 것은 ...
  • 10년차 임베 엔지니어 입니다. ...
  • 임베디드쪽이라면 SOC 쪽 displ...
  • 그렇군요 제가 질문이 잘못됬었...
  • 취준생으로서 포트폴리오를 만...
  • 제가 현재 취업준비생입니다. ...
  • 에프에이리눅스 보드는 아래 링...
  • 전체
  • 일반
  • X5
  • S2410
  • ESP-NS
  • S3C2440
  • EP9312
  • 구매
  • 기타

기타 [re] DIO 예제 응용관련 사용가능 어드레스 문의 드립니다.(ep9312)

2007.07.19 04:24

장형기 조회 수:8683

안녕하세요...

소스상의 어드레스가 0x000001 = A0 , 0x000002 = A1 ,0x000004 = A2 이런식으로 정확히 매핑됩니다.
현재 제공되는 커널에서는 A0~ A23까지 24개의 어드레스가 가능합니다. 만약 A24 와 A25를 사용하고자 한다면 아래와 같이 커널을 수정해 주셔야 합니다.

현재 제공된 커널에서는 CS의 가상주소를 0xfx000000 으로 16MByte씩 임의적으로 잡아 놓았습니다.
커널에서 이 주소를 수정하시면 A24, A25도 사용 가능합니다.  

    static struct map_desc ez_ep9312_io_desc[] __initdata = {
    { EP93XX_AHB_BASE,  io_v2p(EP93XX_AHB_BASE),  SZ_1M,  MT_DEVICE },
    { EP93XX_APB_BASE,  io_v2p(EP93XX_APB_BASE),  SZ_8M,  MT_DEVICE },

    { 0xf1000000, EP9312_CS1_PHYS +0x000000, 0x00100000, MT_DEVICE },  // nCS1  NAND-Flash
    { 0xf2000000, EP9312_CS2_PHYS          , 0x01000000, MT_DEVICE },  // nCS2  16MByte Area
    { 0xf3000000, EP9312_CS3_PHYS          , 0x01000000, MT_DEVICE },  // nCS3  16MByte Area
    { 0xf4000000, EP9312_CS6_PHYS          , 0x01000000, MT_DEVICE },  // nCS4  16MByte Area
    { 0xf5000000, EP9312_CS7_PHYS          , 0x01000000, MT_DEVICE },  // nCS5  16MByte Area
    };

이 설정을 A24 어드레스를 사용가능하게 할려면

    static struct map_desc ez_ep9312_io_desc[] __initdata = {
    { EP93XX_AHB_BASE,  io_v2p(EP93XX_AHB_BASE),  SZ_1M,  MT_DEVICE },
    { EP93XX_APB_BASE,  io_v2p(EP93XX_APB_BASE),  SZ_8M,  MT_DEVICE },

    { 0xf1000000, EP9312_CS1_PHYS +0x000000, 0x00100000, MT_DEVICE },  // nCS1  NAND-Flash
    { 0xf3000000, EP9312_CS2_PHYS          , 0x02000000, MT_DEVICE },  // nCS2  16MByte Area
    { 0xf5000000, EP9312_CS3_PHYS          , 0x02000000, MT_DEVICE },  // nCS3  16MByte Area
    { 0xf7000000, EP9312_CS6_PHYS          , 0x02000000, MT_DEVICE },  // nCS4  16MByte Area
    { 0xf9000000, EP9312_CS7_PHYS          , 0x02000000, MT_DEVICE },  // nCS5  16MByte Area
    };

이렇게 수정하시고 하시면 A24와 조합하셨어 사용하실 수 있습니다.
이 가상 주소는 사용자 임의의로 설정하는 것입니다.  하지만 설정한 가상주소가 커널에서 사용하지 않는 주소를 써야 합니다. 만약 0xf900000를 설정하였는데 다른 디바이스에서 이미 이 주소를 할당하고 있다면
충돌이 발생하겠죠.... 따라서 이럴 경우는 아래 참고와 같이 ioremap 함수를 사용하기를 권장합니다.



---- 참고)
현재의 커널들은 위와 같이 가상 주소를 사용하지 않고 ioremap이라는 함수를 통하여 가상주소를 할당 받 사용합니다. 위와 같이 가상 주소를 직접 사용하게 되면 커널에서 사용하는 주소와 간혹 충돌이 발생할 수도 있기때문입니다.

만약 ioremap 함수를 사용할 경우

    static struct map_desc ez_ep9312_io_desc[] __initdata = {
    { EP93XX_AHB_BASE,  io_v2p(EP93XX_AHB_BASE),  SZ_1M,  MT_DEVICE },
    { EP93XX_APB_BASE,  io_v2p(EP93XX_APB_BASE),  SZ_8M,  MT_DEVICE },
    };

이렇게 커널을 수정하시고 디바이스 드라이버에서 주소 설정시 ioremap 함수를 통하여 가상 주소를 할당 받으시면 됩니다.


그럼 수고하세요.



>제가 설명이 좀 부족했나 보군요..
>DIO 예제의 소스를 보면 CS로 nCS3를 사용합니다. 이 nCS3가  0xf3000000 이고 어드레스A24를
>조합할경우 0xf3000000 + 0x1000000으로  0xf4000000이 되죠. 그런데 이 값은 nCS6 의 값이 됩니다.
>그러므로 A24이상은  사용할수 없게 되더라구요.. 이상의 내용을 가지고 전화상으로 문의 들였더니
>전체 A0 부터 A25 까지 총 26개의 어드레스핀 중에 24개의 어드레스핀만 사용가능하다는 답을
>들었습니다.
>제 질문은 그럼 총 26개의 어드레스핀 중에서 24개의 어드레스핀 을 사용할 수 있다고 하셨는데
>사용할수 있는 어드레스핀이 A0 부터 A25중에 어떤 것인지를 물어보는것 입니다.
>A0 ~ A23 인지 아님 중간에 건너뛰거나 하지는 않는지
>그리고 소스상의 어드레스가 0x000001 = A0 , 0x000002 = A1 ,0x000004 = A2 이런식으로 정확히 매핑이 되는지를 물어보는것입니다. 저도 당연히 A0 ~ A23까지 사용할수 있고 0x000001 = A0 이런식으로 매핑될거라 생각됩니다만 혹시나 해서 질문 드리는 겁니다.
>
>
>>안녕하세요.
>>
>>어드레스는 A0 ~ A25까지 사용가능합니다.
>>
>>>이예제를 응용하여 사용할때 유선상으로 어드레스 핀으로 24핀을 사용할 수 있다는 답은 들었는데
>>>그게 A0 부터 A25까지중에 어떤핀을 사용할수 있는지 질문드립니다.
>>
>>==> 이게 어떤 의미인가요??? 어드레스 핀을 24으로 사용하는데 A0 부터 A25까지중에 어떤핀을 사용할
>>        수 있는지라는 질문이 이해가 가지 않습니다.
>>
>>        어드레스 핀을 상위 비트로 사용하는 이유가 따로 있나요..
>>        이럴 경우 칩셀렉터 신호와 조합할 경우 계산이 복잡해 질 수도 있습니다.
>>        만약 어드레스를 A24을 사용한다면... nCSx + A24 ( 0x1000000) 을 하셔야 합니다.
>>
>>
>>>메뉴얼에 나와있는 DIO예제에서는 A8, A9, A10을 연결하지만 실제로는 A8번만 사용합니다.
>>
>>==> 이렇게 74HC138을 사용한 이유는 칩셀렉터신호(nCSx) 하나와 어드레스 신호를 가지고 몇개의
>>        칩셀렉터 신호를 만들기 위해서 사용한것입니다. 만약 단독을 사용할 경우 바로 nCSx를 연결하셨어
>>        사용하시면 됩니다. 따로 74HC138을 사용하여 디코딩 하지 않으셔도 됩니다.
>>
>>
>>그럼 수고하세요.
>>
>>
>>>안녕하세요.
>>>ez-ep9312 보드를 테스트 중인데요..
>>>메뉴얼에 나와있는 DIO예제에서는 A8, A9, A10을 연결하지만 실제로는 A8번만 사용합니다.
>>>이예제를 응용하여 사용할때 유선상으로 어드레스 핀으로 24핀을 사용할 수 있다는 답은 들었는데
>>>그게 A0 부터 A25까지중에 어떤핀을 사용할수 있는지 질문드립니다.
>>>당연히 A0 부터 A23까지 일것 같기는 한데 혹시나 아닐 수도 있을거 같아서요...
>>>답변 부탁 드립니다.
>>
>
이 게시물을
  • Twitter
  • Facebook
  • Delicious
수정 삭제 목록

댓글 0

목록
번호 제목 글쓴이 날짜 조회 수
공지 포럼의 메뉴가 보이지 않아요! 장길석 2014.02.06 957670
공지 [중요 공지]제품 사용 및 기술 문의는 전화 상담을 받지 않습니다. 장길석 2012.11.09 1408554
공지 답글에 대한 공지 사항. falinux 2006.11.20 2424052
15341 [특판][성Y인Y용Y품][비아][시알][여성흥분제] 전부 1+1 vv8282.top 지금 확인해보세요~! dde33 2026.10.15 2
15340 요즘 잘 나가는,,, dde33 2026.09.12 845
15339 buildroot 사용 관련 로즈마리 2021.02.01 38167
15338 GPIO 제어 방법 문의 [1] 단순최고 2021.01.25 51084
15337 임베디드 리눅스 개발 보드 추천 nam 2019.12.06 48864
15336 make wandboard_quad 실행시 문제 gasi 2019.08.27 47085
15335 LCD 초기화 코드 좀 봐주세요 [1] 김용수 2019.07.12 63137
15334 임베디드 리눅스 커널 소스에 관해 질문드립니다 ! ekthatkxkd 2019.06.28 43729
15333 numpy,scipy 를 arm-linux-XXXX 로 크로스컴파일 하여 올릴수 있나요? 초보자 2019.06.24 49288
15332 I2C - deal with arbitration loss 오류가 궁금합니다. [1] S1eepingBeauty 2018.12.10 56771
15331 구형 EM-PXA270 보드 혹시 보유하시분 연락 주시면 감사드릴께요. file 존 2018.11.24 42753
15330 리눅스 GPIO 관련 센서의 단선 또는 고장유무 판별법이 궁금합니다. [2] S1eepingBeauty 2018.11.12 55127
15329 임베디드 리눅스에서 c 언어 디버깅 궁금합니다. [1] 존 2018.09.14 47073
15328 부팅 시간 문의 [1] nam 2018.06.29 45795
15327 localport? port? 검은고래 2018.06.29 39961
15326 fork()의 thread 멈추는 현상 [4] HwangRoy 2018.05.09 58616
15325 임베디드 리눅스 습득용 보드 판매하시나요? 임베디드초급자 2018.04.27 39719
15324 (도와주세요)네트워크 디바이스 드라이버 수정문제입니다. [1] Chanmini 2018.03.04 43602
15323 Ez x5 구합니다!! khobaik 2018.01.26 38317
15322 실행중 symbol not found 를 발생시키는 u-boot 본적 있으신가요 ? sayyouandme 2017.12.17 57350
첫 페이지 1 2 3 4 5 6 7 8 9 10 끝 페이지
쓰기
태그
부탁드립니다. ^^
  • 글을 작성하시려면 회원으로 가입하시고 로그인 하셔야 합니다.
  • 회원 가입은 주민등록번호가 필요 없으며, 메일 주소만 있으면 간단하게 가입하실 수 있습니다.
  • 본 포럼에 등록된 모든 글의 저작권은 작성하신 분께 있으며, 저작자의 허락 없이 다른 곳에 펌이나 도용하시면 안 됩니다.
  • 또한, 전자우편 수집 프로그램이나 그 밖의 기술적 장치를 이용하여 무단으로 이메일 주소 및 자료 수집되는 것을 거부하며,
  • 이를 위반 시 정보통신망 법에 의해 형사 처벌됨을 유념하시기 바랍니다.
  • FF 포럼
  • 강좌 & 팁
  • 함수설명
  • 자료실
  • 도와주세요