一 。 編譯器 : 不同版本的編譯器不一樣,使用的時候得注意 ,不一定高版本的支援的功能就越多或者相容的越多
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...