2440的驅動的研究

2022-05-04 21:24:19 字數 920 閱讀 4342

一 。 編譯器 : 不同版本的編譯器不一樣,使用的時候得注意 ,不一定高版本的支援的功能就越多或者相容的越多

arm-linux-gcc-4.3.2.tar.bz2 用於編譯u-boot2012.04.01和linux3.4.2

arm-linux-gcc-3.4.5-glibc-2.3.6.tar.bz2用於編譯u-boot1.16和linux2.6.22.6

二  、以下是模組的makefile檔案

kern_dir = /work/system/linux-2.6.22.6

all:

make -c $(kern_dir) m=`pwd` modules

clean:

make -c $(kern_dir) m=`pwd` modules clean

rm -rf modules.order

obj-m += buttons.o

其中    kern_dir = /work/system/linux-2.6.22.6  是核心的路徑

注意 :1、這個核心是開發板的核心、

三、驅動的程式的理解:

1、init ,exit    這兩個是引導程式和解除安裝程式,是在系統應用程式(呼叫該驅動的程式)執行之前進行操作的,因為驅動的使用套路基本是檔案操作,在讀寫檔案之前沒有檔案怎麼可以。

2、應用程式呼叫的時候驅動程式使用   open  close 等等操作驅動,所以驅動程式中有與之對應的程式

3、在作業系統上程式設計,必須使用重對映,這也就是stm32不能執行linux的乙個最大原因之一

4、應用程式不能直接進入核心,所以不能直接操作驅動,只能通過copy_to_user 和 copy_from_user 這兩個函式,只能出現在驅動中,因為驅動是主動方, 個人猜測 : 驅動可以接收應用程式傳來的資料,也可以傳送。但是當遇到錯誤的時候,驅動可以不搭理應用程式,保護自己。

tq2440 的dma裸機驅動

dma是一種提高cpu效率的工具。如果讓cpu去負責搬運資料,效率是十分低下的,因為在這個過程中,cpu就只能做這麼一件事。因此dma就應運而生。只要告訴dma,要搬運的資料源位址,以及要搬運到 去的位址,何種方式,使能它,dma就會獲取匯流排控制權,自動地搬運資料,從而解放cpu,提高效率。tq2...

Binder驅動研究

好久沒寫過部落格了,也沒怎麼研究過原始碼,偶爾看到別人的部落格都是系列研究,自愧不如啊,所以也下下來android原始碼開始看了,參考網上的講解,結合原始碼。希望這樣記錄下自己的閱讀歷程,也不枉虛度時光了。先從android的binder驅動說起吧,以前也不懂linux驅動,有說錯的地方敬請諒解,歡...

fl2440按鍵中斷驅動

include include include include include include include include include include include copy to user include 核心時鐘 include atomic t include s3c2410 gpf...