본문 바로가기

Embedded/Kernel Porting

[Kernel Porting] Dip스위치를 이용한 LED 점멸

작업 환경

-메인 OS : Windows 8.1K(Intel Core i5-4590)

-작업 OS : Ubuntu 14.04.5 LTS 64bit(VirtualBox)

-장 비 명 : Hybus-Smart4412


led_dipsw.c

#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>

#define dip "/dev/dipsw"
#define led "/dev/led"

int main()
{
int dip_d, dev;
unsigned char c, data;
dip_d = open(dip, O_RDWR);
dev = open(led, O_RDWR);
if(dev<0)
{
printf("open failed\n");
exit(0);
}

while(1)
{
data=0xff;
while(1)
{
read(dip_d, &c, sizeof(c));
if(c) break;
usleep(150000);
}
switch(c)
{
case 1:data &= ~0x01;break;
case 2:data &= ~0x02;break;
case 4:data &= ~0x04;break;
case 8:data &= ~0x08;break;
case 16:data &= ~0x10;break;
case 32:data &= ~0x20;break;
case 64:data &= ~0x40;break;
case 128:data &= ~0x80;break;
}
write(dev, &data, sizeof(unsigned char));
usleep(200000);
}

close(dip);
close(led);
return 0;
}



1. 초기설정

sudo apt-get install gcc-4.4 g++-4.4 g++-4.4-multilib gcc-4.4-multilib lib32z1


2. 컴파일

/opt/gnueabi/opt/ext-toolchain/bin/arm-linux-gnueabihf-gcc led_dipsw.c -o led_dipsw


3. Test

- 윈도우(메인 OS)로 실행파일 복사

- Tera Term에서 포트 설정 후  설정 -> 시리얼 포트 -> 속도를 115200으로 설정

- Hybus-Smart4412 장비 부팅

- 메뉴 -> 전송 -> ZMODEM -> 보내기 에서 실행파일 선택

- chmod 777 [실행파일명]  (실행파일 권한 설정)

- ./[실행파일명]  (실행 후 테스트)

(★중요 : 만약 소스파일을 수정 했다면 Tera Term 에서 먼저 rm [실행파일명] 을 한 뒤 다시 ZMODEM -> 보내기 에서 실행파일 선택 후 chmod 777 [실행파일명] 와 ./[실행파일명] 다시 실행)