블로그는 귀차니즘

First Sensation
  • 공지
  • 지역로그
  • 태그
  • 방명록

Kernel Image에 어이없는 삽질을...

OS Develope 2009/12/16 19:48 귀차니스트
  일단 제가 작업하고 있는 환경은 Ubuntu 9.10 x64 입니다. 사실 Kubuntu를 개인적으로 더 좋아하긴 하지만 사정상 사용할 수 밖에 없었습니다. 그래서 좀 덜 익숙한 환경에서 삽질을 하고 있었답니다. 무참히 컴파일과 코딩, 에뮬레이션을 번갈아가며 말이죠..
  이 OS개발이라는 작업이 제가 보기에도 모 횽님께서 하셨던 말씀인 "무한삽질"이라는 단어보다 더 잘표현할 단어는 없는 듯 보입니다. 그래서 오늘도 여러건 해먹었구요. 아우 그냥 Vmware가 픽픽 죽어나자빠지는데 어떻게 표현할 길이 없더군요. 이건 어디서 왜 죽는지도 모르는 상황이라. 그냥 답답하게 이러니 저러니 테스트하면서 개발하고 있었습니다.

KernelTest (Language : cpp)
  1. void piKernelEntry()
  2. {
  3.     CpiTextBuffer piTextBuffer;
  4.    
  5.     piTextBuffer.SetPos(79, 24);
  6.     piTextBuffer.DrawCharacter('x')
  7.     piTextBuffer.DrawCharacter('x')
  8.  
  9.     while(1)    ;
  10. }

  위 코드로 Video Buffer에 해당하는 메모리 구역에 문자를 직접 써넣어 주는 상황을 제작했는데, 입력위치가 오른쪽 하단 에 입력하는 것입니다. 그런데 이게 Scroll 기능을 구현하고 테스트를 하는데 마지막 줄이 스크롤 되면 무조건 Vmware 가 이유없이 리붓이 되네요 ㅜㅜ. 그렇게 해서 한 두어시간 삽질을 진행하고 한 줄씩 디버깅을 하는데!! CpiTextBuffer 라는 클래스 내부에서 'x', 'y', 'z' 에 해당하는 문자를 고정된 위치에 한 번씩 뿌리는데 y 라는 얘가 z로 변하는 게 아닙니까? @0@ 그래서.. 이걸 단서로 찾다가 찾다가 보니. 바로 ImageWriter에서 Binary모드로 파일을 오픈한게 아니더라구요 ㅜㅜ 이런.. 제길.. 이라는 말이 절로 나오더군요.
  사실은 맨 처음에 문자를 출력했는데도 불구하고 이상한 문자만 나오길래 이거 Vmware의 -ㅅ- 버그가 아닌가 내심생각을 해서 qemu 를 비롯해서 여러가지 에뮬레이터를 다운받아서 진행을 해봤고, Hex Editor 를 통한 직접적인 Kernel Image Writing을 하다보니 문제가 없었습니다. 그래서 설마 하고 Hex Editor 를 통해서 Vmware 데이터에도 써주니 제대로 동작을 하는!! @0@.. 결국 문제는 편의를 위해서 만들었던 OS Image Writer였습니다.ㅜㅜ 그래도 해결이 되어서 다행이네요.
  현재 보이는 CpiTextBuffer 라는 클래스는 TextMode VideoBuffer를 제어하기 위해서 대충 구현이 된 클래스입니다. 대략적으로 기능은 아래와 같은 함수들로 구성이 되어있네요.

void Clear();
 void Clear(unsigned char Clr);
 void Scroll();
 void Scroll(short Pos);
 void SetPos(short X, short Y);
 void GetPos(short &X, short &Y);
 void SetPosX(short X);
 void SetPosY(short Y);
 short GetPosX();
 short GetPosY();
 unsigned char GetColor();
 void SetColor(unsigned char Clr);
 unsigned char GetColor(short X, short Y);
 void SetColor(short X, short Y, unsigned char Clr);
 void DrawCharacter(char szChar);
 void DrawCharacter(char szChar, unsigned char Clr);
 void DrawText(const char *szText);
 void DrawText(const char *szText, unsigned char Clr);
 void SetDefaultColor(unsigned char Clr);
 unsigned char GetDefaultColor();

  적당할런지 모르겠습니다. 그래도 기능 구현하고 버그 찾느라 시간이 오만상 빠르게 지나가더군요 ㅜㅜ 시간을 엄청 잡아먹습니다. 에구구 ㅜㅜ 아래는 제어된 클래스에서 출력한 글자와 제 작업 환경입니다.




  일단 앞으로는 하나를 해도 엄청 주의를 해야 겠습니다. 많이 해본 것은 아니지만 이거는 약간 삐끗하면 이유없이 리부팅이 되고 그래서.. 세심한 주의를 기울여야 하는 것 같네요 ㅜㅜ
크리에이티브 커먼즈 라이센스
Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-동일조건변경허락 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.

"OS Develope" 분류의 다른 글

음.. 여러가지 일이 있지만.. (2)2010/01/22
어후.. 드디어 인터럽트 활성화가 되었군요.. (0)2009/12/28
이제 거미줄을 정리할 때가 된 듯 합니다.. (0)2009/12/15
2009/12/16 19:48 2009/12/16 19:48
TAG Kernel, OS, PlugInOS
받은 트랙백이 없고, 댓글이 없습니다.

트랙백 주소 :: http://www.filewiki.net/tc/trackback/116

댓글을 달아 주세요

◀ 이전페이지 1 2 3 4 5 6 7 8 9 ... 118 다음페이지 ▶

블로그 이미지
First Sensation 귀차니스트
rss
  • 관리자
  • 글쓰기

카테고리

  • 전체 (118)
    • Computer (3)
    • Language (14)
    • Reverse Engineering (1)
    • Algorithm (9)
    • TopCoder (3)
    • Library (2)
    • Programming (21)
    • Programming Tip (9)
    • PSP-Programming (10)
    • Program (5)
    • Small Talk (33)
    • Document (4)
    • OS Develope (4)

최근에 올라온 글

  • Script Interpreter - b....
  • VirtualHttpServer - 가.... (2)
  • 음.. 여러가지 일이 있.... (2)
  • 어후.. 드디어 인터럽트....
  • Kernel Image에 어이없....

최근에 달린 댓글

  • 헠 ㅋ 다음에도 들러주세용 ㅋㅋ. 귀차니스트 03/09
  • ㅎㅎ RSS로 첨 온 글이네.ㅋ. 당구리 02/22
  • 음.. 한글화 파일 0.5 버젼은.... 귀차니스트 02/22
  • 관리자만 볼 수 있는 댓글입.... 비밀방문자 01/30
  • 어떤 의미이신지 잘 모르겠네.... 귀차니스트 01/23

달력

«   2010/03   »
일 월 화 수 목 금 토
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      

링크

  • kkamagui 프로그래밍 세상.
  • runner님의 이글루.
  • 당구리의 마굿간.
  • 동우fly.
  • 류광의 번역 이야기.
  • 서광열의 프로그래밍 언....
  • 준호씨의 블로그.
  • 최익필의 이름없는 블로그.
  • 위키는 귀차니즘.

최근에 받은 트랙백

  • 한게임 테트리스 인공지.... 고니's Life 2009
  • ACM 706 (Uva ID) : LCD.... 알고리즘 트레이닝 : Oh... 2009
  • 문제 4 : LCD 디스플레.... 최익필의 이름없는 블로그 2009
  • 궁극의 예외처리. 이름없는 블로그 2008
  • Maximum sum. 티스토리 지점 2008

글 보관함

  • 2010/03 (1)
  • 2010/02 (1)
  • 2010/01 (1)
  • 2009/12 (3)
  • 2009/08 (1)

태그목록

  • LZSS
  • Catch
  • FreeType
  • Dynamic Programming
  • ASM
  • 이미지 프로세싱
  • std::auto_ptr
  • TShell
  • 멀티맵
  • X64
  • Graphi
  • 알고리즘 트레이닝
  • Try
  • XQuared
  • 난수
  • 십자매
  • Warcraft III
  • 키보드
  • Xtream Toolkit Pro
  • Codejock
  • PSP
  • tr1
  • HTML Parser
  • 쉘
  • AppWizard
  • SSD
  • Return
  • 팡야
  • Singleton
  • 버퍼 오버플로우

지역로그 : 태그 : 방명록 : 관리자 : 글쓰기
귀차니스트’s Blog is powered by Textcube 1.7.5 : Risoluto / Designed by DesignNia.net