
도와주세요!!
글 수 15,339
2002.08.21 14:07:48 (*.53.73.161)
8021
mknod라는 명령어로 장치 파일을 작성 해야 합니다.
mknod c 255 1 /dev/gpio
이러한 방식으로 디바이스 장치 파일을 만들어야 합니다.
리눅스에서는 장치를 접근할때에도 파일 형식으로 인식을 하기 때문에 디바이스 장치파일을 반드시 만들어야 합니다.
Hard_angel wrote..
: 안녕하세요..
: 세미나 잘 받았습니다..
:
: 임베디드를 공부하면서..
: 어디서부터 해야할지....한숨만 쉬고 있었는데..
: 세미나 듣고..
: 이제 조금은 알거 같습니다..
: 세미나 갔다와서..이거하는 재미에 살고있습니다...^^
:
: 세미나 감사 했구요..
:
:
: 지금 GPIO를 공부하고 있는데요..
: 이지보드를 조금 일찍 알았더라면..이지보드 사는건데..
: 다른 보드 구입하고 며칠후에 이지보드를 알았거든요..^^
: 그래서 울 교수님께 적극 추천 했지용..
: 서론이 너무 길었네요.....지송..
:
: 아래 소스로..2line LCD를 제어하고있거든요..
: 근데요...자꾸..
: "open() failed" 메시지가 나오거든요..
:
: 그래서 타겟보드에서..dev/gpio를 찾아 봤는데
: 없더라구요..
: gpio라는 파일이 원래 dev/ 에 있어야 하는건지..??
:
: 아래 소스 한번 봐주세용..^^
: ====================================================
:
: #include
: #include
: #include
: #include
: #include
: #include
: #include "gpio.h"
:
: int putlcd(int dev, char byte_data, int reg_sel );
: int putled(int dev, char byte_data );
:
: int main(int argc, char **argv)
: {
: int dev,pre_data,i,j;
: int menu;
: int data ;
: int buff;
: char ci ;
: char wdata[4]={0,0,0,0};
:
: printf("
press the push button");
:
: dev=open("/dev/gpio",O_WRONLY);
: if( dev >=0 )
: {
: data = 0 ;
:
: ci = 0x30 ;
:
: /* init LCD module */
: putlcd(dev,0x38,0); /* 0 : command, 1: data */
: for(i=0;i<0x100;i++); // initial delay
: putlcd(dev,0x38,0); /* 0 : command, 1: data */
: for(i=0;i<0x100;i++); // initial delay
: putlcd(dev,0x38,0); /* 0 : command, 1: data */
: for(i=0;i<0x100;i++); // initial delay
: putlcd(dev,0x0c,0); /* 0 : command, 1: data */
: for(i=0;i<0x100;i++); // initial delay
: putlcd(dev,0x01,0); /* 0 : command, 1: data */
: for(i=0;i<0x100;i++); // initial delay
: putlcd(dev,0x80,0); /* 0 : command, 1: data */
: for(i=0;i<0x100;i++); // initial delay
:
: for(j=0;j<0x10000;j++)
: {
: if(++ci>0x70) ci=0x30 ;
: putlcd(dev,ci,1) ;
: putled(dev,ci) ;
: for(i=0;i<0x100000;i++);
: }
: close( dev );
: }
: else
: {
: fprintf(stderr,"open() failed
");
: exit(-1);
: }
:
: return 0;
: }
:
:
: int putlcd(int dev, char byte_data, int reg_sel )
: {
: char wdata[4]={0,0,0,0};
: int i;
:
: wdata[0]= 0 ;
: if(reg_sel)
: wdata[1]= 0x18 ;
: else
: wdata[1]= 0x08 ;
: wdata[2]= byte_data ;
: wdata[3]= 0x00 ;
: write( dev, (char * )wdata, 4 );
:
: if(reg_sel) // up LCD EN
: wdata[1]= 0x10 ;
: else
: wdata[1]= 0x00 ;
: wdata[2]= byte_data ;
: wdata[3]= 0x00 ;
: write( dev, (char * )wdata, 4 );
:
: wdata[1]= 0x08 ; // up LCD EN
: wdata[2]= byte_data ;
: wdata[3]= 0x00 ;
: write( dev, (char * )wdata, 4 );
:
: return(0);
: }
:
: int putled(int dev, char byte_data )
: {
: char wdata[4]={0,0,0,0};
: int i;
:
: wdata[0]= 0 ;
: wdata[1]= 0x08 ;
: wdata[2]= byte_data ;
: wdata[3]= 0x00 ;
: write( dev, (char * )wdata, 4 );
:
: wdata[0]= 0 ;
: wdata[1]= 0x08 ;
: wdata[2]= byte_data ;
: wdata[3]= 0x02 ;
: write( dev, (char * )wdata, 4 );
:
: wdata[0]= 0 ;
: wdata[1]= 0x08 ;
: wdata[2]= byte_data ;
: wdata[3]= 0x00 ;
: write( dev, (char * )wdata, 4 );
:
: return(0);
: }
:
: ===============================================================
: 그럼 수고하시구요..........
: 멀리 전라도 광주에서..hard_angel 이 였습니다.