s3c2440a uart 셋팅 하기

에구구 안녕하세요.

저두 초짜이지만 같은부분에서 고생 분들이 많이 있네요.

이곳에서의 자료를 정리 해보겠습니다.

CPU :s3c2440a

bsp  : smdk2440 (자료실에 고맙게 있습니다. 검색+_+;;)(WINCE 5.0)

처음 으로 시작할때면 먼저 디버그포트 설정을 정하고 나머지를 어떻게 구현하는냐를 정하는것이 중요합니다.

제가 셋팅을 한것은

0번  : 디버그 포트

1번  : uart1 포트

2번  : uart2 입니다.

 

처음 으로 디거그 포트를 셋팅 하기 위새서는 어디루 가야 하냐 하면

\\SMDK2440A\Src\Kernel\Oal\debug.c   이파을을 수정 하시면 됩니다 .

OEMInitDebugSerial() 초기화 함수 이곳에 서 포트 를 셋팅 합니다 .

    pIOPortReg = (S3C2440A_IOPORT_REG*)OALPAtoVA(S3C2440A_BASE_REG_PA_IOPORT, FALSE);

    CLRREG32(&pIOPortReg->GPHCON, (3 << 4)|(3 << 6));
    SETREG32(&pIOPortReg->GPHCON, (2 << 4)|(2 << 6));

    SETREG32(&pIOPortReg->GPHUP, (1 << 2)|(1 << 3));

    g_pUARTReg = (S3C2440A_UART_REG *)OALPAtoVA(S3C2440A_BASE_REG_PA_UART0, FALSE);

    OUTREG32(&g_pUARTReg->UFCON,  BSP_UART0_UFCON);
    OUTREG32(&g_pUARTReg->UMCON,  BSP_UART0_UMCON);
    OUTREG32(&g_pUARTReg->ULCON,  BSP_UART0_ULCON);
    OUTREG32(&g_pUARTReg->UCON,   BSP_UART0_UCON);
    OUTREG32(&g_pUARTReg->UBRDIV, BSP_UART0_UBRDIV);

// 이부분을 자시의 의도되로 맞게 설정 하시면 디버그는 잘돌아 갑니다.

 

다음 uart1,2 설정 해보겠습니다.

위치는 다들 아실듯 합니다 .

SMDK2440A\Src\Drivers\Serial\ ser_smdk2440.cpp(아 힘들다 +_+;;)

수정할 부분 함수명

1. CreateSerialObject();

2.  CPdd2440Serial1 내부에 Init()

3.  CPdd2440Serial2 내부에 Init()

 

1. CreateSerialObject(); {

    switch (DeviceArrayIndex) {   //빨간색 중요 하다  ( 이것을 설정으로 uart 1,2 정해진다 ㅠㅠ 이거 몰라서 공생했다 ㅡㅡ)
      case 0:                              // 각각은 레지스터에서 정해진다 .
        pSerialPDD = new CPdd2440Serial1(lpActivePath,pMdd, pHwObj);
        break;
      case 1:
        pSerialPDD = new CPdd2440Serial2(lpActivePath,pMdd, pHwObj);
        break;
    }
    if (pSerialPDD && !pSerialPDD->Init()) {
        delete pSerialPDD;
        pSerialPDD = NULL;
    } 

}

이함수는 이정도 까 지 ㅡㅡ 나머지는 알아서 처리 하세여 (이함수에서만 입니다.)

 

2. CPdd2440Serial1  Init()

{

       m_pDTRPort = (volatile ULONG *)&(m_pIOPregs->GPDDAT);
       m_pDSRPort = (volatile ULONG *)&(m_pIOPregs->GPDDAT);
       m_dwDTRPortNum = 0;
       m_dwDSRPortNum = 1;

       m_pDTRPort = (volatile ULONG *)&(m_pIOPregs->GPDDAT);
            m_pDSRPort = (volatile ULONG *)&(m_pIOPregs->GPDDAT);
            m_dwDTRPortNum = 0;
            m_dwDSRPortNum = 1;

         m_pIOPregs->GPHCON &= ~(0x3<<0 | 0x3<<2 | 0x3<<4 | 0x3<<6 );//tx,rx,rts,cts   

         m_pIOPregs->GPHCON |=  (0x2<<0 | 0x2<<2 | 0x2<<4 | 0x2<<6 );   //자 셋팅 하고
         m_pIOPregs->GPHCON |= (0x2<<0 | 0x2<<2);                               //마무리 하고
         m_pIOPregs->GPHUP  |= 0xf;                                              

         m_pIOPregs->GPDCON &= ~(0x3<<0 | 0x3<<2);//dtr,dsr 이것도 셋하고
         m_pIOPregs->GPDCON |= (0x1<<0 | 0x0<<2);
         m_pIOPregs->GPDUP  |= 0x3;

}

 이부분을 제어 가능 하다 -0- 485도 되겠네요 ^^ (DSR | dtr)

2. CPdd2440Serial2  Init()

 CPdd2440Serial1  Init() 과 동일 하게 하시면 됩니다 . 하지만  dtr,dsr 은 연력 된분만 설정 하세요

그럼 이로서 준비는 된듯 합니다 ,

다음 으로 레지스터를 조금만 수정 하면 어느덧 마무리 단계가 보입니다.

[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\Serial]
   "DeviceArrayIndex"=dword:0             // 이값에 의해 uart1,2로 나누어 지게 됩니다 .
   "Irq"=dword:17                                 // datasheet 확인 하세여
   "MemBase"=dword:50004000             // uart1 의 메모리
    "InterruptBitsShift"=dword:3 ;            UART 1 Interrupt Sub Register shift bit.

~~~~~~~~~~~~~`
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\Serial2]
   "DeviceArrayIndex"=dword:1
   "Irq"=dword:f
   "MemBase"=dword:50008000
   "InterruptBitsShift"=dword:6 ; UART2 Interrupt Sub Register shift bit.

 

by 망각자 | 2008/10/02 11:51 | Wince | 트랙백 | 덧글(0)

vmware 드라이버로 지포스 fx5700

vmware 5.0 깔구 거기에 solaris9까지 인스톨은 끝났습니다.

 

프롬프트는 잘 뜨구요.

 

그런데 이놈에 글픽카드가 문제네요.

 

이곳 뿐만 아니라 검색해서 나오는 거의 모든 매녈을 보면서 드라이버를 깔아봤습니다 -_-

 

그런데도 안뜨네요.

 

우선 드라이버를 깐 후 kdmconfig 명령 날리면

 

XF86-VMWARE VMware SVGA virtual video cards 뜹니다.

 

그거 선택 하고 next

 

MultiFrequency 56kHz (up to 1280x1024 interlaced) 선택(이하 해상도도 선택해봤지만 같은 증상입니다.)

 

next

 

17inch 선택 (저희집 모니터 17인치 CTR입니다.)

 

next

 

1280 x 1024 -16777216 colors interlaced

1280 x 1024 - 65536 colors interlaced

1280 x 1024 - 256 colors @ 70Hz

위에것들 선택해봤습니다. 마지막 증상은 같습니다.

 

virtual screen resolutions -> 1024 x 768 선택

 

마지막으로 테스트 해보면 다음과 같은 문구들이 화면 여기저기에 깨져서 나옵니다.

 

보이는것만 보여드리겠습니다.

 

(EE) screenInfo.numScreens = 1

(==) Log file : "/var/log/XFree86.0.log", time : M(뒤로 안보임)

on Aug 21 17:20:27 2006

F2_continue     F4_B(EE) PreInit done

ddxSUNWmouse : ioct1 failed on /dev/mouse

VUIDGFORMAT : Invalid argument

Fatal server error:

failed to initialize core devices

XIO : fatal IO error 146 (Connection refused) on X server "unix:0.0"

after 0 requests (0 known processed) with 0 events remaining.

#

 

마지막에 프롬프트는 뜨는데 더이상 작업은 안됩니다.

 

vmware 재부팅 시켜야 하더군요 -ㅇ-;;

 

저것때문에 애로사항이 많이 꽃피네요 아놔 -ㅇ-;;

 

솔라리스쪽에 들어가 보니 fx5700은 지원목록에 없던데

 

그것때문에 그런건가요?

 

vmware 드라이버는 독립된것 아닌가 해서요 .. 아닌가??

 

저에게 도움이 될 한마디만 던져 주셔두 감사하겠습니다.

 

아니면 할 수 있다라는 자신감이라두... ㅠ_ㅠ

by 망각자 | 2007/03/26 17:31 | Linux Tip | 트랙백 | 덧글(1)

듀얼 모니터 사용하기

아냐세요..여러분들.
제가 드뎌 이컴터를 듀얼모니터로 만들었습니다.
그동안 마땅한 비됴카드와 모니터가 없어서 답답하고 좁게 한 모니터로만
사용을 했는데, 지난 토욜에 구해다가 설정을 마치고 잘쓰고 있습니다.
먼저 설정하셔서 쓰고계신분들이 많은거 같은데요.. 이곳에 글이 없는것
같아 이렇게 도움이 될까하고 올립니다.

방법은 간단합니다.
먼저요, XFree86 4.0 이상이어야 하시는거 아시죠?
그담에 xf86cfg를 X를 띄우지 않은 상태에서 실행하시면 잠깐 후에
모니터 한쪽(바이오스에서 first로 해놓은 쪽)에 화면이 뜨면서 설정프로그램이
실행되구요.. 나머지 한 모니터에서는 그 모니터에 연결된 비됴카드의 정보가 나옵니다. 나오지 않으면 하드웨어 설치가 잘못된 것이니 점검하시구요..
정상적으로 뭔가 나오면 현재 상태그래도 아무것도 손댈필요없이 저장을하시구,
약간의 수정을 합니다. 아래와 같은 식으로요..
(저의 설정 내용입니다.)
중요한 부분만 설명하겠습니다.
.....
Section "ServerLayout"
Identifier "XFree86 Configured"
Screen 0 "Screen0" LeftOf "Screen1"
# -> 바로 이줄이 가장 중요합니다. 두번째 모니터라는 뜻이죠..
# LeftOf "Screen1" 이라는 것은 아래의 기본 모니터로 쓰이는
# Screen1의 left에 붙일 모니터라는 것이죠..
Screen 1 "Screen1" 0 0
.......
# 다음에 두개의 모니터를 잡습니다. 이건 xf86cfg가 해준거지요.
Section "Monitor"
Identifier "Monitor0"
VendorName "Sam"
ModelName "1067"
HorizSync 30.0 - 70.0
VertRefresh 50.0 - 160.0
EndSection
Section "Monitor"
Identifier "Monitor1"
VendorName "Sam"
ModelName "1067"
HorizSync 30.0 - 70.0
VertRefresh 50.0 - 160.0
EndSection
#저같은 경우는 두개 모니터가 같아서 두개가 같습니다. 내용이..
#다음은 비됴 카드 입니다.
Section "Device"
Identifier "Card0"
Driver "mga"
Option "MGASDRAM" "true"
VenterName "Matrox"
BoardName "MGA 2164W"
BusID "PCI:2:5:0"
EndSection

Section "Device"
Identifier "Card1"
Driver "tdfx"
VentorName "3Dfx Interactive"
BoardName "VooDoo3"
BusID "PCI:1:0:0"
EndSection
#보시는 바와 같이 비됴카드 하나는 매트록스 G200 - PCI 이구요,
#하나는 Voodoo3 3000 - AGP입니다.
#이것두 xf86cfg에서 잡아서 저장한것입니다.
#다음은 각 모니터의 해상도를 잡아주실 차례입니다.
#이 부분은 수동으로 간단히 쓰셔도 됩니다.

Section "Screen"
Identifier "Screen0"
Device "Card0"
Monitor "Monitor0"
DefaultDepth 16
SubSection "Display"
Depth 16
Modes "1152x864"
EndSubSection
EndSection

Section "Screen"
Identifier "Screen1"
Device "Card1"
Monitor "Monitor1"
DefaultDepth 16
SubSection "Display"
Depth 16
Modes "1152x864"
EndSubSection
EndSection
.....
이상이 듀얼모니터 설정에 필요한 XF86Config-4의 내용입니다.
잘 응용하시면 두개이상도 가능하겠지요..

하지만, 문제가 한가지 있습니다. 지금 현재 X Server는 잘 띄웠는데
Window Manger(즉, Work Frame)이 문제 입니다. X Client죠..
이 듀얼 모니터를 지원하는 것은 KDE와 enlightenment만 되는거 같습니다.
안타깝게도 GNOME는 기본적으로 지원을 하지 않더군요..(제가 설정을 못한것
같기는 합니다만...어쨋든..) 또 되는 것이 있으시면 알려주세요..
감사합니다. 그럼 성공하시고요, 궁금하신것이 있으시면 멜주세요..


페도라 CO6 은 기본 지원 됩니다 ,, 실행 방법은 다시 정리 해서 올리겠습니다,
 

by 망각자 | 2007/03/26 17:30 | Linux Tip | 트랙백 | 덧글(0)

[VIM] 실버의 필수 플러그인 모음

생각해보니, 여기에 올리면 도움이 되지 않을까 싶어서요.

제 블로그에 등록해 놓은 글을 다시 올려봅니다.

VIM 은 쓰면 쓸수록 멋지다니까요.

 

PLUGIN: 위치

            http://mfiles.naver.net/9445a37a6e3f58ebc1a7/data14/2006/3/9/41/VimPack_bySilver-agfe2.zip

 

 

플러그인 모음 파일의 구성은 다음과 같다.

 

1. 설치

 

- 설명 파일 및 다큐멘트

  Readme1st.txt

  그외 rtf 파일은 짬짬이 기록해놓은 VIM 툴 팁이다.

  (rtf 파일은 기본적으로는 워드에 연결되어 있지만, 워드패드에서 열수 있고,

   훈민메모패드에서도 불러들일 수 있다. 훈민메모패드 최고 ! )

 

- vimrc 초기화 파일 :

  gvimrc_silver.com

  $VIM (vim을 설치한 루트 디렉토리)/_vimrc 에서 "gvimrc-silver.vim" 을 부르도록 수정 필요.

 

  

- tools for vim

  다음의 툴들을 %PATH%

  ec55w32  :  Exuberant Ctags 5.5

                   태그 파일을 만들어 주는 프로그램. "taglist.vim" 플러그인에서 사용한다.

                   gvimrc_silver.com 의 키맵 <F7> , <F8>, <F9> 를 사용해서 작업한다.

                  

  cscope   :   태그에서 한발 나아간 관계형 DB작성 프로그램,

                   소스인사이트 처럼 심볼 찾기, 함수 Caller/Callee 를 찾을 수 있다.

                   자세한 사용법은 나중에 다시 설명 예정.

                 참조 Vim Cscope Tutorial (http://wiki.kldp.org/wiki.php/VimCscopeTutorial)

 

 

- Plugin FIles

  $VIMRUNTIME (vim 실행 파일이 위치한 디렉토리) [ = $VIM (vim을 설치한 루트 디렉토리)/vim버전]

  필요한 경우 해당 폴더의 백업을 해도 좋다.

  해당 위치에 파일을 풀어주면 된다.

  즉 Tools\Vim Essential Addon 을 $VIMRUNTIME 에다가 덮어주면 된다.

 

- Plugin help file add

   설치한 플러그인 파일의 도움말에 대한 태그를 생성한다.

  

   :helptags $VIMRUNTIME/doc

  ( 설치후 ":help winmanager" 혹은 ":help tag" 입력후 CTRL-D를 입력해본다.)

 

2. 사용법

   먼저 VIM 에서 멀티 윈도우기능을 사용하기 위해서는

   ":help windows" 를 실행하여 "window.txt" 의 키 이해필요.

 

   멀티 윈도우에서의 기본기능은  하나의 윈도우에서 의 전후좌우 (h, j, k, l)에

   CTRL_W 를 앞에 먼저 입력하면 윈도우 간의 이동이 가능하다.

       예 ::: CTRL-W ( <C-W> ) + h  : 좌 윈도우

   그외 자세하고 세부적인 사항은 역시 써봐야 한다.

   VIM은 쓰면 쓸 수록 그 놀라운 기능과 다양한 지원에 놀라게 된다.

 

  

 

 

- <F6>

   토글 키 ,

   윈도우매니저 기능 On/Off

   파일을 연상태에서 <F6> 을 누르면 왼쪽 상단 에 [File List] 하단에 [Buf List] 가 생성됨.

   [File List] 를 이용해서 특정 폴더로 이동 , 파일을 열수 있음.

                  *** 이때 현재 디렉토리 위치는 변경되지 않음. (":pwd" 로 확인)

                       디렉토리 위치의 이동을 위해서는 명령창에서 cd 실행.

   [Buf List] VIM 버퍼에 있는 파일의 리스트를 보여줌, 선택하여 열기 가능.

 


 

 

- <F7>,<F8>,<F9>

   토글 키

   <F8> : 태그리스트 On/Off

   <F7> : 태그 갱신 (즉 파일내용이 바뀌었을 때 사용)

   <F9> : 태그 리스트의 싱크 (코드와 태그의 상태를 맞춰줌)

 

  


   [Tag List]  가 좌측에 새김 ( 매크로, 변수, 함수 등이 표시됨.)

 

by 망각자 | 2007/03/26 17:28 | Linux Tip | 트랙백 | 덧글(0)

◀ 이전 페이지          다음 페이지 ▶