다음 과 같은 test 프로그램을 짰습니다.

int init_module( void )

{

int result;


// 장치를 등록한다.

result = register_chrdev( GPIO_MAJOR, DEVICE_NAME, &gpio_fops );

if (result < 0)

{

printk(KERN_WARNING "%s : Can't get Major Number [%d]
", DEVICE_NAME, GPIO_MAJOR);

return result;

}

printk(" Init madule, Succeed. This Device is %s and Major Number is [%d]
", DEVICE_NAME, GPIO_MAJOR);




GPDR0 &= ~(1<<16); // 입력 전용으로 설정
GRER0 &= ~( 1<<16 ); // Clear Rising edge trigger.

GFER0 &= ~( 1<<16 ); // Set as Falling Edge Detect
GAFR0_U &= ~(1<<1); //16번 핀을 부가 기능으로 사용하지 않는다.
GAFR0_U &= ~(1);

//GPLR0의 값을 출력한다.
printk("
GPLR0 : %x
, GPIO16_STATE: %x
", GPLR0, ((GPLR0>>16)&1));

return 0; /* 성공 */

}

출력값을 보면
GPLR0 : ff9fffff
GPIO16_STATE: 1

입니다. 16번에 3.3V를 인가하건 GND를 인가하건 똑같은 결과가 나오네요.
그리고 GPLR0의 값이 거의가 1로 되어 있는걸 알수 있는데 잘 이해가 안되네요..
처음 GPIO가 일반 기능으로 되어있다면 초기값은 입력으로 되어있다고 본것 같은데요..

답변 부탁 드려요...

ps 설정을 M01에 맞게 바꾼후 해보면 M01에서는 작동하는데요...;;;;