기존 이솝 임베디드 포럼의 지식인 서비스가 게시판 형태로 변경되었습니다.
안드로이드를 막 시작한 초보입니다. 안드로이드에서 간단한 GPIO 제어용 드라이브를 만들어 커널과 같이 컴파일 한 후 JNI를 이용하여 open을 하니 open fail이 납니다. 드라이브 파일은 "kernel/driver/" 폴더에 "gpioCtrl"이라는 폴더를 만들고 gpioCtrl.c와 makefile, kconfig 파일을 만들었습니다. 물론 "kernel/driver/" 폴더의 makefile과 kconfig 파일에 자작한 드라이브 관련 내용은 추가를 했습니다. make menuconfig를 하면 추가한 드라이브 내용이 보입니다. 부팅시 초기화 메시지가 출력되고, 부팅 완료 후 /dev/에 자작한 드라이브가 보이고요... /dev/에 있는 기존에 제작되어 있는 드라이브를 open하면 success합니다.
다음은 제작 제작한 드라이브 내용과 makefile내용입니다.
고수님들의 조언 부탁드립니다.
makefile ::
obj-y := gpioCtrl.o
kconfig ::
menuconfig GPIOCTRL
config CONFIG_GPIO_CONTROL
bool "Gpio control Driver"
default y
driver c code :: open과 init code만 올렸습니다.
static int gpioCtrl_open(struct inode *minode, struct file *mfile)
{
printk("Gpio Ctrl Open\n");
if(gpioCtrl_usage != 0)return -EBUSY;
return 0;
}
int __init gpioCtrl_init(void)
{
int result;
struct class *gpioCtrl_dev_class=NULL;
struct device *gpioCtrl_dev=NULL;
printk("Gpio Ctrl Init\n");
result = register_chrdev(GPIOCTRL_MAJOR, GPIOCTRL_NAME, &gpioCtrl_fops);
gpioCtrl_dev_class = class_create(THIS_MODULE, GPIOCTRL_NAME);
gpioCtrl_dev = device_create(gpioCtrl_dev_class, NULL, MKDEV(GPIOCTRL_MAJOR, 0), NULL, GPIOCTRL_NAME);
if(result <0)
{
printk(KERN_WARNING"Can't get any major!\n");
return result;
}
return 0;
}
난독증인지.....어떤 질문인지 잘 이해가...ㅠ.ㅠ
된다는 얘기인지 안된다는 얘기인지....