도와주세요!!
글 수 15,339
2008.06.19 16:01:39 (*.107.130.131)
11272
안녕하세요.
EZ-S3C2440보드 사용중입니다.
2410 보드용 샘플 소스코드 참조해서 GPIO 디바이스 드라이버 만들고 있는데요.
소스코드에 예로 나온 GPF4 ~ GPF7은 잘 동작하는데 다른 핀으로 해보니 잘 안되네요.
GPF4~GPF7에 연결된 디버그용 LED는 잘 동작 합니다.
같은 소스코드로 GPF0~GPF3을 해봤는데 동작을 안하네요.
이건 샘플에 나온 소스코드이구요
void hw_gpf_init( void )
{
set_GPIO_IN( reg_s2410(S3C2410_GPFCON), 4 );
set_GPIO_IN( reg_s2410(S3C2410_GPFCON), 5 );
set_GPIO_OUT( reg_s2410(S3C2410_GPFCON), 6 );
set_GPIO_OUT( reg_s2410(S3C2410_GPFCON), 7 );
// 내부 pull-up disable 7..4
reg_s2410(S3C2410_GPFUP) |= 0xf0;
// led off
GPIO_OUT( reg_s2410(S3C2410_GPFDAT), 6, 1 );
GPIO_OUT( reg_s2410(S3C2410_GPFDAT), 7, 1 );
}
아래는 제가 수정해본 코드입니다.
void hw_gpf_init( void )
{
set_GPIO_OUT( reg_s2410(S3C2410_GPFCON), 0 );
set_GPIO_OUT( reg_s2410(S3C2410_GPFCON), 1);
set_GPIO_OUT( reg_s2410(S3C2410_GPFCON), 2 );
set_GPIO_OUT( reg_s2410(S3C2410_GPFCON), 3 );
set_GPIO_OUT( reg_s2410(S3C2410_GPFCON), 4 );
set_GPIO_OUT( reg_s2410(S3C2410_GPFCON), 5 );
set_GPIO_OUT( reg_s2410(S3C2410_GPFCON), 6 );
set_GPIO_OUT( reg_s2410(S3C2410_GPFCON), 7 );
reg_s2410(S3C2410_GPFUP) |= 0xff;
GPIO_OUT( reg_s2410(S3C2410_GPFDAT), 0, 1 );
GPIO_OUT( reg_s2410(S3C2410_GPFDAT), 1, 1 );
GPIO_OUT( reg_s2410(S3C2410_GPFDAT), 2, 1 );
GPIO_OUT( reg_s2410(S3C2410_GPFDAT), 3, 1 );
GPIO_OUT( reg_s2410(S3C2410_GPFDAT), 4, 1 );
GPIO_OUT( reg_s2410(S3C2410_GPFDAT), 5, 1 );
GPIO_OUT( reg_s2410(S3C2410_GPFDAT), 6, 1 );
GPIO_OUT( reg_s2410(S3C2410_GPFDAT), 7, 1 );
}
GPIO 세팅 부분에서 0,1,2,3에 해당하는 코드를 추가하고 8개 모두 출력으로 설정했습니다.
그리고 reg_s2410(S3C2410_GPFUP) |= 0xf0; 에서 0xf0를 0xff로 바꿨습니다.
마지막으로 출력부분
GPIO_OUT( reg_s2410(S3C2410_GPFDAT), 6, 1 );
부분에 1/0을 바꿔가면서 해봐도 출력이 변하지 않네요.
따로 app 코드 작성하지 않고 소스코드 수정, 재컴파일, insmod, rmmod 반복해서 해봤는데
보드의 LED는 켜졌다 꺼졌다 하는데 GPF0~GPF3은 변화가 없습니다.
확인은 80핀 외부 확장 커넥터 오른쪽것에 41~46, 67, 68번 핀에서 했습니다.
소프트웨어나 하드웨어적으로 뭔가 다른 설정이 필요한것인지
아니면 제가 뭔가 잘못한것인지 궁금하네요.
답변 부탁드립니다. 감사합니다~
EZ-S3C2440보드 사용중입니다.
2410 보드용 샘플 소스코드 참조해서 GPIO 디바이스 드라이버 만들고 있는데요.
소스코드에 예로 나온 GPF4 ~ GPF7은 잘 동작하는데 다른 핀으로 해보니 잘 안되네요.
GPF4~GPF7에 연결된 디버그용 LED는 잘 동작 합니다.
같은 소스코드로 GPF0~GPF3을 해봤는데 동작을 안하네요.
이건 샘플에 나온 소스코드이구요
void hw_gpf_init( void )
{
set_GPIO_IN( reg_s2410(S3C2410_GPFCON), 4 );
set_GPIO_IN( reg_s2410(S3C2410_GPFCON), 5 );
set_GPIO_OUT( reg_s2410(S3C2410_GPFCON), 6 );
set_GPIO_OUT( reg_s2410(S3C2410_GPFCON), 7 );
// 내부 pull-up disable 7..4
reg_s2410(S3C2410_GPFUP) |= 0xf0;
// led off
GPIO_OUT( reg_s2410(S3C2410_GPFDAT), 6, 1 );
GPIO_OUT( reg_s2410(S3C2410_GPFDAT), 7, 1 );
}
아래는 제가 수정해본 코드입니다.
void hw_gpf_init( void )
{
set_GPIO_OUT( reg_s2410(S3C2410_GPFCON), 0 );
set_GPIO_OUT( reg_s2410(S3C2410_GPFCON), 1);
set_GPIO_OUT( reg_s2410(S3C2410_GPFCON), 2 );
set_GPIO_OUT( reg_s2410(S3C2410_GPFCON), 3 );
set_GPIO_OUT( reg_s2410(S3C2410_GPFCON), 4 );
set_GPIO_OUT( reg_s2410(S3C2410_GPFCON), 5 );
set_GPIO_OUT( reg_s2410(S3C2410_GPFCON), 6 );
set_GPIO_OUT( reg_s2410(S3C2410_GPFCON), 7 );
reg_s2410(S3C2410_GPFUP) |= 0xff;
GPIO_OUT( reg_s2410(S3C2410_GPFDAT), 0, 1 );
GPIO_OUT( reg_s2410(S3C2410_GPFDAT), 1, 1 );
GPIO_OUT( reg_s2410(S3C2410_GPFDAT), 2, 1 );
GPIO_OUT( reg_s2410(S3C2410_GPFDAT), 3, 1 );
GPIO_OUT( reg_s2410(S3C2410_GPFDAT), 4, 1 );
GPIO_OUT( reg_s2410(S3C2410_GPFDAT), 5, 1 );
GPIO_OUT( reg_s2410(S3C2410_GPFDAT), 6, 1 );
GPIO_OUT( reg_s2410(S3C2410_GPFDAT), 7, 1 );
}
GPIO 세팅 부분에서 0,1,2,3에 해당하는 코드를 추가하고 8개 모두 출력으로 설정했습니다.
그리고 reg_s2410(S3C2410_GPFUP) |= 0xf0; 에서 0xf0를 0xff로 바꿨습니다.
마지막으로 출력부분
GPIO_OUT( reg_s2410(S3C2410_GPFDAT), 6, 1 );
부분에 1/0을 바꿔가면서 해봐도 출력이 변하지 않네요.
따로 app 코드 작성하지 않고 소스코드 수정, 재컴파일, insmod, rmmod 반복해서 해봤는데
보드의 LED는 켜졌다 꺼졌다 하는데 GPF0~GPF3은 변화가 없습니다.
확인은 80핀 외부 확장 커넥터 오른쪽것에 41~46, 67, 68번 핀에서 했습니다.
소프트웨어나 하드웨어적으로 뭔가 다른 설정이 필요한것인지
아니면 제가 뭔가 잘못한것인지 궁금하네요.
답변 부탁드립니다. 감사합니다~
됩니다-_-;;;
제가 실수했었네용 ㅎㅎㅎ