驅動編程
『壹』 如何編寫驅動程序
可以啊 不過得找到硬體號以及工作的必要埠號
然後用c語言些
看看硬體通信方面的書籍對你有幫助的當然有些東西是商業機密 你不一定能拿到所有的公開信息
原理嗎就是消息響應機制
比如首先為攝像頭創建進程x
進程1希望調用進程x 利用攝像頭
進程x開放埠給進程1 進程1取得資源
進程x同時掛起(有很多演算法如 銀行家演算法)。。。。。。
是不是偏題了?
『貳』 我想學習如何編寫驅動程序(C)
開發驅動用delphi最簡單,最快速
你可以到書店去找一下《delphi底層開發大全》
裡面有很詳細的驅動開發的做法,並且不難
delphi把驅動所需的相關內容都做成介面的
使用起來比C++簡單
To樓上的,微軟那個驅動製作工具叫Microsoft Driver Creator
不過現在好像已經下載不到了。。
『叄』 學完驅動編程(開發)是不是就等於學習內核編程了
以linux為例。內核實際上由大量的模塊構成。你學了驅動開發,實際上也可以說學習內核編程了
『肆』 什麼是windows驅動編程
windows驅動編程,這個有很多,多數硬體驅動,USB驅動,pci
ddr驅動等等!是基於win32的編程。根據CPU指令,進行windows系統與硬體交互的開發!這個要了解很多!我也不大清楚。
反正需要了解的知識大概是匯編,C語言,電路基礎,以及了解某款CPU的指令集!還有了解windows內核等等吧!
『伍』 如何編寫驅動程序
代碼:
#include<linux/mole.h>
#include<linux/kernel.h>
#include<asm/io.h>
#include<linux/miscdevice.h>
#include<linux/fs.h>
#include<asm/uaccess.h>
//流水燈代碼
#define GPM4CON 0x110002e0
#define GPM4DAT 0x110002e4
static unsigned long*ledcon=NULL;
static unsigned long*leddat=NULL;
//自定義write文件操作(不自定義的話,內核有默認的一套文件操作函數)
static ssize_t test_write(struct file*filp,const char __user*buff,size_t count,loff_t*offset)
{
int value=0;
int ret=0;
ret=_from_user(&value,buff,4);
//底層驅動只定義基本操作動作,不定義功能
if(value==1)
{
*leddat|=0x0f;
*leddat&=0xfe;
}
if(value==2)
{
*leddat|=0x0f;
*leddat&=0xfd;
}
if(value==3)
{
*leddat|=0x0f;
*leddat&=0xfb;
}
if(value==4)
{
*leddat|=0x0f;
*leddat&=0xf7;
}
return 0;
}
//文件操作結構體初始化
static struct file_operations g_tfops={
.owner=THIS_MODULE,
.write=test_write,
};
//雜設備信息結構體初始化
static struct miscdevice g_tmisc={
.minor=MISC_DYNAMIC_MINOR,
.name="test_led",
.fops=&g_tfops,
};
//驅動入口函數雜設備初始化
static int __init test_misc_init(void)
{
//IO地址空間映射到內核的虛擬地址空間
ledcon=ioremap(GPM4CON,4);
leddat=ioremap(GPM4DAT,4);
//初始化led
*ledcon&=0xffff0000;
*ledcon|=0x00001111;
*leddat|=0x0f;
//雜設備注冊函數
misc_register(&g_tmisc);
return 0;
}
//驅動出口函數
static void __exit test_misc_exit(void)
{
//釋放地址映射
iounmap(ledcon);
iounmap(leddat);
}
//指定模塊的出入口函數
mole_init(test_misc_init);
mole_exit(test_misc_exit);
MODULE_LICENSE("GPL");
(5)驅動編程擴展閱讀:
include用法:
#include命令預處理命令的一種,預處理命令可以將別的源代碼內容插入到所指定的位置;可以標識出只有在特定條件下才會被編譯的某一段程序代碼;可以定義類似標識符功能的宏,在編譯時,預處理器會用別的文本取代該宏。
插入頭文件的內容
#include命令告訴預處理器將指定頭文件的內容插入到預處理器命令的相應位置。有兩種方式可以指定插入頭文件:
1、#include<文件名>
2、#include"文件名"
如果需要包含標准庫頭文件或者實現版本所提供的頭文件,應該使用第一種格式。如下例所示:
#include<math.h>//一些數學函數的原型,以及相關的類型和宏
如果需要包含針對程序所開發的源文件,則應該使用第二種格式。
採用#include命令所插入的文件,通常文件擴展名是.h,文件包括函數原型、宏定義和類型定義。只要使用#include命令,這些定義就可被任何源文件使用。如下例所示:
#include"myproject.h"//用在當前項目中的函數原型、類型定義和宏
你可以在#include命令中使用宏。如果使用宏,該宏的取代結果必須確保生成正確的#include命令。例1展示了這樣的#include命令。
【例1】在#include命令中的宏
#ifdef _DEBUG_
#define MY_HEADER"myProject_dbg.h"
#else
#define MY_HEADER"myProject.h"
#endif
#include MY_HEADER
當上述程序代碼進入預處理時,如果_DEBUG_宏已被定義,那麼預處理器會插入myProject_dbg.h的內容;如果還沒定義,則插入myProject.h的內容。
『陸』 Windows驅動編程和Linux驅動編程 區別大嗎
原理是差不多的,但是所用的函數是不同的.一般都是用的c語言和少部分匯編
不過學驅動編程重要的不是編程而是理解操作系統的內核原理。當你理解了內核的原理剩下的只是學用那些函數而已。
你可以去看看<linux內核源代碼情景分析>和<windows內核情景分析>
如果你只是想寫幾個驅動來玩玩的,你只以只看看<windows驅動開發技術詳解>
如果你想成為高手那麼內核原理的書是必看的。
『柒』 驅動程序怎麼編寫
要看是什麼操作系統,還要先了解底層介面。
『捌』 VC驅動編程
推薦幾本
《天書夜讀-從匯編語言到windows內核編程》
《寒江獨釣-windows內核安全編程》
《Windows驅動開發技術詳解》
網上都有pdf版本的,你可以到verycd上或者其他地方搜索的到下載地址
『玖』 C語言如何編寫驅動
這問題問的,你想直接拿C語言寫驅動這顯然是完成不了的,你使用的是什麼環境?Linux/Windows這些區別好大的,驅動光C語言也是完成不了的,必須還得有一定的匯編語言知識。
『拾』 如何編程安裝驅動程序
這個問題可能大家都知道,但是認識可能不是很深刻,我也是自己寫過一個驅動後才明白。驅動,就是屏蔽到底層設備的細節,比如,鍵盤驅動程序,QT在打開鍵盤的設備節點的時候,它不知道系統的鍵盤是什麼,是GPIO接的,是I2C匯流排接的,它都不知道,它所做的就是read,如果有按鍵,那麼就能讀出鍵值,如果沒有sleep啊。應用程序就只能做到這里了,剩下的都是由驅動完成了。這就是驅動的任務。
上邊說的可能大家都明白,這些還是經常被忽略的。
2 驅動的工作流程。
3 驅動的編寫方法
我覺得寫驅動需要很多驅動以外的知識,我是學計算機的,直到我寫驅動程序後,我才明白了很多計算機體系結構,操作系統和組成原理講的東西。
然後再去看看linux device driver可能會好點。
不過今天多說一句,如果現在有計算機系的學生想做這個,我很負責的說,不要做這個,如果想做一個合格的計算機系的研究生,就要去做人工智慧,模式識別,演算法復雜度,機器學習,其它的都是沒有什麼意義的。寫一個驅動,移植一個os,上了兩年學,學到的就是這些,那還不如去工作,工作兩年絕對可以學到這些多多的東西。但是工作後是沒有辦法學習那些理論性的東西,那些對你今後十年都影響的東西。