2007년 10월 23일
임베디드 리눅스 세팅 및 개발환경 구축
출처: http://blog.empas.com/hanmp3/10729299
=====================================================
개발을 위한 환경 구축
=====================================================
0 리눅스 설치(Fedora 3, 2.6.9-1.667 i386 GNU/Linux)
1. 크로스툴체인 파일 : /Toolchain/arm-cross-compiler.tar.bz2
2. JTAG 설치 : /Application/pxa255-jtag.tar.gz
3. BOOTP 설치: /Application/bootpd-2.4.tar.gz
4. TFTP 설치: 기본 설치되어 있음(시디안에는 tftp rpm 패키지가 없음)
5. Minicom 설치 : 기본 설치되어 있음
6. NFS(Network File System) 설정
=====================================================
Linux 셋팅
- Fedora 3 Kernel 2.6.9-1.667 (CD 6장)
- 설치유형에서 개인 데스크탑으로 설정
- 파티션 설정 (자동 분할 파티션으로 하지 말것)
파일 시스템 유형은 ext3 으로 (swap은 제외)
/ : 5G
/boot : 100M
/home : 12G
/usr : 10G
/var : 1024M
swap: 1024M
되도록이면 / 와 /usr 쪽에 더 많이 할당 할것
/home은 일반 리눅스 서버로 쓸때 많이 줘야 함.
- 부트로더는 GRUB 부트로더로 셋팅, 암호도 입력, 부트로더는 마스터부트레코드(MBR)에
- 기본부팅은 DOS로
- 방화벽 수준은 중간수준으로, 허용 서비스는 [FTP], [SSH], [Telnet] 선택
- 패키지 선택시 전체 패키지 선택
리눅스 네트워크 설정
로컬 호스트 이름 : /etc/sysconfig/network 파일에서 “HOSTNAME=“으로 지정한다.
#cat /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=maka.kangnung.ac.kr
/etc/hosts : 원격 호스트의 호스트 이름과 아이피 주소를 지정해 주는 파일
203.255.217.189 maka maka.kangnung.ac.kr
/etc/issue.net : 텔넷 접속시 보여주는 메세지
: Kernel r on an m / r: 커널버전, m: 릴리즈
#ifconfig : IP 인터페이스 설정
#route : 라우팅 테이블 정보
#route add -host IP dev eth-인터페이스명 : 인터페이스 추가
#route del IP dev eth-인터페이스명 : 인터페이스 삭제
#cat /etc/resolv.conf : DNS 세팅 정보
NFS (Network File System) : TCP/IP 네트워크로 다른 컴퓨터에 있는 파일 시스템을 마운트 해서 서버의 자료를 공유할수 있게 해주는 시스템
#rpcinfo -p : nfs 서버 데몬 확인
#df : 파티션 상태 및 마운트 상태 확인
Xinetd : Extened Internet Service Daemon : 리눅스 슈퍼데몬.
#/etc/init.d/xinetd start : xinetd 프로세스 시작, restart : 재시작
RPM : Redhat Package Manager
#rpm -qv xinetd : rpm 패키지가 설치되었는지 볼수 있는 명령어.
rpm -i 패키지명 : 설치
rpm -U 패키지명 : 업그레이드
rpm -e 패키지명 : 제거
rpm -q 패키지명 : 질의
rpm -V or -y 패키지 목록 : 점검
#rpm -ivh <패키지 파일명> : 패키지 설치
커널 업그레이드 및 설치
리눅스 커널 보는 방법
# uname -a
커널소스가져오기 : ftp.kernel.org :21 /pub/linux/kernel/v2.4/linux-2.4.24.tar.bz2 --> /usr/src
커널소스풀기: #tar xvfj linux-2.4.24.tar.bz2
얼라이언스 맺기: #ln -s linux-2.4.24 linux
make menuconfig 실행 linux-2.4.24 디렉토리에 가서 / 저장하면 .config 라는 환경설정 파일 생김
설정영역 의존성 검사: make dep / .depend 라는 파일 생성
이전 커널 컴파일시 생성된 파일 삭제: make clean
커널 이미지 생성 : make bzImage / bzImage 라는 파일이 생성되고 /root로 복사한다.
새로 생성된 커널에 적합한 System.map을 적용
모듈생성 : make modules
모듈설치: make modules_install //lib/modules/2.4.22 디렉토리로 복사
grub.conf 파일수정 : /etc/grub.conf 파일 수정 (부팅시 멀티 부팅 옵션도 있음)
Cross 개발환경 구축
Tool Chain : Target device의 Software의 개발을 진행하기 위해 필요한 host system의 cross compile 환경을 뜻함
- binutils : 어셈블러 및 로더 기타 툴(GNU)
- glibc : cross compiler 구축을 위한 library 및 일반 library
- gcc : compiler
크로스툴체인설치
1. 파일: /Toolchain/arm-cross-compiler.tar.bz2
2. /usr/local/arm-linux/ 으로 복사
3. 압축풀기: 폴더로 이동하여 #tar xvjf arm-cross-compiler.tar.bz2
4. 경로설정: #vi /root/.bash_profile 수정
: PATH=#PATH:#HOME/bin:/usr/local/arm-linux/bin 로 변경
5. 설정적용: #source .bash_profile
6. 컴파일 테스트(root가 아닌 경우는 각 유저의 .bash_compiler 파일에 4번 경로설정 해주어야함)
- /home/maka/test 디렉토리로 이동하여 test_compiler.c 파일을 편집(간단 프린트문)
- #gcc -o host_compiler test_compiler.c // 데스크탑(호스트) 피씨에서 실행
-#arm-linux-gcc -o cross_compiler test_compiler.c //임베디드, 테스트 보드에서 실행(나중)
나중에 테스트 보드에서 제대로 실행되면 크로스컴파일러 셋팅 완료
여기서 #file cross_compiler 을 실행했을때 "ARM" 이라는 내용이 들어가 있는지 확인할것
JTAG(Joint European Test Access Group)설치
기능 :
- 디바이스의 모든 외부핀을 구동시키거나 값을 읽어들일수 있음.
- 회로의 배선과 소자의 전기적 연결 상태 test
- 디바이스간의 연결상태 test
- Flash memory fusing
컴파일한 부트로더를 타켓보드 PXA255-Pro에 다운로드하여 PXA255-Pro 보드에 있는 flash Memory에 저장하기 위해서 사용하는 툴
- 다운로드한 파일은 RAM에 올려져 있어서 보드가 재부팅 되면 없어짐.
- JTAG 케이블 연결은 데스크탑의 LPT케이블과 타켓보드의 JTAG 슬롯에 꽃으면 됨.
- pc에서 jtag interface를 통하여 target system의 flash memory에 data를 fusing 하는 작업을 간단하게 해주는 프로그램
설치:
1. 파일복사: /Application/pxa255-jtag.tar.gz 파일을 /usr/local/pxa255-jtag__ 디렉토리로 복사
2. 압축풀기: #tar xfz pxa255-jtag.tar.gz
3. 컴파일 위한 configuration : #./configure --with-include=/usr/local/pxa255-jtag__/include-0.2.3 --prefix=/usr/local/pxa255-jtag
4. 컴파일 : #make
5. 설치하기: #make instrall
6. 확인: /usr/local/pxa255-jtag/bin/ 에 jtag 실행파일 있으면 제대로 설치된것임
7. /usr/bin 폴더로 jtag 실행파일 복사 : #cp jtag /usr/bin
BOOTP 설치
기능: 네트워크를 통하여 장치에 자동으로 IP를 할당하기 위한 프로토콜로서 타켓의 MAC 주소를 기반으로 IP주소를 할당한다.
타겟에 IP를 자동으로 할당하기 위해서는 네트워크 내에 BOOTP 서버가 존재하여야 하고,
이 데몬은 /etc/bootptab과 /etc/hosts 파일 참조함
설치
1. 파일복사: /Application/bootpd-2.4.tar.gz 파일을 /usr/local/bootpd-2.4 폴더로 복사
2. 압축풀기: #tar xvfz bootpd-2.4.tar.gz
3. 컴파일: #make
4. 설치하기: #make install
- /usr/etc 밑에 bootpd 실행파일이 존재하는지 확인.
5. /etc/bootptab 파일 작성
#vi /etc/bootptab
.default: :hd=/tftpboot:bf=null: :sm=255.255.255.0
PXA255_PRO:ht=1;ha=0x0123456789ab:tc=.default:ip=203.255.217.190
:wq
6. /etc/hosts 파일 수정
#vi /etc/hosts
203.255.217.189 maka maka.kangnung.ac.kr
203.255.217.190 pxa255_pro //이부분 추가
참고: /etc/bootdtab 파일의 아이피와 /etc/hosts아이피가 같아야함. 또한 타켓보드 아이피도 같아야함.
7. bootp daemon 구동
#cd /usr/etc
#./bootpd
8. 데몬 확인
#netstat -a | grep bootp
TFTP 설치
기능: host pc에서 target sytem으로 kernel, ramdisk, jffs2 등의 image file을 download하기 위해 사용함
1. 설치확인
#rpm -qa | grep tftp
만약 설치되어 있지 않으면 http://www.rpmfind.com 또는 http://www.huins.com 에서
rpm 서버와 클라이언트 각 한개의 파일을 다운로드 하여 설치(rpm -Uvh 옵션사용)
tftp rpm 설치정보: tftp-0.39-1, tftp-server-0.39-1
2. 프로세스 확인
#netstat -a |grep tftp
아무런 서비스가 나타나지 않은면 #/etc/rc.d/init.d/xinetd restart 명령으로 xinetd 활성화
3. tftp 환경 설정
#vi /etc/xinetd.d/tftp
옵션중에 disable = yes --> no 로 변경
server_args = -s /tftpboot 로 세팅 // 만약 서버에 /tftpboot 디렉토리가 없으면 만들어 준다.
Minicom
- 통신 에뮬레이터 프로그램(이야기 or 넷텀 등등), 파일 업로드도 가능
- 시리얼 케이블(통신)로 서버와 타켓보드간의 통신을 함.
- 필요한것: Serial Cross Cable(9 pins) 1EA , Linux Server, PXA255-pro 슬습보드
- Cross cable의 한쪽은 Host의 COM1에 연결, 다른 한쪽은 Target의 COM1에 연결
- RS232C 통신을 이용
목표: 만들어진 /root/cross_compiler 파일을 target 보드에 download
1. 실행전 작업
통신 포트 설정 :
#minicom -s
[configruation] 에서 Serial port setup 선택후 엔터
COM1은 A-Serial Device : /dev/ttyS0 으로 , COM2은 A-Serial Device : /dev/ttyS1 로 세팅 --> 여기서는 ttyS0 으로 세팅
E - Bps/Par/Bits : 115200 8N1 로 설정
F - Hardware Flow Control : No 로 설정 하고 저장 - 종료
2. 타켓보드 전원을 켜면 부팅되는 과정을 볼 수 있음
3. 부팅후 PXA255-Pro login: 라는 메시지가 나오면 'root' 입력후 엔터
4. 부팅완료
5. 파일 업로드
- CTRL+A Z 키를 누른다 <-- Minicom Command Summary 가 나옴
- S (send files) 누르고 zmodem 선택
- ToolChain 설치시 만든 cross_compiler 파일 선택 후 Enter
- host로부터 target보드에 download 됨
- transfer complete 메세지 나오면 성공
NFS(Network File System) 설정
사용자가 원격지 컴퓨터에 있는 파일을 마치 자신의 커퓨터 System에 있는 것처럼 검색, 수정, 저장등이 가능하게 해주는 서버/클라이언트 형태의 시스템 소프트웨어이다.
1. NFS 설정
- 공유디렉토리 생성 : #mkdir /nfsroot
- /etc/exports 파일 수정
#vi /etc/exports
/nfsroot 203.255.217.190(rw,no_root_squash)
:wq
//여기서 190 아이피는 타켓보드 아이피이고 실습교재에는 no_root_spuash 라고 되어있음. 오타 ㅡ.ㅡ;
2. NFS Server 데몬 구동: #/etc/init.d/nfs restart
3. 데몬 확인 : #netstat -a | grep nfs
4. NFS 시험(타겟보드에서 리눅스 부팅이 끝난후에 가능)
#ifconfig eth0 203.255.217.190 (현재 타켓보드의 아이피를 수정)
#mkdir /mnt/nfs
#mount -t nfs 203.255.217.189:/nfsroot /mnt/nfs (여기서 189번 아이피는 서버 아이피)
# by | 2007/10/23 00:14 | Embedded Linux | 트랙백 | 덧글(0)




☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]