1 / 47

2013 년 2 학기 임베디드 프로그래밍

2013 년 2 학기 임베디드 프로그래밍. 권장사양. HOST PC 권장사항 리눅스 배포판이 설치된 PC - 권장 배포판 : Asianux open edition3 ( 라곤 하지만 Ubuntu, Fedora, CentOS 등 다양한 리눅스 프랫폼이 가능 ) PC 사양 CPU : Pentium 2.4 G 이상 / AMD sempron 2400 이상 (x64 인 경우 32bit 용 배포판을 설치하여 사용한다 ) RAM : 256MB 이상 HDD : 1.5GB 이상의 여유공간

tavita
Download Presentation

2013 년 2 학기 임베디드 프로그래밍

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 2013년 2학기 임베디드 프로그래밍

  2. 권장사양 • HOST PC 권장사항 • 리눅스 배포판이 설치된 PC - 권장 배포판: Asianux open edition3 (라곤 하지만 Ubuntu, Fedora, CentOS 등 다양한 리눅스 프랫폼이 가능) • PC 사양 • CPU : Pentium 2.4 G이상 / AMD sempron 2400이상 • (x64인 경우 32bit용 배포판을 설치하여 사용한다) • RAM : 256MB 이상 • HDD : 1.5GB 이상의 여유공간 • VGA : 리눅스 드라이버 호환 모델( ATI, Geforce, Matrox등) • Parallel : 1 port (xdb 사용시, *usb to parallel 사용 불가) • Ethernet : 1 port (2 port 권장) • Serial : 1 port (*usb to serial 사용가능) • CD-rom : 32x 이상 • 즉, 요즘 컴퓨터에서는 다 돌아감

  3. 주의사항 • 리눅 설치 시 주의사항 • 파티션은 일반 ext3로 포맷한 후 사용하며, 보안관련 체크를 하게 될 경우 NFS등의 문제가 발생 할 수 있다. • xinetd, tftp, NFS, minicom등의 패키지는 개발 시 꼭 필요하므로 최초 설치 시 같이 설치하는 것이 좋다. (라곤 하지만 NFS는 없어도 되는 듯) • 주의 : VMWARE를 이용하여 리눅스를 설치할 경우, Host PC자원 분리로 컴파일 시간이 오래 걸리고 가상PC내에서 실제 디바이스 제어가 잘 안될 수 있다. (라곤 하지만 요즘 컴퓨터는 좋아서 괜춘)

  4. Ubuntu에서 root 계정 사용 • 작업 시 root로 로그인 하면 GUI환경에서 작업하기 용이하고 sudo 등의 명령어를 입력할 필요가 없음 • 우분투에서는 보안상 이유로 인해 기본적으로 root계정 로그인이 설정되어있지 않음 • 설치 시 생성하는 계정은 일부 super 유저 권한을 가진 주작업 계정이지 root계정은 아님 • 터미널에서 sudo passwd root 를 입력해 root계정의 암호를 설정한다 • sudo geidt /etc/lightdm/lightdm.conf 를 입력하고 greeter-show-manual-loign=true를 추가해 준다 이제 로그인화면에서 root를 입력하고, 암호를 치면 root 로그인이 가능하다

  5. 필요프로그램 설치 • minicom : apt-get install minicom • gcc : apt-get install gcc • automake : apt-get install automake • ncurses-devel : apt-get install libncurses5-dev • xinetd 설치 : apt-get install xinetd* • 시작 : service xinetd start <-이게 안되면 /etc/init.d/xinetd start <-요거 실행 • tftpd : apt-get install tftp tftpd

  6. tftpd 설정 • /etc/xinetd.d/tftp 파일수정(없을시 생성) gedit /etc/xinetd.d/tftp • tftpboot 디렉토리 생성 : mkdir /tftpboot혹시모르니 chmod 777 /tftpboot disable = no server_args = -s /tftpboot

  7. tftpd 설정 • xinetd 재시작 : service xinetd restart <-이게 안되면 /etc/init.d/xinetd restart <-요거 실행 • tftp 동작 확인 : netstat -au

  8. 보드연결 • 보드 연결 • X-Hyper320-TKU의 메모리, TFT LCD 및 CPU 등의 소형 칩셋은 작은 충격에도 손상될 우려가 있기 때문에 항상 조심히 다루어야 한다. • 전원이 인가 된 후에는 LCD 및 케이블 등에 항상 유의하기 바란다.

  9. 보드연결 • Serial 연결 • 시리얼 케이블을 연결한다. X-Hyper320-TKU에는 그림과 같이 시리얼 케이블로 보드의 DEBUG1이라고 쓰여져 있는 시리얼 커넥터와 호스트 PC의 Com포트에 연결해주면 된다.

  10. 보드연결 • Serial 연결 • 시리얼 케이블을 연결한다. X-Hyper320-TKU에는 그림과 같이 시리얼 케이블로 보드의 DEBUG1이라고 쓰여져 있는 시리얼 커넥터와 호스트 PC의 Com포트에 연결해주면 된다.

  11. 보드연결 • Ethernet 연결 • 이더넷 크로스 케이블(Ethernet cross cable)을 연결한다. X-Hyper320-TKU의 이더넷 포트(Ethernet port) (LAN)와 Host PC의 RJ45(이더넷 카드)를 제공한 크로스(Cross) LAN 케이블로 연결한다(X-Hyper320-TKU를 이더넷 허브에 직접 연결하려면 일반 Direct LAN cable을 연결하면 된다).

  12. 시리얼 세팅 • Serial setting • 리눅스에서 Serial setting 을 하기 위해서 –s 옵션으로 minicom설정창을 띄운다.

  13. 시리얼 셋팅 • Serial setting • Minicom –S명령을 입력하면 다음과 같은 화면을 볼 수 있다.

  14. 시리얼 세팅 • Serial setting • “Serial port setup”에서 Bps 38400 8N1, Hardware Flow Control : NO로 세팅한다

  15. 시리얼 세팅 • Serial setting • * Serial Device에서 /dev/ttyS0는 COM1, /dev/ttyS1은 COM2이다 USB to serial을 사용할 경우 /dev/ttyUSB0로 시작된다. • 설정이 모두 끝났으면 “Save setup as dfl"로 저장하고 종료 한 후 다시 minicom을 실행한다.

  16. Tool-Chain • 크로스 컴파일러란? • 네이티브(native) 컴파일러 • PC라는 동일한 환경에서 프로그램을 작성한다. PC에서 프로그램을 짜고 컴파일하고, 실행 파일을 PC에서 수행 • 크로스(cross) 컴파일러 • 컴파일러가 동작하는 시스템과 컴파일러에 의해서 생성된 실행 파일이 동작

  17. Tool-Chain • Tool-Chain • 개발에 필요한 Compiler, 각종 Debugger, library, Util 등을 모아 놓았다는 뜻이다. • 가장 중요한 것은 gcc 컴파일러이다. • 또한 gcc 사용하기 위해 필요한 binutils도 포함 • binutils는 바이너리를 다루는데 사용된다. • C 라이브러리를 사용하는 것을 제외한 나머지 대부분의 커널을 컴파일

  18. CD 복사 • CD 전체의 내용을 320TKU라는 폴더를 만들어서 복사한다 • 본인은 /root/320TKU/에 복사하였다 • 그런데 제조사에서 CD 체크를 안해서 간혹 재수없게 내용이 잘못된 경우가 있다. 그러므로 ftp://os2.sch.ac.kr에 있는 320TKU.zip 파일을 다운받아 쓰길 추천한다.

  19. Tool-Chain 설치 • 호스트PC 리눅스를 부팅 한 후치 터미널을 열어 “/usr/local/” 폴더에 “arm-linux-4.1.1.tgz”을 복사하고, 압축을 해제 한다.

  20. Tool-Chain • Tool-Chain 설치 • “/usr/local/arm-linux-4.1.1/bin” 폴더 내용을 확인

  21. Tool-Chain • Tool-Chain 설치 및 PATH 설정 “/etc/environment” 내용을 geidt를 이용해 조금 전 폴더의 위치인 “:/usr/local/arm-linux-4.1.1/bin/”을 추가

  22. Tool-Chain 설치 • “/etc/environment”파일에서 PATH를 수정한 후 수정된 내용을 “source /etc/environment”로 적용시켜 준다

  23. Tool-Chain 설치 PATH가 적용된 것을 확인 어떤 경로에서건 해당 명령어를 실행 가능

  24. gcc 리눅스용 c 컴파일러 컴파일 명령어 : gcc -o <아웃풋파일이름> <소스파일이름>

  25. gcc 컴파일된 프로그램의 실행 ‘.’으로 실행 ./실행파일경로/실행프로그램이름

  26. Make 유틸리티 • 목록 파일 – 컴파일 할 것들의 명령어 목록을 모아둠 • 기본적으로 Makefile 혹은 makefile이라는 파일 이름을 사용 • 목표 파일, 부품 파일, 일련의 명령어로 구성 • 복수의 컴파일 명령어가 존재 가능 my_hello: hello.c gcc -o hello hello.c

  27. Make 유틸리티 Makefile 이라는 이름으로 저장 후 make 실행

  28. 부트로더 • 부트스트랩 로더(bootstrap loader)의 준말로 컴퓨터를 사용자가 사용할 수 있도록 디스크나 플래시에 저장된 운영체제를 읽어 주기억장치에 적재해주는 프로그램 • 부트로더의 종류 • LILO(LInux LOader) • GRUB(GRand Unified Boot loader) • NTLDR(NT LoaDeR) • BOOTX • ARMBOOT • BLOB(Boot Loader Object) - 우리가 쓰는것 • BOOTLDR • PPCBOOT • REDBOOT • U-BOOT(Universal BOOTloader)

  29. 부트로더 • 부트스트랩 로더(bootstrap loader)의 준말로 컴퓨터를 사용자가 사용할 수 있도록 디스크나 플래시에 저장된 운영체제를 읽어 주기억장치에 적재해주는 프로그램 • 부트로더의 종류 • LILO(LInux LOader) • GRUB(GRand Unified Boot loader) • NTLDR(NT LoaDeR) • BOOTX • ARMBOOT • BLOB(Boot Loader Object) - 우리가 쓰는것 • BOOTLDR • PPCBOOT • REDBOOT • U-BOOT(Universal BOOTloader)

  30. 부트로더 • 부트로더를 생성하려면 툴체인이 설치되어 있어야 함 • 생성된 부트로더는 jflashmm이나 이미 설치된 부트로더의 부트 명령을 이용해 타겟 시스템에 있는 플래시 메모리에 퓨징 • BBOOT 소스 코드와 make를 이용해 부트로더 이미지를 생성

  31. 부트로더 빌드(boot.bin) CD 다 복사했죠? 320TKU 폴더의 Kernel폴더 안에 있는 linux.tar.gz 압축 해제, 320TKU 폴더의 Bootloader 폴더에 있는 Bootloader.tgz 압축도 해제

  32. 부트로더 빌드(boot.bin) - blob빌드 해제 후 320TKU 폴더의 Bootloader 폴더에 있는 blob 폴더로 이동 후 아래 명령 실행export PATH=$PATH:/usr/local/arm-linux-4.1.1/bin 그다음 ./config.sh 라고 실행하면 좌르륵 컴파일이 진행됨 컴파일 된 결과는 어디 있냐면...

  33. 부트로더 빌드(boot.bin) - blob빌드 320TKU/Bootloader/blob/src/blob 에 blob라는 파일이 컴파일 된 최종 결과물이다.

  34. 부트로더 빌드(boot.bin) - mobm빌드 이번에는 320TKU 폴더의 Bootloader 폴더에 있는 mobm 디렉토리로 이동 후 아래 명령 실행 export PATH=$PATH:/usr/local/arm-linux-4.1.1/bin그다음 make 를 실행 그러면 뭐라 또 주르륵 컴파일이 됨 결과물은 어디있냐

  35. 부트로더 빌드(boot.bin) - mobm빌드 320TKU/Bootloader/mobm 폴더에 mobm이라는 파일이 최종 컴파일 결과물

  36. 부트로더 빌드(boot.bin) 이제는 blob 파일과 mobm파일을 합쳐서 boot.bin 파일을 만들어야 할 차례 • 320TKU/Bootloader/image 에 있는 mk_boot.sh 를 실행하면 됨 • 얘가 무슨 일을 해주는건지 궁금한 사람들은 geidt로 열어보면 대충 ‘두 개 파일을 복사해서 합치는거구나..’ 하고 알 수 있다

  37. 부트로더 퓨징 • 임베디드 보드에서 (minicom 창) tftp boot.bin 을 실행하면 PC로 부터 파일을 다운로드 함 • nand_format 후 nand_reinit • nand_write boot.bin 을 실행하면 퓨징 완료 • reboot를 입력하여 재부팅 • BLOB 모드로 부팅 가능 • 이후 BLOB모드에서 커널이미지 등을 다운 후 설치할것임

  38. 보드는 어떻게 작동 되나? • dummy라는 이미지가 있어서 이것이 부트로더(boot.bin)을 설치할 수 있게 해줌부트로더가 설치되면 더미모드로는 부팅이 안됨 • boot.bin 이 설치되어 있으면 blob모드로 부팅해서 임베디드용 리눅스 이미지를 설치할 수 있게 해줌 • 리눅스 이미지까지 다 포팅이 되어 있으면 정상적으로 부팅 가능 • 실수로 부트로더를 망가뜨리면 윈도우에서 예전에 했던 작업을 해서 dummy이미지를 설치해야함. 그 뒤 부트로더를 설치하고, 리눅스 이미지를 설치해야함.

  39. ftp를 이용하지 않고 시리얼 통신으로도 파일 전송 가능 • ZMODEM을 사용해 호스트 시스템과 타겟 시스템 사이의 직렬 통신이 가능 • 미니컴에서 ZMODEM을 기동하여 파일 송수신 가능

  40. ② ③ ④ 실습 5-1 ZMODEM을 이용한 이미지 전송 • ARM용 실행 파일 hello-arm([실습 4-3]에서 툴체인을 이용해 생성)을 /embed/ex/05 디렉토리로 복사 • 미니컴 실행 • 타겟 시스템의 전원을 켜고 자동 부팅 • [Ctrl] + [A]와 [Z] 키 입력 → 미니컴 도움말 화면에서 [S] 키 입력

  41. ② ③ ④ 실습 5-1 ZMODEM을 이용한 이미지 전송 • ARM용 실행 파일 hello-arm([실습 4-3]에서 툴체인을 이용해 생성)을 /embed/ex/05 디렉토리로 복사 • 미니컴 실행 • 타겟 시스템의 전원을 켜고 자동 부팅 • [Ctrl] + [A]와 [Z] 키 입력 → 미니컴 도움말 화면에서 [S] 키 입력

  42. 실습 5-1 ZMODEM을 이용한 이미지 전송 • ZMODEM을 선택 후 [Enter] 키 입력 • ARM용 실행 파일이 있는 /embed/ex/05 디렉토리로 이동. 디렉토리 이동은 메뉴에서 []와 [] 키를 사용해 원하는 디렉토리로 커서를 옮긴 후 [Space] 키를 두 번 입력

  43. ② 실습 5-1 ZMODEM을 이용한 이미지 전송 전송할 파일로 이동 후 [Space] 키를 한 번 눌러 파일 선택 • [Enter] 키를 눌러 선택한 파일 전송 • 완료 후 아무 키나 눌러 타겟 시스템의 프롬프트가 나타나면 전송 받은 파일을 타겟 시스템에서 실행

  44. 커널(리눅스이미지) 빌드 과정 • 커널 환경 설정 유틸리티 • make config • make menuconfig • make xconfig

  45. 커널 빌드 과정 • 커널 환경 설정

  46. 커널 빌드하기 • 320TKU 폴더에 Kernel 폴더안에 압축을 풀었던것을 기억할것이다. Linux폴더에 들어가보면 Makefile이 있는데 이것을 수정해야한다. 450번째줄에 config %config: scripts_basic outputmakefile FORCE를 %config: scripts_basic outputmakefile FORCE로 수정한다.

  47. 커널 빌드하기 • make WENDERS_defconfig 를 실행하면 알아서 커널 빌드 옵션을 기본 설정으로 만들어준다 • make meunconfig 를 실행하면 수동으로 하나하나 설정이 가능하다. • 이후는 교재 95~122를 진행하면 된다.

More Related