OK 6410 android開発ボードにledドライバモジュールを追加し、NDKでドライバをテスト
手順:
1. linux開発ボードと同様に、ledドライバを追加してテストします.過程は前の文章に書いたようなものだ.http://blog.csdn.net/wangben50/article/details/8657180
コンパイル駆動生成6410 led.koファイル.把koファイルは開発ボードに移動します.
開発ボードで実行
/# insmod 6410led.ko 6410led: module license 'unspecified' taints kernel. Disabling lock debugging due to kernel taint Test led dev OK!/# lsmod 6410led 1839 0 - Live 0xbf000000 (P)/# mknod/dev/led c 240 0/# chmod 777/dev/led
ドライバモジュールの追加が完了しました.
2. Androidプロジェクトを構築し、SDK、NDK開発と協力してapkソフトウェアテスト駆動を生成する.図面のようなエンジニアリング構造:
説明:1 Led.JAvaメインフォルダ.
2 NDKはSDKより1つ多いフォルダjniこのフォルダの下に2つのファイルがあります.一つはandroid専用Makefile、もう一つはJNIプログラムです.どのようにNDKを構築して、JNICプログラムをコンパイルして、ここではもう話しません.
3 NDKでコンパイルしてarmeabiファイルの下にlibled_を生成するjni.soダイナミックライブラリ.もしあなたがlinuxの下でNDKを使うならば、windowsの下でeclipseを使って、直接生成します.soファイルは工事の下にコピーすればいいです.
Windowsの下でcygwinと協力してNDKツールを使用することもできます.
注意:cygwinをインストールした後、インストールディレクトリの下D:cygwinhomeAdministratorのを変更します.bash_プロファイルファイル.ファイルの末尾にndk-buildのインストールパスを追加し、Fディスクのandroid-ndk-r 8 dの下にあります.次のように追加します.
ndk=/cygdrive/f/android-ndk-r8d
export NDKROOT
次のようなインタフェースを使用します.
4その後.JAva呼び出しlibled_jni.so,libled_jni.soドライバを呼び出す.apkソフトウェアアプリケーションレイヤ呼び出しドライバを完了します.
詳細なエンジニアリングコードをアップロードします.http://download.csdn.net/detail/wangben50/5155638
1. linux開発ボードと同様に、ledドライバを追加してテストします.過程は前の文章に書いたようなものだ.http://blog.csdn.net/wangben50/article/details/8657180
#include
#include
#include
#include /*copy_to_user,copy_from_user*/
#include /*inl(),outl()*/
#include
#include
//#define S3C64XX_GPMCON (unsigned long)ioremap(0x7F008820,4)
//#define S3C64XX_GPMDAT (unsigned long)ioremap(0x7F008824,4)
//#define S3C64XX_GPMDAT (unsigned long)ioremap(0x7F008828,4)
static long S3C64XX_GPMCON=0xF4500820; /* , S3C6410 。 ,ioremap() 。*/
static long S3C64XX_GPMDAT=0xF4500824;
#define LED_MAJOR 240 /* */
int led_open(struct inode *inode,struct file *file)
{
unsigned tmp;
tmp=inl(S3C64XX_GPMCON);
printk("the pre GPMCON is %x",tmp);
tmp=inl(S3C64XX_GPMDAT);
printk("the pre GPMDAT is %x",tmp);
outl(0x00111111,S3C64XX_GPMCON); /* GPMCON , GPM0-5 output */
printk("#############open#############");
return 0;
}
static ssize_t led_read(struct file *file,char __user *buf,size_t count,loff_t * f_pos)
{
unsigned tmp=inl(S3C64XX_GPMDAT);
int num=copy_to_user(buf,&tmp,count);
if(num==0)
printk("copy successfully");
else printk("sorry copy failly");
printk("the GPMDAT is %x.",tmp);
return count;
}
static ssize_t led_write(struct file * file,const char __user * buf,size_t count,loff_t * f_pos)/* write() LED , ioctl() */
{
char kbuf[10];
printk("###########write###########");
int num=copy_from_user(kbuf,buf,count);
if(num==0)
printk("copy successfully");
else printk("sorry copy failly");
printk("##the kbuf is %c",kbuf[0]);
switch(kbuf[0])
{
case 0://off
outl(0xff,S3C64XX_GPMDAT); /* GPMDAT[0:5] , LED , LED */
break;
case 1://on
outl(0x00,S3C64XX_GPMDAT); /* GPMDAT[0:5] , LED */
break;
default:
break;
}
return count;
}
int led_release(struct inode *inode,struct file *file)
{
printk("#######release##########");
return 0;
}
struct file_operations led_fops={
.owner = THIS_MODULE,
.open = led_open,
.read = led_read,
.write = led_write,
.release = led_release,
};
int __init led_init(void)
{
int rc;
printk("Test led dev
");
rc=register_chrdev(LED_MAJOR,"led",&led_fops);
if(rc<0)
{
printk("register %s char dev error
","led");
return -1;
}
printk("OK!
");
return 0;
}
void __exit led_exit(void)
{
unregister_chrdev(LED_MAJOR,"led");
printk("module exit
");
}
module_init(led_init);
module_exit(led_exit);
コンパイル駆動生成6410 led.koファイル.把koファイルは開発ボードに移動します.
開発ボードで実行
/# insmod 6410led.ko 6410led: module license 'unspecified' taints kernel. Disabling lock debugging due to kernel taint Test led dev OK!/# lsmod 6410led 1839 0 - Live 0xbf000000 (P)/# mknod/dev/led c 240 0/# chmod 777/dev/led
ドライバモジュールの追加が完了しました.
2. Androidプロジェクトを構築し、SDK、NDK開発と協力してapkソフトウェアテスト駆動を生成する.図面のようなエンジニアリング構造:
説明:1 Led.JAvaメインフォルダ.
2 NDKはSDKより1つ多いフォルダjniこのフォルダの下に2つのファイルがあります.一つはandroid専用Makefile、もう一つはJNIプログラムです.どのようにNDKを構築して、JNICプログラムをコンパイルして、ここではもう話しません.
3 NDKでコンパイルしてarmeabiファイルの下にlibled_を生成するjni.soダイナミックライブラリ.もしあなたがlinuxの下でNDKを使うならば、windowsの下でeclipseを使って、直接生成します.soファイルは工事の下にコピーすればいいです.
Windowsの下でcygwinと協力してNDKツールを使用することもできます.
注意:cygwinをインストールした後、インストールディレクトリの下D:cygwinhomeAdministratorのを変更します.bash_プロファイルファイル.ファイルの末尾にndk-buildのインストールパスを追加し、Fディスクのandroid-ndk-r 8 dの下にあります.次のように追加します.
ndk=/cygdrive/f/android-ndk-r8d
export NDKROOT
次のようなインタフェースを使用します.
4その後.JAva呼び出しlibled_jni.so,libled_jni.soドライバを呼び出す.apkソフトウェアアプリケーションレイヤ呼び出しドライバを完了します.
詳細なエンジニアリングコードをアップロードします.http://download.csdn.net/detail/wangben50/5155638