본문 바로가기
[Developer]/Android

Linux4Android 2nd Morning

by 해피빈이 2010. 11. 9.

 

Host 같은 경우 대체적으로 x86머신을 사용하는 편이지만, target의 경우에는 아닌 경우가 많기 때문에(ex:ARM) Cross Compiler(cross toolchain)가 필요하다.

 

Assembler에 대한 읽을 수 있는 지식이 필요하다.

 

Embedded S/W 개발환경 구성을 위해서는 Serial과 Ethernet을 연결하는 것이 일반적이다.

Bootloader를 올릴 때에 JTAG을 이용하여 올린다.

T32를 이용해서 Bootloader를 올려야하지만, openocd를 이용해서 하는것이 무료이기 때문에 이것을 이용해도 충분히 가능하다(왠만한 칩셋은 다 지원한다.)

* openocd - S3CXX 110, 210계열, PX925X, 27X, 30X, 32X계열 등을 지원한다.

 

프로세서중 가장 안정적인 계열은 PowerPC이다. GUI가 필요없는 Network계열에 보통 쓰인다.

 

근래의 Embedded Linux는 NativeCompiler를 사용하는 경우가 많아지는 추세이다.

 

Tool chain이라면 다음을 고려하자.

  1. GCC : .o object까지의 생성
  2. GlibC -> Bionic libc
  3. binutils(Binary Utility) : object가지고 실행하는 것을 만드는 것까지 담당한다.

 

GCC를 사용하면 elf(executable linkable format) 포맷을 쓴다.

   elf Header         
         program H1   
   program H2  
 

 ...

stack, heap, bss, data, text(code)

segment & section(linking)

 
   Section H1  
   Section H2  

 

여기에서 코드라고 말하는 것은 실제 코드의 부분을 이야기하는 것이 아니라 instruction을 의미한다.

 

ld - 상대적 주소를 결정한다. linking시키기 때문이다.

 

Linker script 파일은 코드와 데이터의 메모리 배치를 정의한 파일이다.

대부분 링커에 포함되어 있다.

 

dd 명령어 쓰는 법
# dd if=/dev/zero of=/home/ramdisk bs=lk count=1.24 4096
# mkfs.ext2 -f /home/ramdisk
# mount -o loop /home/ramdisk /mnt
# cd /mnt /home /etc ...

 

dmesg

: linux에서 debug message보는 것이다. Kernel message만 본다.

 

 /etc/services == 서비스 이름, 프로토콜, 소켓 타입 정보가 들어있다.

 

TFTP = trivial file transfer protocol, udp를 사용한다.(packet을 순차적으로 받기 때문에 wait라는 키워드가 사용된다.)

== 커널 이미지나 안드로이드 이미지 다운로드용 프로그램

= 서버와 클라이언트가 필요하다.

 

VirtualBox에서 Network = NAT, Bridged

 

Linux에서 Daemon Process는 Background 방식으로 동작. 유형은 2가지이다.

Standalone 방식과 Xinetd 방식.

Standalone 방식은 독립적으로 동작을 하고 자기 포트를 직접 감시하는 방식을 사용. 자주 사용하고 즉각적인 응답이 필요한 서비스(httpd), /etc/init.d/**

Xinetd 방식은 빈번하지 않은 서비스로 서비스 포트를 직접 감시하지 않고 Internet super daemon이 총괄적으로 감시하는 방식, tftpd, echo, telnet

inetd는 internet daemon으로 옛날 방식으로 xinetd가 확장개념으로 동작, extended internet daemon이다.

/etc/xinetd.d/*

 

"su -"는  super user의 모든 환경을 다 불러오는 것이고

"su"는 shell계정만 불러오는 것이다.

 

service는 /etc/services 밑의 파일을 읽어들여라는 뜻이다.

 

sudo apt-get install xinetd tftpd tftp

sudo vi /etc/xinetd.d/tftp

 

service tftp
{
        protocol = udp
        socket_type     = dgram
        wait    = yes
        user    = nobody
        server  = /usr/sbin/in.tftpd
        server_args = -s /tftpboot
        disable = no
}

 

sudo /etc/init.d/xinetd restart

netstat -au | grep tftp

 

이상! 밥먹으러가자.ㅋ

이 글은 스프링노트에서 작성되었습니다.

반응형

'[Developer] > Android' 카테고리의 다른 글

Linux4Android 3rd Morning  (0) 2010.11.10
Linux4Android 2nd Afternoon  (0) 2010.11.10
Linux4Android 1st Afternoon  (0) 2010.11.09
Linux4Android 1st Morning  (0) 2010.11.08
getSystemService()의 강력함.  (0) 2010.04.07

댓글