작업 환경
-메인 OS : Windows 8.1K(Intel Core i5-4590)
-작업 OS : Ubuntu 14.04.5 LTS 64bit(VirtualBox)
-장 비 명 : Hybus-Smart4412
fnd1.c
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <string.h>
#define fnd "/dev/fnd"
unsigned char fnd_data[4];
void PrintFnd(char c,int i);
int main(){
char data[6];
int num, i, flag=1;
int fnd_d;
// 1 2 3 4 5 6 7 8 9 0 .
// 0xF9, 0xA4, 0xB0, 0x99, ~0x6D, ~0x7D, ~0x07, ~0x7F, 0x10, 0xC0, 0x80
fnd_d=open(fnd, O_RDWR); // 해당 드라이버열기
fnd_data[0]=0xFF;
fnd_data[1]=0xFF;
fnd_data[2]=0xFF;
fnd_data[3]=0xFF;
write(fnd_d, fnd_data ,sizeof(fnd_data));
printf("Input=>");
scanf("%s", data);
for(i=0;i<5;i++){
if(data[i]=='\0')
break;
if(data[i]=='.'){
fnd_data[i-1]&= ~0x80;
flag=0;
}else if(flag)
PrintFnd(data[i], i);
else
PrintFnd(data[i], i-1);
}
write(fnd_d, fnd_data ,sizeof(fnd_data));
sleep(2);
close(fnd_d);
return 0;
}
void PrintFnd(char c, int i){
if(c=='0')
fnd_data[i]=0xC0;
if(c=='1')
fnd_data[i]=0xF9;
if(c=='2')
fnd_data[i]=0xA4;
if(c=='3')
fnd_data[i]=0xB0;
if(c=='4')
fnd_data[i]=0x99;
if(c=='5')
fnd_data[i]=~0x6D;
if(c=='6')
fnd_data[i]=~0x7D;
if(c=='7')
fnd_data[i]=~0x07;
if(c=='8')
fnd_data[i]=~0x7F;
if(c=='9')
fnd_data[i]=0x10;
}
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 fnd1.c -o fnd1
3. Test
- 윈도우(메인 OS)로 실행파일 복사
- Tera Term에서 포트 설정 후 설정 -> 시리얼 포트 -> 속도를 115200으로 설정
- Hybus-Smart4412 장비 부팅
- 메뉴 -> 전송 -> ZMODEM -> 보내기 에서 실행파일 선택
- chmod 777 [실행파일명] (실행파일 권한 설정)
- ./[실행파일명] (실행 후 테스트)
(★중요 : 만약 소스파일을 수정 했다면 Tera Term 에서 먼저 rm [실행파일명] 을 한 뒤 다시 ZMODEM -> 보내기 에서 실행파일 선택 후 chmod 777 [실행파일명] 와 ./[실행파일명] 다시 실행)
'Embedded > Kernel Porting' 카테고리의 다른 글
[Kernel Porting] 캐릭터LCD에 Hello World 표현하기 (0) | 2016.12.18 |
---|---|
[Kernel Porting] Tactsw와 FND를 이용한 사칙연산 (0) | 2016.12.18 |
[Kernel Proting] FND 점멸하기 (0) | 2016.12.18 |
[Kernel Porting] Tact 스위치를 이용한 응용문제 (0) | 2016.12.18 |
[Kernel Porting] Tact 스위치를 이용한 사칙연산 (0) | 2016.12.18 |