2012년 7월 29일 일요일

6/2


시간이 갈수록 적을 수가 없어지고 있다.

 알아가면 알아갈수록 두려워진다.

 하지만 난 강한 것 같다. 아니... 날 강하게 만들어주는 사람이 있는 것 같다.

 그리고 마지막 좌절속에는 항상 어떤 분이 계신다.

 깡패나 조폭이 종교에 회귀하는 경우가 있는데 충분히 공감이 간다.

 나 역시 어느 정도는 여러 경험을 해 보았다고 믿지만.

60Km로 달리는 1톤 트럭에 부딪히거나

15층 옥상에서 떨어지면 똑같이 죽는 한낱 사람일 뿐이다.

이 미천한 것이 다른 어떤가를 아프게 할 권리같은 것 없다.





한빛미디어에서 멋진 책이 하나 나왔다.
만들면서 배우는 OS 커널의 구조와 원리 - 김범준 저 -
인데... 시스템 프로그래밍 처음 시작할 때 중구난방식으로 옛날 하드웨어 책이나 어셈블리
서적을 볼 필요가 없어졌다. ㅠ.ㅠ 그저께 나왔는데 교수님이 사 주셨다. 아아... 좋아라~
OS없이 프로그램 실행이 된다 ㅠ.ㅠ(텝이 스페이스로 인식되어서 제대로 안 올라가넹 --)

boot.txt ----- 책에 제일 처음 실린 소스.


[org 0]
[bits 16]
 jmp 0x07C0:start ;far jmp 를 한다.
start:
 mov ax, cs  ; cs에는 0x07c0이 들어 있다.
 mov ds, ax  ; ds를 cs와 같게 해준다.
 mov ax, 0xB800  ; 비디오 메모리의 세그먼트를
 mov es, ax  ; es레지스터에 넣는다.
 mov di, 0  ; 제일 윗줄에 처음에 쓸 것이다.
 mov ax, word [msgBack] ; 써야할 데이터의 주소값을 지정한다.
 mov cx, 0x7FF  ; 화면 전체에 쓰기 위해서는 0x7FF(10진수 2047)개의 
    ; WORD가 필요하다
paint:
 mov word [es:di], ax ; 비디오 메모리에 쓴다.
 add di, 2  ; 한 WORD를 썼으므로 2를 더한다.
 dec cx   ; 한 WORD를 썻으므로 cx값을 하나 줄인다.
 jnz paint  ; cx가 0이 아니면 paint로 점프하여 나머지를 더 쓴다.
 mov edi, 0  ; 제일 윗줄의 처음에 쓸 것이다.
 mov byte [es:edi], 'A' ; 비디오 메모리에 쓴다.
 inc edi   ; 한 개의 BYTE를 썼으므로 1을 더한다.
 mov byte [es:edi], 0x06 ; 배경생을 쓴다.
 inc edi   ; 한 개의 BYTE를 썼으므로 1을 더한다.
 mov byte [es:edi], 'B' ; 비디오 메모리에 쓴다.
 inc edi   ; 한 개의 BYTE를 썼으므로 1을 더한다.
 mov byte [es:edi], 0x06 ; 배경생을 쓴다.
 inc edi   ; 한 개의 BYTE를 썼으므로 1을 더한다.
 mov byte [es:edi], 'C' ; 비디오 메모리에 쓴다.
 inc edi   ; 한 개의 BYTE를 썼으므로 1을 더한다.
 mov byte [es:edi], 0x06 ; 배경생을 쓴다.
 inc edi   ; 한 개의 BYTE를 썼으므로 1을 더한다.
 mov byte [es:edi], '1' ; 비디오 메모리에 쓴다.
 inc edi   ; 한 개의 BYTE를 썼으므로 1을 더한다.
 mov byte [es:edi], 0x06 ; 배경생을 쓴다.
 inc edi   ; 한 개의 BYTE를 썼으므로 1을 더한다.
 mov byte [es:edi], '2' ; 비디오 메모리에 쓴다.
 inc edi   ; 한 개의 BYTE를 썼으므로 1을 더한다.
 mov byte [es:edi], 0x06 ; 배경생을 쓴다.
 inc edi   ; 한 개의 BYTE를 썼으므로 1을 더한다.
 mov byte [es:edi], '3' ; 비디오 메모리에 쓴다.
 inc edi   ; 한 개의 BYTE를 썼으므로 1을 더한다.
 mov byte [es:edi], 0x06 ; 배경생을 쓴다.
 jmp $   ; 이 번지에서 무한루프를 돈다.
msgBack db '.', 0xE7  ; 배경색으로 사용할 데이터
times 510-($-$$) db 0   ; 여기서부터 509번지까지 0으로 채운다.
dw 0xAA55   ; 510번지에 0xAA를, 511번지에 0x55를 넣어둔다.


 





 python 대단하다.
페도라 3에서 python이나 python2를 치면 된다.(버젼은 같더라)
python *.py  하거나
그냥 python에 들어가서
a=2
b=3
a+b
하면 값이 나온다.
햐... 신기신기. 제어문은 C쉘 스크립트랑 흡사했다.
elif 나
for문에 in 이 들어가는 것을 보면...

자바나 C 하시는 분이면 몇시간이면 초보딱지는 바로 떼겠다. windows버젼이나 리눅스버젼이
다 있으니...







.386
.model flat, stdcall
option casemap:none
include \masm32\include\windows.inc
include \masm32\include\kernel32.inc
include \masm32\include\user32.inc
includelib \masm32\lib\user32.lib
includelib \masm32\lib\kernel32.lib
.data
MsgCaption      db "ㅋㅋㅋ Iczelion님꺼",0
MsgBoxText      db "오호~ 작동이 되긴 되는구만.. \n은 안먹네 --;",0

.code
start_da_hae:
 invoke MessageBox, NULL,addr MsgBoxText, addr MsgCaption, MB_OK
 invoke ExitProcess,NULL
end start_da_hae

앞의 코드에 넣고 싶은 것을 넣었다. 윈도우 API를 찾으면 MsgCaption가 나오려나.
여하튼 모르지만 내가 쓴 코드도 아니지만 일단 뿌듯하다.
Run and Learn으로 배우고 있는데 Run and Fix 할 때 컴파일 하려니 너무 짜증난다. 배치 파일을 만들다.

c:\> copy con make.bat
ml /c /coff /Cp %1.asm
link /SUBSYSTEM:WINDOWS /LIBPATH:c:\masm32\lib %1.obj
^Z          <- 컨트롤 하고 Z

이제
c:\> make msgbox 

만 치면 된다.






 실행시켜 봤으니 소스나 한 번 보자. (몰라도)

.386
.model flat, stdcall
option casemap:none
include \masm32\include\windows.inc
include \masm32\include\kernel32.inc
include \masm32\include\user32.inc
includelib \masm32\lib\user32.lib
includelib \masm32\lib\kernel32.lib
.data
MsgCaption      db "Iczelion's tutorial no.2",0
MsgBoxText      db "Win32 Assembly is Great!",0
.code
start:
 invoke MessageBox, NULL,addr MsgBoxText, addr MsgCaption, MB_OK
 invoke ExitProcess,NULL
end start
 우선 80386 명령어를 쓴다고 한다. cpu 제어라고 해 봤자. 레지스터에 값 넣고 명령어 보내주는 것 밖에 없는 것 같다(아직 모르니깐). 여하튼 386 이상에서는 호환이 잘 될꺼다.

 메모리 모델을 flat으로 쓴다고 하는데 뭔지는 모른다. stdcall은 콜링 컨벤션을 stdcall로 쓴다는 것인데 뭔지는 모르지만 윈도우 기반으로 프로그래밍 하려면 지켜야 한다고 한다(앞으로도 많이 볼 듯)

 옵션은 모르겠다(시간나면 찾아보세~) 밑에 인클루드와 인클루드 라이브러리는 C의 #include, java의 import랑 같은 것인듯(보나마나)
.data에는 이름을 너무 잘 지어서 변수 설정인지 속성인지는 모르겠다. 여하튼 비베에서 창 설정하는 부분처럼 속성인 듯.  인터넷 찾아보면 .data에초기화 되는 데이터를 넣는다고 한다.(뭔 말인지)

.code 부분부터 코드다. start: 메인 프로시저(함수 정도?) 는 아닌 것 같다. 프로시저는 맞는데 main()처럼 메인 함수는 아니다. 왜냐? kkkk로 바꾸어도 잘 실행이 되니까.

 asmlove에 있는 invoke 사용법을 보니까 invoke strlen, arg1, arg2을 할 때에
push  arg2
push  arg1
call    strlen
으로 된다고 한다. push는 레지스터 값을 미리 스택(메모리 공간 중 하나)에 집어 넣어 저장해 두고 call은 C의 함수호출, 자바의 메서드나 클레스를 쓰는 것과 같은 명령어 이다.  어셈은 변수로 레지스터를 쓰기 때문에 원래 있던 변수값을 미리 저장해 두어야 하는 것 같다.

 그런데 위의 invoke 사용법을 봐도 argument가 더 많아서 응용이 안된다. 여하튼 MsgBoxText가 변수든 속성이든 MessageBox에 그 값을 집어 넣는 정도로 보면 되겠다.







 어셈블리어 책을 읽고 있는데 컴파일 되는게 없다. __a
워낙 옛날 책인지도 모른다. 재미가 없다. 금방 잊혀지고. 우선 컴파일을 해보자!

www.masm32.com에서 받고나서 깐다.

C:\masm32\icztutes\TUTE02 에 찾아 들어간다. *.asm파일 빼고 지우거나 옮긴다.

ml /c /coff /Cp msgbox.asm
link /SUBSYSTEM:WINDOWS /LIBPATH:c:\masm32\lib msgbox.obj

아... exe가 실행된다.

아무것도 한 건 없지만 일단 뿌듯.

 


 이제 어른이다.

더 이상 만화 영화가 보고 싶지 않고.

다른 사람들이 가진 어떤 것에 대한 집착도... 뭔가 미치도록 해보고 싶은 욕망도...

가슴 한 곳이 아파오는 사랑도...

하지못하고 가지지 못하고 느끼지 못한다.

 이제는 지켜야 한다.

무감각의 상태. 그것은 곧! 강함.

여린 사람들을 지켜줘야 한다.



masm은 상용인줄만 알았다. masm32.com에서 자유롭게 구할 수 있는 줄 모르고...




 윈도우키 + R을 누른다면 msconfig를 치면 유틸리티가 하나 뜬다.

시작프로그램, boot.ini, win.ini, system.ini 편집이 가능하다. 이지클린으로 시작 프로그램 관리를

해 왔었는데 처음 알았다. 윈도우야 워낙 간단해서 안 배워도 될거라 생각했는데 큰 오산.

 앞으로 한 달 정도 윈도우의 기능에 대해서 집중적으로 탐구해 보아야 겠다.


 META-INF에 MANIFEST.MF를 만들고 zip으로 압축한 다음, 확장자를 jar로 바꾸면 걍 실행 파일이 만들어 진다. 근데 우리집 자바 가상 머신이 제대로 작동을 안하는 것이었다. 할수없이 java -jar [파일명]으로 배치파일을 만들어 줬는데... 전에는 -jar 옵션이 아니더라도 잘 실행된 것 같은데 왜 그런지 모르겠다.
 여하튼 UMMA가 한번 클릭에 실행하는 문제는 해결되었다.






 어머니를 위해서 프로그램을 하나 만들고 있다.

얼마 전부터 어머니께 컴퓨터를 가르쳐 드리고 있는데... 더블클릭이 안되는 것이었다.
윈도우 제어판에서 더블클릭 속도를 낮추니 어느정도 클릭을 하셨다. 하지만 좌/우 버튼을
구분하기도 힘드셨고. 웹 페이지의 하이퍼 링크 찾는 것도 힘들어 하셨다.
 난 내가 어릴적부터 컴퓨터를 하고 있고, 내 또래들 역시 자연스럽게 컴퓨터를 접할 수 있었기에
몰랐었다. 인터넷의 바다에서 헤엄칠 수 있었지만 어머니의 세상은 좁다는 것을 알게 되었다.
 물론, 각자 좋아하는 것이 있겠지만 적어도 난 정말 불효 자식이었다. 어머니가 컴퓨터 관련
서적을 사주고 공부를 시켜주고 할 때 난 나혼자 공부하고 만 것이었다.
 어머니를 위해서 프로그램을 하나 짜고 있다. 어머니께 필요한 프로그램들을 많이 집어 넣을 생각
이다. 프로그램을 가르쳐 주는 것보다 어머니께 필요한 것들을 집어 넣는 것이 낫다고 생각해서
이다. 제목은 UMMA V1.0이고... 기능이 조금씩 생길 때마다 보여 드릴 생각이다.
 우선은 동생 싸이와 나의 블로그 하이퍼 링크를 걸어놓았다. 어머니가 하이퍼 링크를 클릭 안하시고(http부분) [정호 싸이 : http://....]  정호싸이란 글자를 클릭하시는 것이었다. 아~ 이런 사소한 것에서도 문제가 생기는 구나... 했다. 하이퍼 링크는 조금씩 추가할 생각이고 오늘은 사진첩을 하나 만들 생각이다. 프리미어로 짜도 되고 그냥 앨범 형식으로 만들어도 되겠다.
 프로그래밍 실력이 안되니 특정 폴더에 프로그램을 넣어놓고 실행시키는 방식도 되고 배우는 즉시 조금씩 짤 생각이다. 그냥 가르쳐 드리니 어머니 기분이 별로 안 좋은 것 같으셔서 많~이 신경을 쓰고 있음을 나에게 다짐하고 보여주는 계기도 된다.



싸이월드, 테터툴즈, 개인 홈페이지, 다음 카페, 거기다가 네이버 블로그 까지.

참... 많이 분산되어 있다. 언젠가 여자 친구랑 싸우고 싸이월드를 지웠었는데 거기에

소중한 사진이 참 많았었다.

 ... 문제는 너무 많다는 것이고 한번에 포기한다는 것.

 사랑도 ... 한사람만... 끝까지 가는 사랑을 하자.



 늦은 밤 당신께 전화를 겁니다.

 전화하고 싶지만 그러지 못하는 당신이 미워서.

 고단한 하루를 보낸 것을 알지만서도...

 걱정이 됩니다. 

 하루종일 전화 한통 하지않는 자식이 여기 있습니다.

 항상 뒤늦게 걱정하는 불효자가 여기 있습니다.





나의 모든 사랑이 떠나가는 날이
 약속했던 그대만은 올줄을 모르고오...
 철~이 없는 욕심에 그 많은 미련에~
 당신이 있는 건 아닌지. 아니겠지요.

 저 여린 가지 사이로 혼자인 날 느낄 때.
 이렇게 아픈... 그대 기억이 날까...

 내 사랑 그대...




 마이클 잭슨을 보면서 이런 생각을 한 적이 있었다.
 "김광석이나 너바나의 커트 코베인처럼 전성기 때 죽었다면 이소룡처럼 전설이 될 수 있었을 텐데... "

 너무도 좋은 기억이 아픔이 되는 경우가 있다. 시간이 흐를수록 좋은 추억들은 사라져 간다. 세상은 만만하지 않음을 안다. 그리고 '만만하지 않다'는 뜻은 아는 것이 전혀 없다는 뜻을 내포하는 것 같다.

 그래도 어떤 하나의 정점에 가까이 다가갈 수 있었다는 사실이 마이클 잭슨을 너무도 부럽다. 지금 사라져 버리기엔 너무도 초라한 자신이라는 생각만이 날 지탱해 주고 있다. 단지 그것 뿐이라는 것이. 사람과 사람의 정 사이에서 갈등하는 내 자신이 너무도 싫다. 좀 더 강해지고 싶은데 좀 더 냉정해지고 싶은데.

 그냥 그렇다.




사람이 산다는 것은 어떤 것인가?

 사람이 만난다는 것은 어떤 것인가?

 나는 이렇게 말하고 싶다. 사람이 산다는 것은 만난다는 것이고 사람이 만난다는 것은 산다는

것이다. GNU 리눅스의 뜻인 (GNU is Not UNIX) 처럼 실제로 G라는 뜻은 정의되지 않으면서

GNU를 정의하는.

 참 재미있는 것 같다.

사람을 만나는 것이 사는 것이라면 ....







 3월 1일이다. 내 일기는 1/23에 머물고 있지만.
3.1절이다. 군대가기 전까지만 하더라고 해도 독립 운동가들의 이야기를 들으면 내 몸안에
들끓는 한국인의 긍지를 느낄 수가 있었다. 하지만 전역을 하고 나니... 어떤 영화에 나오는
말 처럼... ("아무도 알아주는 이 없고, 우리는 자신을 위해서 싸웠던 것이다.") 느끼게 되었다.
알아준다는 것은 무엇일까? 3/1 절을 기념해서 태극기 하나다는 것? 항상 선조들을 생각하면서
생활하는 것? 후자는 참 힘들기에 아마 3/1이 공휴일이 되었겠지.

 잘 모르겠다. 어떤 것에 감사해야하는 최소한의 예의가 어느 정도가 되는지.

 선조가 이 나라를 지켜주시지 않았다면 내 몸도 없었을 것이다. 그러나 내 몸은 또 다른 언어에
지배되어 생각을 하고 행동을 하고 그 언어로 나의 정체성을 찾고 있었겠지. 그것을 나라고 할 수
있는지는 모르겠다. 너무도 다를 것 같기에...
이런저런 생각을 하다보니, 내가 나인 것은 우리 선조들이 이 나라를 지켜주셨기 때문이다.

생각만 하는 것으로 보답은 되지 않겠지만 최소한의 변명은 되는 것 같다.





오늘은 정말 쓰고 싶지 않다.

 이 말을 하고 싶었다.



 '이번이 마지막 방황이야' 하면서도 늘 방황하는 나.

 아... 슬픔이 밀려온다.






  故 이은주씨.

나보다 한살많네.

몇몇 기사를 봤지만 이 말이 제일 맞는 것 같다.

"영화 '주홍글씨'에서의 노출 연기에 대한 얘기가 죽음의 원인이라는 얘기는 억측에 불과하다고 생각해요. 저는 그런 외부적 요인에서 찾기보다는 여린 배우의 타고난 운명이구나 하고 생각합니다."

네이버 뉴스 박재덕 기자의 기사를 보면 박상훈 작가가 한 말이라고 나오는데. 꼭 맞는 것 같다. 누구의 탓도 누구의 질책도 하지 않는 말이다. 그냥 운명이라고...

 나 역시 죽음에 관한 생각을 많이 해 봤고 시도해 본 적도 있지만 왠만한 용기 가지고는 그게 잘 되지 않는다. 그래서 자살은 참 용기있는 사람들이 하는구나 하는 생각을 가졌었다. 그리고 자기 자신을 자해하는 사람들 모임의 심리는 '살기 위해서'이다. 정말 죽고 싶으면... 한방에 죽는 방법은 누구나가 알고 있는데 왜 자해를 하는 것일까? 결론은 삶에 귀결된다. "죽을 용기로 살라"는 말은 정말 들어 맞는다. 죽을 용기는 삶을 뛰어넘는 용기이기 때문이다. 그 용기는 삶을 채우고도 넘친다.

 이렇게 죽는 것도 가능하지 않을까? 세상에 힘든 사람들. 특히  내 몸안에 있는 각막이나 장기등을 받으면 정상인으로 살아갈 수 있는 사람들을 보면 죽을 바엔 차라리 전부 주는 것이 현명하다고 생각한다. 하지만 그것도 쉽지 않다. 사람을 죽이는 수술을 과연 누가 하겠는가? 그리고 하나씩 떼주고 죽기도 쉽지 않을 것 같다. 수술과 회복 기간동안 자신보다 힘들게 살아가는 사람들을 보면서 자신이 부끄러워 질 수도 있기 때문이다.   
 이런저런 생각하다보면 산다는 것이 더 용기 있다는 생각이 든다.
 그래서 죽는것도 용기고 사는 것도 용기인 듯하다. 그래서 '여린 배우의 타고난 운명'에 동의한다.

 하지만 그녀를 모르지만 죽은지 몇개월만에 발견되는 혼자사는 할머니의 애환도 모른다.
 이것은 안다. 그 할머니는 어려운 시절을 보내셨고 적어도 배고픔은 아셨다. 나도 배고파 봤다.

 그래도 이렇게 말하련다. 참 가련한 운명...





 1초, 2초는 제 시간에 입으로 말할 수 있지만 1/10, 2/10초는 말할 수 없다. 생각할 수는 있다. 제시간이 아닌 시간에 말할 수도 있다.

 내가 가지고 있는 소중한 것들도 그렇다 한꺼번에 다 가질 수는 없다.

 공기가 없어야 존재를 알고 감기에 걸려봐야 건강의 소중함을 알듯이, 나의 소중한 것들도 뭔지는 정확히 모른다. 너무도 소중해서 일수도 있고 소중함을 몰라서 일 수도 있다. 다만, 그것들을 다 가질 수는 없다.

 이미 결정은 했다. 소중함을 버리기 보다는 잃어버리지 않았다고 현실을 부정하거나 소중함을 계속해서 가지고 있는 또 다른 자아가 생겨났다.

 정신병자가 되지 않기 위해서는 그 자아들을 볼 수 있는 관찰자 자아가 필요하다. 냉철한 컨트롤러가 필요하다. 그리고 그것이 나의 주 자아가 되어야 한다. 컴퓨터가 켜지면 바이오스를 읽듯이, 부트로더를 읽듯이.






디지털 다이어리에서 diary로 바꾸어 버렸다.

나의 정신적, 육체적 피폐가 내가 좋아하고 하고 싶어하는 일을 막고 있다.

꾸준히 지키는 것. 중요하다. 디지털 다이어리보다는 내 자신의 모든 행동들 합리화 할 수 있는

정신적 활동이 필요하다.

 Today에 기록되는 거의 모든 사람들은 자신의 자료를 찾기위해 잠깐 잠깐 들릴 뿐이다.

나의 말과 행동이 타인에게 많은 영향을 끼칠 위치도 아니고 존재도 아니기에(적어도 인터넷

상으로는) 공개적으로 내 정신을 정리해 보려고 한다.

 세상 최고, 최대의 궁색한 변명에 도전해 보려고 한다.






옛집에 있을 때는 드림라인을 썼었다. 3년 약정에 드림라인 자체가 저렴해서 그런지 한달에 2만 5천원 정도 냈었었다. 그 전에도 2년을 썼었는데 약정 기간이 다 되어 명의 변경을 했다. 신규 가입 상품 때문이었다(그 때 받은 CD-ROM은 아직도 잘 쓰고 있다). 사실 상품은 문화 상품권 이었는데 홈페이지 들어가보니 포인트가 있어서 그걸로 샀다.(진짜 웃기다 말도 안해주고...)

 여기서는 메가패스를 깔았다. 오늘 설치를 했다. ADSL인데 빠르다. 다운 4M에 업 500K 나온다(최고속도)드림라인 ADSL은 같은 lite라도 다운 1M에 업 200K 넘은 적이 없었다. 그리고 그것이 당연하다고 생각했었고...

 일전에 이야기 듣기로는 ADSL 이라도 요즈음 뭔가 새로운 것이 있어서 속도가 메가 단위로 올려 준다는 이야기를 얼핏 듣긴 했었는데... 실제로 이정도 나오니 참 놀랍다. 하지만 VDSL이 부럽긴 부럽다. 가격도 똑같지 않은가? 하지만 대단지 아파트만 지원이 되니... 짱난다. 여자친구가 VDSL 인데 업도 3M 정도 나오는 걸 보니 정말 부럽더라.

 그래도 메가패스가 좀 비싸긴 비싸다. 라이트인데 3만 5천원 정도 예상해야 한다. 설치비도 받고...(상품으로 설치비 면제를 택해야만 했다). 외장형 모뎀도 마음에 든다. 외장형 달아 달라고 말을 안하면 내장형 잘 들고 온대서 걱정하고 있었는데 다행이었다.






 C 코딩을 하는데 리눅스에서 emacs가 좋데서 단축키 적어놓고 하나씩 쓰는데... 솔직히 편집기 로서는 좋아도 C 코딩하는데 색깔이 안 들어가는게 너무도 싫었다. 그래서 VI를 쓰는데 색깔 구분도 편하고 빨라지니 편집기 상에서 다 할 수 있어서 편했다.

 하지만... 편집기는 편집기였다.

 이클립스에 CDT를 달아서 쓰는데 gcc는 외부 컴파일러로 등록해서 쓴다.(제대로된 RUN 방법을 모르기 때문에 이렇게 쓴다 에디터 플러스의 망치랑 같은 거지만서두... ). 정말 편하다. 우선  Ctrl+Space로 자동완성 기능이 된다. 이걸로 에디터 선택은 끝난거고. outline은 그다지 유용하지 못하더라도 navigator는 여전히 쓸만하다. 파일 관리가 쉽기 땜시로. {} 실수는 걱정없다. { 시작과 동시에 들여쓰기 해주고 }로 마침과 동시에 내어쓰기를 해 준다.  컴파일 에러시 콘솔로 표시되어서 그런지 문제점은 자바처럼 에디터에 직접 표시되진 않는다. 하지만 가끔 표시될 때가 있다. 빨간줄로 틀린 곳이 나오는데 이것은 좀 의문이다. 외부 에디터를 쓰는데도 문법 체크를 해 주나? CDT PLUG IN에서 해준다면 왜 편집할 때는 안 해주고 컴파일 후에만 해 주는지. 적어도 실시간은 아니더라도 자바같은 경우엔 저장과 동시에 에러체크를 해 주는데...
 그리고 리눅스용 이클립스를 써서 그런지 확실히 모르겠다. 쓰면서 느끼는 것인데 자바 기반이라도 윈도우즈 용보다 불편함을 느낀다. 특히 내비게이터상에서 왼쪽 화살표 누르면 상위 카테고리로 가는데 리눅스 이클립스에서는 안되더라(생각보다 진짜 불편하다). 그리고 가끔 이유없이 에러나면서 나가지는 경우나. 화면 구성이 가끔 이상하게 될 때가 있는데 한번 이상하게 되면 계속 이상하다는 것이다.

 eclipse.org 사이트가 바뀐 것 같다. 둘러봐야징.





마소(마이크로 소프트)를 보니 파이어 폭스 잘 만들었다는 기사가 실렸더라. 빠르긴 빠르다. 틀히 검색 기능은 쓰는 것과 동시에 찾아주고... 속도도 빠르고... 글자 먼저 띄워주니까 혹... 느린 사이트 들어가도 이동하기 편하고.

 문제는... 우리나라 사이트 대부분은 익스플로러로 만들었다는 것이다. html 표준을 잘 지키면 문제 없지만. 보통 만들고 나서 익스플로러에서 잘 돌아가면 그걸로 끝이니... 파이어 폭스로 안 보이는 사이트가 너무도 많다. 보여도 글이 안 써지덩가...

 dioiz의 DTB-196 보드로 임베디드 공부 하고 있는데 4번 예제는 실행이 안되는 줄 알았더니... 키보드를 누르면 1~4번까지 테스크가 실행되더라. 그런데 딜레이로 다른 테스크에 넘겨주는 것이 아니라 세마포어를 이용하는데... 세마포어가 뭔지는 대충 알겠는데... 어케 돌아가는지는 봐도봐도 모르겠다. 그리고 왜 그걸 사용하는지도 사실 모르고 ^^; 스터디 하는 친구들이 왈... 키보드를 이용하기 때문에 시리얼로 넘어오는 키보드 값에 대한 우선순위를 위해서 라고 한다.          ... 기 보다는 그것이 아닐까?

 vi 에디터와 gcc를 이용해서 하는데... gcc 는 -o 옵션밖에 안쓴다. gcc -o (만들어질 파일명) (소스파일) vi 기능 중에 좋은 것을 알았다. 입력하고 있는 도중에 Ctrl+T를 하면 들여 쓰기를 해준다.
ex 입력에서    : r![command]        command에 ls를 넣었다 치면 결과값이 그대로 vi 로 넘어온다


 

'

프리미어를 쓸 때...

 엔터키를 누르면 Workspace Rander를 안해도 변화된 것이 화면에 잘 나타난다. 걍 플레이 버튼은
왼쪽 상단 화면에 X 표시가 나면서 트렌지션이나 기타 효과에 대해서 반영을 하지 못한다.
 타임라인 제일 위에 보면 노란색으로 쫙~ 그여진 부분이 있는데 그 부분은 랜더링이나 export의
범위이다.

 타이틀에 한글 쓰는 법은 폰트를 한글 폰트로 선택하면 된다. $(windows_dir)/fonts 에 폰트를
넣으면 프리미어가 감지를 한다는데 난 안되더라.
 플레쉬를 부르려면 swf2flash나 flash2movie를 써야 하는데 뒤에께 좋더라. 단 기간 제한이 아니라
화면에 DEMO VERSION이라고 크게 뜬다. 별 상관이 없어서 하나를 변환해 쓰는데 등록하지 않으
면 힘들다.

 영화를 부를 때 코덱이 아무리 깔려 있어도 임포트가 안되는 경우에는... PDA용 인코딩 도구를 쓰면 된다. 난 바닥 을 썼는데 인코딩 후에 영화가 잘 불려 지더라. 문제는 불려진 음원이 안 들린다. 화면은 깨끗하게 잘 불려짐.







페도라3 사용기...

시스템 설정의 보안 수준에서... 신뢰하는 장치 eth0에 설정하면 eth0랑 연결되어 있는(즉 자기 랜카드) 모든 서비스는 받는다. 한마디로 방화벽이 사라지는 것과 같은 것이다. ftp, http만 열어두고 신뢰하는 장치도 따로 선택하는 줄 알고 선택하였더니... 포트가 전부 열려 있는 것이었다.
 포트 스캔으로 안 사실 --;

 자꾸 페도라에 깔려있는 내 홈페이지에 접속하면 한글이 깨져서 인코딩을 바꾸어 줘야 한다. 파이어폭스에서는 고정을 시켜버리니 되드만... 익스플로러는 그런 기능도 없고. 서벌서벌... 뭐가 문제 인지 알아보니... httpd.conf에서 검색해서 charset이 ISO어쩌구로 되어있는데 EUC-KR로 바꾸면 http 서비스에서 인코딩 페이지 마다 안 바꾸어 줘도 된다. 이렇게 간단할 줄이야. --;

 minicom이 리눅스에 있다면 윈도우즈에는 하이퍼 터미널이 제 기능을 수행하더라. 전송속도가 안 나올때는 하이퍼 터미널 등록정보에서 에코 어쩌구를 하면 잘 된다. 타이핑 칠 때 에코가 되어 두번 쳐 지는 것이 문제이긴 하지만. DTB-196보드 설명서에 보니 이유는 모르겠다고 한다. 여하튼 에코 안키면 느려 터진 정도가 아니다.






이어서...

커널 포팅시 나타나는 문제점은 거의 다음 중 한가지...

1. 100% 하드웨어 변형을 반영하지 못해서 발생함.
2. 시리얼 포트  setup - 초기 문제점 해결에 도움
3. mmu의 정확한 셋업상태 파악
4. 부트로더를 통한 타겟의 설정 내용이 정확한지 확인
5. 메모리맵 및 I/O맵 위치파악 버스 폭 확보
6. IRQ 셋업상태 확인
7. GPIO핀의 정의 및 입/출력 확인
8. JTAG사용을 통한 코드 추적이 가능.

추천 서적.

Tunning Linux by matt~~~
building Embeded Systems ~~
Linux Device Driver ~~~
셋다 오렐리 책.

도움되는 사이트.
linux.org에 embedded 트리

 줏어들을 강의 내용 정리를 대충 마감하면서... 느낀 건데... 강사 분 강의 참 좋았다.
'






이어서...

 경험담이라시던데...  ARM쪽 커널패치에는 Default kernel command starting의 설정값이 잘 전달되지 않는다고 한다.

커널 메뉴중...
MTD - Memory Technology Device = 시스템을 파일처럼 취급.
Socket Filtering = 해당 ip를 막을수도 있따.
Network Card support = 랜가드...
참고로 CERF CS89xxxx support는 싸고 간단한 Lan Card Chip이라고....

!! 팁팁..

보드 설계시 레퍼런스 보드에서 최대한 변경시키지 말라고 해야 한다고 했는데 변경시키에는 없애고 바꾸지 말고 차라리 하나를 더 추가시키는 방향으로...

make시에는 각 디렉토리에 config.in 파일이 다 있어서 고 놈들을 수집해서 컴파일 한다고 한다.
최종산출물은 말했듯이  .config

make dep (의존석 체크(디렉토리를 체크하고 디렉토리를 빌드한다고...))
make zImage나 make vmlinux.img등은.. 그냥 적는것이 아니라고 하니 알아둘 필요.

맥OS설계자, 애플 창시자, 해커의 시조, MIT교수... 리차드 스톨만에 대해서 깊이 알아둘 필요가 있을 것 같다.





사이트 소개...

메인커널 : www.kernel.org
패치...
powerpc : penguinppc.org
sh : linuxsh.sourceforge.net

커널 설정은...

make config 나
make menuconfig 나
make xconfig 중 암거나 사용.
여기서 설정된 파일은 커널 디렉토리 밑에 .config로 저장이 된다.
백업시에는 save configration 메뉴에서 백업 파일을 만든다.

default kernel command starting어쩌구하고 "IP=192.~~~~"하는 내용은 반드시 들어가야 함.
왜냐?

CPU에 전원이 인가되어(Reset vector JUMP) 가 되면  u-boot(부트로더)로 간다. 거기서 linux kernel을 lunch시키는데 lunch전에 사용자가 information을 추가(argument를 넣는다고...)해야 한다. 그런 information이 없을시 IP=192~~~ 어쭈구에서 아규먼트를 찾는다... 고.. <잘은 모르지만>







이어서...

부트 스트랩로더는 어떻게 포팅을 하는가? 완전 무에서 어떻게 포팅을 하지? 제이텍(?)이란 것을 쓰면 CPU 의 제어권을 받을 수가 있다고 한다. 그래서 교차 컴파일된 부트로더 이미지를 받고 깔면 된다고 한다.


u-Booting시...에는...
1. 부트 플레쉬 메모리 설정 - 버스폭
2. SDRAM 메모리 설정 - 메모리 버스폭
3. 플래쉬 인식.
4. 이더넷 컨트롤러 인식.

순서로 진행이 된다고 한다.

부트로더 커널포팅이 되었으면 파일 시스템을 구축해야 하는 난관... 아... 쉘 프롬프트. 띄우기 힘드넹.




이어서...

U-boot 컴파일 순서.

export CROSS_COMPILE=/opt/eldk/usr/bin/pprc_82xx-    이까지....

툴 체인의 위치를 지정해 준다.

make mrproper  로 청소해 주소.
make BMW-config   컨피그 해주고(BMW는 보드이름)
make    만들어 주면 컴파일 된다.

만들어진 u-boot.bin을 타겟 플레쉬에 포팅하면 되겠다.

압축 풀때는
bz2파일은 tar jxvf로
gz는 tar zxvf
만들때는 x 대신에 c를 쓰고
tar jcvf  xxx.tar.bz2 <- 요렇게 하고 뒤에 디렉토리 이름을 쓰면 디렉토리가 xxxx.tar.bz2로 묶임.

실수 경험담 : 파일 시스템을 만들다가 리눅스 서버를 다시 깔았다고 하는데... 파일 시스템 디렉토리명이 리눅스꺼랑 같다고... <- 요건 경험해 봐야 할만한 이야기.

ARM7 칩이 5000 정도..., 9은 만원정도... 11은 동영상 지원이 된다는데 가격은 잘 모름.

댓글 없음:

댓글 쓰기

국정원의 댓글 공작을 지탄합니다.

UPBIT is a South Korean company, and people died of suicide cause of coin investment.

 UPBIT is a South Korean company, and people died of suicide cause of coin. The company helps the people who control the market price manipu...