平台:s5pv210
雜項裝置的好處:
有了字元型裝置後,為什麼要用雜項裝置?
1.節省主裝置號,所有雜項裝置的主裝置號都是10
2.雜項裝置開發起來比字元型裝置簡單
開發步驟:
1.定義1個雜項裝置
2.定義雜項裝置的檔案操作集
3.申請物理記憶體區
4.獲取相應的虛擬位址
5.註冊混雜裝置
6.示例**
1.定義雜項裝置
static struct miscdevice led_misc = ;
如上**:其中.minor代表動態生成次裝置號,不用改。
.name表示這個混雜裝置檔案結點的名字,使用者程式用open在 /dev 目錄下開啟檔案的就是 .name 的值。
.fops代表雜項裝置的檔案操作集
2.定義檔案操作集
static struct file_operations fops =
;
檔案操作集表示了雜項裝置用了哪些系統呼叫,如上**就是用了 open 和 write。
第乙個引數不用變,.owner一定寫this_module,用於初始化。
3.申請物理記憶體區
static struct resource *res = null;
res = request_mem_region(0xe0200280,8,"led");
上面表示,控制led的實體地址為0xe0200280開始,8個位元組,並把這段記憶體起名為led
4.獲取相應虛擬位址。
作業系統操作的都是虛擬位址。
static unsigned int va = null;
va = ioremap(0xe02000a0,8);
va就是物理位址對映的虛擬位址的起始位址。
5.註冊雜項裝置
int ret;
ret = misc_register(&led_misc);
if(ret < 0)
misc_register()的引數就是第一步定義的雜項裝置變數。
6.示例**(led驅動)
#include #include #include #include #include #include #include #include #include static struct resource* res = null;
static unsigned int *gpj2con_va = null;
static unsigned int *gpj2dat_va = null;
static char wbuf[1];
static ssize_t misc_write(struct file *f, const char __user*buf,
size_t len, loff_t *t)
if(wbuf[0] == '1')
return 0;
}/*2.定義檔案操作集*/
static struct file_operations fops=;
/*1.定義misc雜項裝置變數*/
static struct miscdevice misc_led=;
static int __init misc_init(void)
/*4.獲取虛擬位址*/
gpj2con_va = ioremap(0xe0200280,8);
if(gpj2con_va == null)
gpj2dat_va = gpj2con_va + 1;
/*5註冊雜項裝置*/
ret = misc_register(&misc_led);
if(ret<0)
printk("init completed\n");
return 0;
failed_register:
iounmap(gpj2con_va);
failed_ioremap:
release_mem_region(0xe0200280,8);
failed_request_mem:
return -1;
}static void __exit misc_exit(void)
module_init(misc_init);
module_exit(misc_exit);
module_license("gpl");
使用者程式測試**:
#include #include int main()
while(1)
return 0;
}
HTML5開發之獲取裝置的地理座標
近期一段時間開始學一下html5,發現裡面有好多的知識還是蠻新穎的。所以整理了一下自己練習過的demo給大家分享下,以下的 是通過js介面獲取當前的地理座標。1 這裡時與原來html檔案的差別 charset utf 8 2 這裡時與原來html檔案的差別 html5 demo title head...
HTML5開發之獲取裝置的地理座標
近期一段時間開始學一下html5,發現裡面有好多的知識還是蠻新穎的。所以整理了一下自己練習過的demo給大家分享下,以下的 是通過js介面獲取當前的地理座標。1 這裡時與原來html檔案的差別 charset utf 8 2 這裡時與原來html檔案的差別 html5 demo title head...
ARM嵌入式系統開發之接收函式的實現
接收函式的實現 接收函式主要完成幾個方面的工作 一是檢查接收到的資料報是否正確 二是根據資料報長度在核心空間為資料報申請乙個sk buff 三是把資料報複製到sk buff,填寫相關域段和統計資訊並且把sk buff插入相應的輸入佇列 四是釋放資料報占用的晶元bufffer。下面就結合 片段講述其功...