Education2011/09/05 11:25

default unmask : 022
-> default permission : rwxr-xr-x

system-wide default unmask : /etc/profile

override user default unmask : ~/.bash_profile 
저작자 표시 비영리 동일 조건 변경 허락
Posted by mirwing
TAG unmask
Education2009/09/25 10:42
[출처 : AESOP]

Aesop 임베디드 포럼에서 ODROID 공동구매를 진행합니다.


ODROID Specifications
  • Processor
Samsung S5PC100 (CortexA8) 667/833Mhz
  • Operating System
Android TM
  • Memory
ROM: 2GB(TFLASH)
RAM: 512 MB(DDR2)
  • Dimensions
(LxWxT) 150 x 76 x 16 (mm)
  • Weight
165grams with battery
  • Display
3.5-inch TFT-LCD capacitive touch screen
320 x 480 (HVGA) resolution
  • Device Control
4way direction-pad
8keys
Touch-sensitive volume control
  • Keyboard
Virtual touch keyboard
  • Connectivity
Bluetooth® 2.X EDR and A2DP for wireless stereo headsets
Wi-Fi®: IEEE 802.11b/g
  • Input and Output
3.5 mm audio jack
HDMI type-C Connector
TTA-20 (USB, Charging, Line-out/in)
  • Audio
AAC, AAC+, MP3
  • Video
MP4, H.264
  • Battery
Rechargeable Lithium-ion battery
Capacity: 1300 mAh (Replaceable)
  • Storage & Expansion Slot
Standard SD/SDHC card (up to 32GB)
  • AC Adapter
Optional (TTA-20 pin compatible)
  • Special Features
Accelerometer sensor
HDMI output
  • Keys
Home, Menu, Back, Enter,
Zoom, D-pad,
A, B, X, Y
Vol-up/down

AESOP에서 진행 중인 공구에는 추가적으로 디버깅 보드가 제공되며 회로도와 부트로더, 커널 소스, 안드로이드소스가 포함되어 있습니다.

자세한 사항은 상단 링크를 통하여 AESOP 포럼에서 확인하시기 바랍니다.

Android 개발자들에게 좋은 개발환경이 되었으면 합니다.
Posted by mirwing
Education2009/06/08 11:58
운영체제
Resource Manager
Computing Environment

Resource

더보기


운영체제 종류
Firmware
스케쥴링 기능이 부족
RTOS(Real-Time OS)
㎲ 단위의 Real Time
VxWorks, pSOS, LEX, uITRON, EPOCH, Nucleus
멀티 태스킹 기능이 부족
Highlevel OS
file system, TCP/IP, USB, ... 기능들이 이미 구현
㎳ 단위의 Real Time
UNIX, Linux, Windows System

실시간 시스템
정의
정해진 시간 내에 시스템이 결과를 출력하는 시스템
주어진 작엄에 대해 정해진 시간을 넘어서는 안된다는 뜻
Hard real-time system
정해진 시간 내에 작업의 결과가 절대적으로 출력되어야 하는 시스템
시간내에 처리되지 않으면 치명적인 결과를 초래
전투기 비행제어 시스템, 핵발전소의 제어 시스템, 인공위성 제어 시스템
Sofr real-time system
정해진 범위를 넘는 시간 지연이 발생하더라도 그것이 시스템의 에러가 되지 않는 시스템

임베디드 운영체제
시스템의 규모가 커짐에 따른 Multi Tasking 기능 요구
Network, multimedia가 시스템의 기본으로 자리 잡음
실시간이라는 요소를 만족해야 함
지능성이 부가되고 기능이 많아지고 복잡해짐

RTOS
Window CE
Linux
JAVA


Posted by mirwing
Education2009/04/15 10:56
[출처 : Korea Android]
안녕하세요.
전 자칭 Vim 애호가 라서, Vim 프로그래밍 하실때 알아두면 편리한 Vim 팁 몇가지 적어봅니다. (Vim 7.0 기준) 
이미 아시던 분들도 있겠지만, 모르시던 분들을 위해서. 



1) global source navigation 

kscope, eclipse 등을 써봤지만, 역시 전 왠지 Gui 인터페이스는 불편함이 많더군요. command prompt 가 익숙해서인지. 
Vim 에서 전 ctags, cscope(또는 gtags) 혼용해서 씁니다. 
(사실은 cscope 하나만 써도 됩니다. ctags 기능은 모두 cscope 가 지원하기 때문에, 하지만 ctags 만 사용할 수도 있으므로) 
cscope 와 ctags 는 Vim 7.0 에서 기본적으로 script 지원 합니다. 

/home/danniill/src 폴더에 작업하는 소스가 위치해 있다고 가정하면, 
$> cd /home/danniill/src 
$> ctags -R . <= tags (ctags database 파일) 생성 
$> cscope -R -b <= cscope.out (cscope database 파일) 생성 

vim 을 구동시킬때 위에서 만든 tags/cscope.out 파일이 있는 디렉토리에서 시작하시는게 좋습니다. 
이유는 vim 이 시작한 디렉토리에서 부터 tags 파일과 cscope.out 파일을 찾기 때문이죠. 
위 파일들이 있는 디렉토리에서 vim . 하시면, netrw script 로 시작합니다. 

netrw 는 NASA 에서 근무중인 Charles Campbell 이 만든 network read/write 가능한 script 입니다. 
local 에서 directory browsing 등을 하는데도, 이만한 script 가 없다고 봅니다. 
netrw 모드로 디렉토리를 이동해서, 내가 edit 할려는 파일을 찾고, enter 를 치면 해당 파일을 엽니다. 

vim 안에서 default 로 set tags 하시면 tags=./tags,./TAGS,tags,TAGS 이렇게 나올겁니다. 
즉, 현재 디렉토리 아래에 tags 파일을 찾고, 없으면 TAGS 를 찾고, 없으면, 상위 디렉토리로 거슬러 올라가면서, tags 혹은 TAGS 파일을 찾습니다. 
ctags 는 C symbol 의 definition 은 찾아주지만, reference 혹은 callled funtion 등을 찾아 주지는 않습니다. 
해당 변수가 쓰여진 모든 경우를 찾고 싶을땐, cscope 나 gtags 를 쓰셔야 합니다. 
cscope 는 default 로 Vim 이 지원하기 때문에, 간단히 :cs 하시면 지원되는 명령어 들을 보실 수 있읍니다. 
하지만, 그냥 쓸려면 :cs find g <찾을려는 c symbol> 이런 형식으로 매번 치기가 여간 번거로운게 아닙니다. 
cscope help 파일을 vim 내에서 찾아보면 나오는 추천방식이 있읍니다. 
home direcotry 아래에 .vimrc 파일 같은걸 생성하시고, 거기에 아래와 같은 map 파일을 써 놓으면 편합니다. 

nmap <F5> :cs find g <C-R>=expand("<cword>") <CR><CR>
nmap <F6> :cs find c <C-R>=expand("<cword>") <CR><CR>
nmap <F7> :cs find s <C-R>=expand("<cword>") <CR><CR>

첫번째 문장만 보면, F5 키를 뒤의 문자열로 normal mode mapping 해주라는 거구요. 
(nmap 대신에 map 쓰시면, 모든 모드에서 지원) 
뒤의 :cs find g 는 cscope 를 이용해서 해당 c symbol의 정의(definition)을 찾으라는 겁니다. 
<C-R>=expand("<cword>")<CR><CR> 부분은 현재 cursor 가 위치한 문자열로 입력을 대체한다는 겁니다. 

두번째 문장은 첫번째 문장과 cscope find 명령만 다릅니다. 
이건 정의가 아닌 함수의 참조(reference)를 찾아주죠. 현재 커서가 위치한 함수를 calling 하는 함수를 찾아줍니다. 

세번째 문장은 현재 커서가 위치한 c symbol 의 모든 reference 를 보여줍니다. 
이건 함수가 아닌 변수도 해당됩니다. 

실제 사용례를 보면, 
커서가 위치한 변수(함수)의 정의를 보고 싶으면, F5 키를 
커서가 위치한 함수가 호출된 모든 경우를 보고 싶으면, F6 키를 
커서가 위치한 변수(함수)의 모든 사용례를 보고 싶으면, F7 키를 누르면 됩니다. 
꽤 쓸만하죠? 

위에서 F5 키는 ctags 명령인 CTRL-] 와 동일합니다. 



2) local source navigation / editing 

현재 open 된 source 파일 내에서 특정 변수의 정의로 가고 싶을 땐, gdnnnn 쳐보세요. 
문서의 처음으로 갈땐 gg, 마지막은 G (다들 아시겠지만) 

auto completion 기능이 지원됩니다. 
어떤 함수나 변수, 또는 문장의 처음 몇글자만 쳐 넣고 , Ctrl-N(또는 Ctrl-P), Ctrl-X Ctrl-L 를 눌러보세요. 
더 자세한 사용법은 ins-completion 부분을 vim 내에서 help 해보세요. 
:help ins-completion 

visual mode 기능이 지원됩니다. 
전통적으로는 3줄 copy 할려면, 3y 한후에, 커서 이동, p 눌렀어야 됬죠. 
전 요새는 V (line 단위 visual 모드가 됩니다) n 또는 p 눌러서 block 선택, 커서 이동, p 누릅니다. 
내가 copy 할려는 부분이 visual 하게 표시되니깐.. 좀 더 편하더군요.


3) 기타 유용한 vim 명령및 스크립트 

:ls <= 현재 open 된 파일들의 list 를 보여줍니다. 
이동은 :buffer 0 또는 :buffer 1 이런식으로 

:marks <= vim 은 0,1,2,3,4,5,6,7,8,9,`,[,]," 에 대해서 marking 을 해 놓습니다. 
각 marking 은 한 화일내의 특정 위치 일 수도, 서로다른 화일내의 특정 위치일 수도 있읍니다. 
이동은 `(숫자1 좌측에 있는) 누르고 mark 표시 (0,1,2,3,....) `` 두번 누르면 직전 편집위치, `0 누르면 그전 편집위치, `1 누르면 그전.. 이런식으로 

taglist 스크립트 추천합니다. 
Yegappan Lakshmanan 이라는 친구가 만든 source browsing 하는 스크립트 입니다. 
설치후에 :TlistToggle 하면 화면 좌측에 symbol window 를 표시해 줍니다. 
nmap <F2> :TlistToggle <= F2 키 누르면 symbol window 토글 시켜줍니다. 


4) Vim quickfix 기능 

editing => compile => editing 을 반복하는게 프로그래머들의 일상이죠. 
이 순환 싸이클을 줄여보자는게 목적입니다. 

간단히 요점만 설명하면, 모든 컴파일러는 컴파일 과정중에 log message를 console에 출력해 줍니다. 
vim 은 내부 기능으로 이 출력된 log message를 분석해서 error 가 발생한 파일로 점프 할 수 있게 지원합니다. 

:set makeprg <= default make 프로그램을 보여줍니다. 전 makeprg=make 라고 나오는 군요. 
:set efm <= error file format 을 보여줍니다. 전 이게 너무 많더라구요. 각종 컴파일러 포맷을 지원할려고 해서 그런지. 

ubuntu 8.04 + gcc 4.2.3 버전쓰시는 분들은 아래 efm 으로 바꿔서 사용해 보시면 될듯 합니다. 
gcc 표준 에러파일만 인식하도록 바꾼건데, 제 PC 에서는 잘 동작하네요. 
set efm=%f:%l: %m,%Dmake[%*d]: Entering directory `%f',%Xmake[%*d]: Leaving directory `%f' 

=> 간단히 설명하자면, 
=> %f:%l: %m <== %f (파일이름) 뒤에 공백없이 : 기호가 붙고, %l(라인넘버)가 뒤따르며, 또 : 기호가 붙고 한칸 공백후에( ) error 라는 에러메세지가 나오는 포맷이다. 
=> %Dmake[%*d]: Entering directory `%f' <== make[1] Entering directory 를 이해시키위한 포맷 
=> %Xmake[%*d]: Leaving directory `%f' <== 디렉토리 stack 에서 빠져나가는 포맷 (위의 %D.... 포맷과 쌍으로 씌여져야 한다) 

사용방법은 vim 을 구동한 상태에서 
필요한 소스 수정 
:make <= make 실행 에러가 발생할 경우 첫번째 에러난 소스 파일로 vim 이 자동으로 jump 한다. 
:cl <= 전체 에러 리스트를 보고 싶을때 
:cn <= 현재 에러 위치 수정을 마치고, 다음 에러위치로 이동할때 



이상으로 마칩니다. 
잘못된 정보나, 더 좋은 방법등을 아시면, comment 해주시거나, 저에게 메일 주십시요. 
그럼, vim 과 함께 즐거운 코딩되세요.~~
Posted by mirwing
TAG vim
Education2009/02/13 11:34
Windows BMP files begin with a 54-byte header:

offset size description
0 2 signature, must be 4D42 hex
2 4 size of BMP file in bytes (unreliable)
6 2 reserved, must be zero
8 2 reserved, must be zero
10 4 offset to start of image data in bytes
14 4 size of BITMAPINFOHEADER structure, must be 40
18 4 image width in pixels
22 4 image height in pixels
26 2 number of planes in the image, must be 1
28 2 number of bits per pixel (1, 4, 8, or 24)
30 4 compression type (0=none, 1=RLE-8, 2=RLE-4)
34 4 size of image data in bytes (including padding)
38 4 horizontal resolution in pixels per meter (unreliable)
42 4 vertical resolution in pixels per meter (unreliable)
46 4 number of colors in image, or zero
50 4 number of important colors, or zero


typedef struct BMPHADER {
BYTE Identy[2];
BYTE FileSize[4];
BYTE Reserved[4];
BYTE DataOffset[4];
BYTE HeaderSize[4];
BYTE Width[4];
BYTE Height[4];
BYTE Planes[2];
BYTE BitsPerPixel[2];
BYTE Compression[4];
BYTE DataSize[4];
BYTE Horizontal[4];
BYTE Vertical[4];
BYTE Colors[4];
BYTE Important[4];
};

Offset Field Size
0000h Identifier 2 bytes
0002h File Size 1 dword
0006h Reserved 1 dword
000Ah Bitmap Data Offset 1 dword
000Eh Bitmap Header Size 1 dword
0012h Width 1 dword
0016h Height 1 dword
001Ah Planes 1 word
001Ch Bits Per Pixel 1 word
001Eh Compression 1 dword
0022h Bitmap Data Size 1 dword
0026h HResolution 1 dword
002Ah VResolution 1 dword
002Eh Colors 1 dword
0032h Important Colors 1 dword
0036h Palette N * 4 byte
0436h Bitmap Data x bytes
Posted by mirwing
Education2008/09/30 07:57
KDE 시작하기 (KPersonalizer)

kde를 정상적으로 설치했다면 시작하면서 아래와 같은 화면을 만나게 된다.
사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지

기본적인 환경설정이 끝났다. 이제 KDE의 세계로 빠져들어보자~
Posted by mirwing
Education2008/09/30 07:55
출처 : http://jedison.tistory.com/47 (Jedison's Note)

/etc/make.conf
- 패키지를 다운받을 저장소 설정
- 패키지를 컴파일할 때 줄 옵션

/etc/rc.conf
- x server를 구동할 때 사용할 데스크탑환경 지정

/etc/resolv.conf
- 네임서버

/etc/env.d/02useretc
- 시스템이 처음 구동되거나 env-update 수행시 시스템 변수에 추가할 목록 지정

/etc/locales.gen
- 지역설정

/etc/conf.d/net
- 네트워크 카드 설정

/etc/fstab
- 부팅할 때 마운트할 장치 설정

/etc/X11/xorg.conf
- x 서버를 구동할 때 사용할 장치와 드라이버 설정

/usr/src/linux/.config
- 커널 설정

/boot/grub/grub.conf
- Grub 설정
Posted by mirwing
Education2008/09/30 07:54
출처 : http://jedison.tistory.com/47 (Jedison's Note)

1.KDE 관련 패키지 설치
{YourServerName} ~ # emerge -C kde                                :: kde과 관련된 모든 패키지를 삭제
{YourServerName} ~ # emerge kdebase-startkde                 :: 기본적인 KDE관련 패키지를 설치
{YourServerName} ~ # etc-update                                      :: 설정파일 업데이트 (-5)
{YourServerName} ~ # source /etc/profile                          :: 프로파일 업데이트

2008.02.28일현재 emerge kdebase-startkde하면 69개의 패키지가 설치되게 된다.

* 주의사항
emerge kde 하면 컴파일하는데 아주 아주 오랜 시간이 걸리니 안하는 게 정신건강에 좋다.
참고로 필자는 20시간 걸렸다..-_-;;

2.KDE Desktop Manager 설치
{YourServerName} ~ # emerge kdm                                    :: KDE Desktop Manager (그래픽 로그인)
{YourServerName} ~ # vi /etc/conf.d/xdm                           :: Display Manager
환경 설정

아래와 같이 변경한다.
------------------------------------------
DISPLAYMANAGER="kdm"
-----------------------------------------

3.부팅시 환경 설정
{YourServerName} ~ # vi /etc/rc.conf                      :: 시스템 시작시 세팅되는 환경설정
아래와 같이 변경한다.
-----------------------------------------
EDITOR="/usr/bin/vim"                                           :: 필자는 vi를 좋아한다.^^
XESSION="kde-3.5"                                                
-----------------------------------------
{YourServerName} ~ #
rc-update add xdm default

4.KDE Terminal
{YourServerName} ~ # emerge konsole


보다 자세한 사항은 아래의 하우투문서를 참고하라.

The KDE Configuration HOWTO
Posted by mirwing
Education2008/09/30 07:52
출처 : http://jedison.tistory.com/47 (Jedison's Note)

VMware에 젠투시스템을 설치했을 때 마우스가 vmware를 빠져나올때 ctrl+alt를 클릭할 필요가 없게된다.
또한 마우스 휠도 사용할 수 있게 한다.

#emerge x11-drivers/xf86-input-vmmouse
#vi /etc/X11/xorg.conf
-----------------------------------------------------------
변경전
-----------------------------------------------------------
Section "InputDevice"
        Identifier  "Mouse0"
        Driver      "mouse"
        Option      "Protocol" "auto"
        Option     "Device" "/dev/input/mice"
        Option     "ZAxisMapping" "4 5 6 7"
EndSection
-----------------------------------------------------------
변경후
-----------------------------------------------------------
Section "InputDevice"
       Identifier  "Mouse0"
       Driver      "vmmouse"
       Option      "Protocol" "auto"
       Option      "Device" "/dev/input/mouse0"
       Option      "ZAxisMapping" "4 5 6 7"
EndSection
-----------------------------------------------------------
Posted by mirwing
Education2008/09/30 07:51
출처 : http://jedison.tistory.com/47 (Jedison's Note)

잘돌아가던 시스템에서 어느날 갑자기 아래와 같은 메시지가 출력된다면......
사용자 삽입 이미지

분명히 이전에 아래와 같은 메시지가 출력되었을거예요.
사용자 삽입 이미지

문제는 eth0가 eth1로 변경되어서 기존의 네트워크 설정이 적용되지 못하는 것이죠.
eth0가 없는데 eth0에 대해서 설정을 하니 eth0가 없다는 메시지가 나오는 것이고요.
# ifconfig -a
해보세요. 분명히 eth1만 있고 eth0가 없을 거예요.

이럴 경우 당황하지 마시고...
/etc/udev/rules.d/70-persistent-net.rules 파일을 변경하면 됩니다.

아래는 저의 /etc/udev/rules.d/70-persistent-net.rules 파일 내용입니다.

# This file was automatically generated by the /lib/udev/write_net_rules
# program run by the persistent-net-generator.rules rules file.
#
# You can modify it, as long as you keep each rule on a single line.

# PCI device 0x1022:0x2000 (pcnet32)
SUBSYSTEM=="net", DRIVERS=="?*", ATTR{address}=="00:0c:29:fc:50:8a", NAME="eth0"

# PCI device 0x1022:0x2000 (pcnet32)
SUBSYSTEM=="net", DRIVERS=="?*", ATTR{address}=="00:0c:29:a7:01:cf", NAME="eth0"
Posted by mirwing