7주차-LINUX2(5)

3605 단어 리눅스리눅스

임베디드 구성도

임베디드 리눅스 4요소

임베디드 리눅스의 4 요소
임베디드 리눅스의 모든 프로젝트는 이 4가지의 요소로 구성되어 있고, 배포하면서 시작한다.
임베디드 리눅스 시스템에서 가장 기본적이며, 가장 중요한 요소이다.

  1. 툴체인(toolchain) : 타깃 장치를 위한 만드는 데 필요한 컴파일러와 기타 도구로 구성된다. 나머지는 모두 툴체인에 의존한다.
  2. 부트로더(bootloader) : 보드를 초기화하고 리눅스 커널을 로드하는 프로그램이다.
  3. 커널(kernel) : 시스템의 심장부로, 시스템 자원을 관리하고 하드웨어와의 접점이다.
  4. 루트 파일시스템(root filesystem) : 커널이 초기화를 끝낸 뒤, 실행되는 라이브러리와 프로그램을 담고 있다.

kmalloc

  • 커널에서 주로 작은 사이즈의 연속된 물리 주소 공간을 할당받을 때 kmalloc을 사용
  • kmalloc 함수는 두개의 인자를 갖는다. 첫번째는 요청하는 사이즈를 의미하고 두번째는 플래그를 의미
char *buff;
buff = kmalloc(1024, GFP_KERNEL);

vmalloc

  • 커널에서 주로 큰 사이즈의 연속된 가상 주소 공간을 할당 받아 사용, 물리적으로 연속되지 않는 공간이므로 dma 버퍼로는 사용할 수 없다.
char *buff;
buff = vmalloc(33* PAGE_SIZE);

인터럽트

  • 디바이스는 프로세서보다 훨씬 느린 속도로 수행, 프로세서가 무작정 외부 이벤트를 기다리는 것(폴링)은 x, 프로세서에게 인터럽트로 알려주기

필기

  1. 리눅스 3가지 파일
    uboot.bin (부트로더)
    zImage (커널)
    ramdisk.gz (루트파일시스템)

  2. 일반적으로 분할되는 영역
    커널1G 유저3G (4G 기준)

  3. 크로스 컴파일러는 호스트에서 실행 불가

  4. wait queue 는 이벤트 발생하길 기다림

  5. 기본적인 바이너리들 위치 /bin

  6. 마운트 폴더 /mnt

  7. 특수 기능 디렉토리로 초기 생성시 비어잇는거 /tmp /proc /sys

  8. busybox, bin 폴더에 들어있는 리눅스/유닉스 명령어 바로가기들 모두 묶어서 제공, 루트파일시스템 구성 시 많이 사용

  9. 4 무제한 x

  10. TASK_RUNNING, 프로세스가 실행중 or 언제든지 실행할 준비됌을 나타내는 리눅스 process state

qt 사용법

  1. vmbox에서 qt들어있는 이미지로 가상머신 생성
    qt, linux, ubuntu 64bit
    시스템- 칩셋 ICH9
    디스플레이- VBoxVGA
    저장소- ICH6
    네트워크- 어댑터에 브리지, ASIX..
    공유폴더- vboxxx, 자동마운트

  2. 우분투 시스템 세팅에 네트워크 설정
    시스템세팅 - 네트워크 - 옵션 - IPv4
    Address- 192.168.0.90
    Netmask- 255.255.255.0
    Gateway- 192.168.0.1

  3. 보드 네트워크설정 맞추기
    gedit /etc/exports 들가서 /work/rootfs 확인
    테라텀에서,
    setenv bootargs 'root=/dev/nfs rw nfsroot=192.168.0.90:/work/rootfs ip=192.168.0.3:192.168.0.90:192.168.0.1:255.255.255.0::eth0:off:netmask=255.255.255.0 console=ttySAC1 115200n81'
    saveenv

  4. QT 빌드된 실행파일 root파일로 옮기기
    qt에서 build해서 파일 생성 (외부 파일 복사)
    cd (home 생성으로 설정되있을거임)
    cd build-untitled-001-Desktop_Qt_5_3_GCC_64bit-Debug/
    sudo cp untitled001 /work/rootfs/root/
    sudo 비밀번호 edu

  5. 보드에서 실행
    테라텀에서 ID,PW root
    ./untitled001 실행


다시 교재 실습할 때,
테라텀 설정

타켓 보드에서 설정(u-boot)
setenv bootargs 'root=/dev/nfs rw nfsroot=192.168.0.2:/nfsroot ip=192.168.0.3:192.168.0.2:192.168.0.1:255.255.255.0::eth0:off:netmask=255.255.255.0 console=ttySAC1 115200n81'
saveenv

좋은 웹페이지 즐겨찾기