#환경 설정
Ubuntu10 압출 풀기 -> 새로만들기 -> 이름 버전 입력(32bit linux)-> 메모리 4G -> 하드 디스크(기존 가상 하드 디스크 파일 사용)
-> virtualBox 실행
(Ubuntu)
장치 -> 게스트 확장 클릭 -> 바탕화면의 CD 더블클릭 ->autorun.sh 터미널에서 실행
(virtualBox)
virtualBox의 설정 ->네트워크 -> 브리지 어댑터 ->ASIX 설정
/*
이전에 드라이버가 설치 되어 있는지 확인(windows의 장치 관리자 확인)
*/
장치 ->공유 폴더 ->추가 ->(window 폴더 설정)->자동마운트,항상사용하기 선택
(Windows)
Tera Term 설치 -> Serial 클릭 -> setup Serial prot 115200으로 설정
S3c2450 전원 키기
(Ubuntu)
# cd /etc/xinetd.d/
# gedit tftpd
service tftp
{
protocol = udp
port = 69
socket_type = dgram
wait = yes
user = nobody
server = /usr/sbin/in.tftpd
server_args = /tftpboot
disable = no
}
# mkdir /tftpboot/
# chmod 777 /tftpboot/
# /etc/init.d/xinetd restart
* Stopping internet superserver xinetd [ OK ]
* Starting internet superserver xinetd [ OK ]
# netstat -au
#halt =>종료
(reboot 할것)
(bootroad) =>보드의 reset 버튼 누르고 enter해서 진입(명령대기 상태)
/*
bootroad의 부팅은 2가지 1.자동부팅 2.명령대기 상태(프롬프트 상태)
*/
#printenv
#setenv serverip 192.168.10.107
#setenv ipaddr 192.168.10.117
#saveenv
/*
ip를 직접 잡아줍니다.
*/
(Ubuntu)
# ifconfig eth0 192.168.10.107 up
# ifconfig
# cd /media/sf_D_DRIVE/
# ls
MDS2450.bin ==>(윈도우의 공유파일에 직접 넣어준 파일)
# cp MDS2450.bin /tftpboot/
# chmod 777 /tftpboot/MDS2450.bin ==>Access violation오류시
(bootroad)
#tftp 30000000 MDS2450.bin //PC로 부터 다운로드
#go 30000000 //실행
led.zip와 arm-2011.03-42-arm-none-eabi-i686-pc-linux-gnu.tar.bz2를 리눅스에 생성된 공유파일(sf_D_DRIVE)에 넣는다.
(Ubuntu)
#cd /media/sf_D_DRIVE
#cp led.zip /root
# cp arm-2011.03-42-arm-none-eabi-i686-pc-linux-gnu.tar.bz2 /root
#cdtar /root
#tar xvjf arm-2011.03-42-arm-none-eabi-i686-pc-linux-gnu.tar.bz2
/*
tar.bz2 ->xvjf
tar.bz ->xvzf
*/
#cd /etc
#gedit environment
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/root/arm-2011.03/bin"
/*
수정
*/
#source /etc/environment
#arm-none-eabi-gcc
#cd /root
#unzip led.zip
#cd led
#cd SOURCE
#ls -al
#gedit Main.c
/*
소스 입력
*/
#make clean
#make
/*
Makefile : 컴파일 자동화 유티리티
clean후 컴파일
*/
#cp MDS2450.bin /tftpboot
/*
tftp(file transfer protocol)를 통해 board에 보내어 board에서 실행한다
PC(host)/ TFTP server || targetboard()/client
*/
(bootroad)
#tftp 30000000 MDS2450.bin
/*
다운로드
*/
#go 30000000
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | #include "2450addr.h" //S3c2450의 모든 register주소가 들어있는 헤더파일 #define GPGCON (*(volatile unsigned int *)0x56000060) #define GPGDAT (*(volatile unsigned int *)0x56000064) void LED_Port_Init(void); void LED_ON_Off(int num); void Main() { LED_Port_Init(); while(1) { int i; LED_ON_Off(5); for(i=0; i<300000; i++); LED_ON_Off(6); for(i=0; i<300000; i++); LED_ON_Off(1); for(i=0; i<300000; i++); LED_ON_Off(2); for(i=0; i<300000; i++); LED_ON_Off(4); for(i=0; i<300000; i++); LED_ON_Off(3); for(i=0; i<300000; i++); } } void LED_Port_Init() { GPGDAT |= 0xf0; GPGCON |= 0x5500; } void LED_ON_Off(int num) { GPGDAT |= 0xf0; switch(num){ case 1: GPGDAT &= (0xe0); break; case 2: GPGDAT &= (0xd0); break; case 3: GPGDAT &= (0xb0); break; case 4: GPGDAT &= (0x70); break; case 5: GPGDAT &= (0x30); break; case 6: GPGDAT &= (0xc0); break; } } | cs |
'Embedded C언어' 카테고리의 다른 글
[임베디드 C언어_Day6]LED + keypad(비트필드 구조체 사용)구현 (0) | 2018.10.15 |
---|---|
[임베디드 C언어_Day5]CallBack (0) | 2018.10.15 |
[임베디드 C언어_Day4]LED + keypad 구현 (1) | 2018.10.15 |
[임베디드 C언어_Day2]Bit Setting 개념 (0) | 2018.10.11 |
[임베디드 C언어_Day1]정수의 승격(Integer Promotion) (0) | 2018.10.11 |