全志V3S開發板驅動示例(linux demo驅動開發)
1。前言
本文描述了基於全志V3S開發板的
簡單驅動程式
和
測試應用程式
的設計流程。我們設計的驅動程式和測試程式極其簡單,適合初學者上手學習。
軟體執行的
硬體環境
是基於V3S開發板中的全志V3S處理器,該處理器集成了一個1。2GHz工作主頻的單ARM CortexTM-A7 核,晶片內部集成了64MB DRAM 儲存器。
軟體設計是基於
linux3.4核心
。
2。設計流程概述
設計的步驟依次是:
步驟一
:編寫一個demo_driver。c的驅動程式。
步驟二
:編寫makefile檔案。
步驟三
:編寫一個demo_app。c的應用程式。
步驟四
:在V3S開發板中安裝demo_driver驅動程式,並測試demo_app應用程式。
linux系統是一個分層結構,我們設計的demo_driver位於核心中的驅動部分,demo_app位於使用者級。
3。編寫驅動程式
編寫一個demo_driver。c的驅動程式,驅動程式原始碼如下:
/************************************************************************************************************ demo_driver* (c) Copyright 2021-2031* All Rights Reserved** @File : * @By : liwei* @Version : V0。01* ***********************************************************************************************************//**********************************************************************************************************Includes **********************************************************************************************************/#include
編譯驅動程式依賴linux核心原始碼環境,需要把驅動C檔案放在linux原始碼目錄中,透過編譯linux核心的方式得到驅動ko檔案。
為了得到驅動ko,我們在easyboard/corelinux/v3ssdk/linux-3。4/drivers/char目錄下面
建立一個demo_driver的資料夾
,並把demo_driver。c程式複製到demo_driver的資料夾中。
4。編寫makefile
我們透過編譯linux核心的方式得到驅動ko檔案,為了在編譯核心時得到相應的驅動,我們需要在linux-3。4核心程式碼中
增加和修改Makefile檔案
(Makefile的作用指定了工程編譯的方法和步驟)。
首先我們
修改easyboard/corelinux/v3ssdk/linux-3.4/drivers/char目錄下Makefile檔案
,在Makefile檔案內容最末行加入一行程式碼:
obj += demo_driver/
這句程式碼的意思是:編譯核心時,子目錄demo_driver/下的檔案也將進行編譯。
我們在easyboard/corelinux/v3ssdk/linux-3。4/drivers/char/demo_driver中
建立一個Makefile檔案
,同時在Makefile檔案中加入一行程式碼:
obj-m += demo_driver。o
這句程式碼的意思是:編譯當前目錄中的demo_driver。c檔案,輸出一個demo_driver。ko的驅動檔案。
準備好demo_driver。c檔案和Makefile檔案後,我們
執行編譯核心指令
。
。/linux_docker_build。sh
核心編譯需要等待10分鐘左右。
經過上述一波操作,我們得到了
demo_driver.ko的驅動檔案
。
到目前為止我們的程式碼設計工作
完成了50%
,如下圖所示:
5。編寫應用程式
編寫一個demo_app。c的應用程式,程式原始碼如下:
/************************************************************************************************************ demo_driver* (c) Copyright 2021-2031* All Rights Reserved** @File : * @By : liwei* @Version : V0。01* ***********************************************************************************************************//**********************************************************************************************************Includes **********************************************************************************************************/#include
將應用程式原始碼放在虛擬機器的任意一個目錄中如:/home/easyboard/work/demo
然後我們在終端中進入/home/easyboard/work/demo目錄,在該目錄下執行如下
gcc編譯指令
:
arm-buildroot-linux-gnueabihf-gcc -o demo_app demo_app。c
於是我們得到一個
demo_app可執行檔案
。
在虛擬機器中我們利用交叉編譯工具,直接編譯即可得到V3S目標板的可執行檔案。
到目前為止我們的程式碼設計工作
完成100%
,如下圖所示:
6。安裝驅動及執行應用程式
經過上述操作,我們得到了
demo_driver.ko和demo_app兩個文
件,我們使用SecureCRTPortable工具
將這兩個檔案傳輸到V3S開發板中
。(傳輸手段不限,用自己熟悉的方法將檔案複製到開發板中即可)
完成檔案傳輸後,我們需要先安裝我們編譯的驅動ko檔案,然後執行測試程式,操作流程如下:
操作一
:執行安裝驅動指令:
insmod demo_driver。ko
操作二
:執行建立檔案節點指令:
mknod /dev/demo_driver c 188 0
188的是裝置號
,我們在設計的驅動C檔案中有如下定義:
/**********************************************************************************************************Define**********************************************************************************************************/#define DRIVER_MAJOR 188#define DEVICE_NAME “demo_driver”
操作三(可選)
:執行檢視驅動裝置指令:
ls /dev
此時我們看到Linux核心中已經包含了我們驅動裝置,如下圖所示:
操作四
:執行修改demo_app檔案許可權指令:
chmod 777 demo_app
操作五
:執行執行demo_app指令:
。/demo_app
demo_app執行結果如下:
注意:裝置重啟後,需要重新載入驅動!
7。總結
編譯驅動程式依賴linux核心原始碼環境
,我們設計的驅動檔案放需要在linux原始碼目錄中,同時編寫Makefile檔案,最終透過編譯核心的方式得到驅動ko檔案。
在虛擬機器中使用
交叉編譯工具
,可以編譯得到可執行檔案。
創作不易希望朋友們點贊,轉發,評論,關注。您的點贊,轉發,評論,關注將是我持續更新的動力作者:李巍Github:liyinuoman2017CSDN:liyinuo2017今日頭條:程式猿李巍