Linux驅動開發: Ubuntu(PC機)系統上編譯驅動並載入測試
一、環境介紹
作業系統: ubuntu18.04 64位
二、編寫Makefile(PC機)
先輸入uname -r命令檢視當前系統的版本.
root@wbyq:/mnt/hgfs/linux-share-dir/linux_c/usb_dev_ubuntu# uname -r
5.3.0-40-generic
檢視系統核心的路徑是否存在:
root@wbyq:/mnt/hgfs/linux-share-dir/linux_c/usb_dev_ubuntu# ls /usr/src/
linux-headers-5.3.0-40 linux-headers-5.4.0-53-generic linux-hwe-5.4-headers-5.4.0-47
linux-headers-5.3.0-40-generic linux-hwe-5.4-headers-5.4.0-42 linux-hwe-5.4-headers-5.4.0-48
linux-headers-5.4.0-48-generic linux-hwe-5.4-headers-5.4.0-45 linux-hwe-5.4-headers-5.4.0-53
根據當前系統的版本,確定對應的路徑: /usr/src/linux-headers-5.3.0-40
root@wbyq:/mnt/hgfs/linux-share-dir/linux_c/usb_dev_ubuntu# ls /usr/src/
linux-headers-5.3.0-40 linux-headers-5.4.0-53-generic linux-hwe-5.4-headers-5.4.0-47
linux-headers-5.3.0-40-generic linux-hwe-5.4-headers-5.4.0-42 linux-hwe-5.4-headers-5.4.0-48
linux-headers-5.4.0-48-generic linux-hwe-5.4-headers-5.4.0-45 linux-hwe-5.4-headers-5.4.0-53
root@wbyq:/mnt/hgfs/linux-share-dir/linux_c/usb_dev_ubuntu# ls /usr/src/linux-headers-5.3.0-40
arch certs Documentation fs init Kbuild kernel Makefile net scripts sound ubuntu virt
block crypto drivers include ipc Kconfig lib mm samples security tools usr
完整的編寫Makefile如下:
Linux_ADD=/usr/src/linux-headers-5.3.0-40-generic
app_dev:
make -C $(Linux_ADD) M=`pwd` modules clean
make -C $(Linux_ADD) M=`pwd` modules
gcc spectrometer_app.c -o app
obj-m +=spectrometer_usb_drv.o
編譯安裝測試:
root@wbyq:/mnt/hgfs/linux-share-dir/linux_c/usb_dev_ubuntu# insmod spectrometer_usb_drv.ko
root@wbyq:/mnt/hgfs/linux-share-dir/linux_c/usb_dev_ubuntu# modinfo spectrometer_usb_drv.ko
filename: /mnt/hgfs/linux-share-dir/linux_c/usb_dev_ubuntu/spectrometer_usb_drv.ko
license: GPL
author: xiaolong
srcversion: 40F0CA1A1C1E3BA787F1B57
alias: usb:v0661p294Bd*dc*dsc*dp*ic*isc*ip*in*
alias: usb:v148Fp5370d*dc*dsc*dp*ic*isc*ip*in*
depends:
retpoline: Y
name: spectrometer_usb_drv
vermagic: 5.3.0-40-generic SMP mod_unload
root@wbyq:/mnt/hgfs/linux-share-dir/linux_c/usb_dev_ubuntu# rmmod spectrometer_usb_drv.ko
三、順便說下嵌入式Linux驅動Makefile編譯方式
Linux_ADD=/home/wbyq/work/linux-3.5/linux-3.5
app_dev:
make -C $(Linux_ADD) M=`pwd` modules clean
make -C $(Linux_ADD) M=`pwd` modules
cp *.ko /home/wbyq/project/ -fv
arm-linux-gcc spectrometer_app.c -o app
cp app /home/wbyq/project/ -fv
obj-m +=spectrometer_usb_drv.o
相關文章
- Linux驅動開發筆記(三):基於ubuntu的驅動、makefile編寫以及編譯載入流程Linux筆記Ubuntu編譯
- Linux驅動開發筆記(一):helloworld驅動原始碼編寫、makefile編寫以及驅動編譯Linux筆記原始碼編譯
- 談“測試驅動的開發”
- Linux驅動模組載入方法和如何判斷Linux驅動是否載入成功Linux
- Fitness function-driven development(測試驅動開發) 翻譯Functiondev
- 載入驅動
- TDD(測試驅動開發)死了嗎?
- 什麼是測試驅動開發
- 驅動開發目標測試機器設定
- Qt編譯MySQL驅動QT編譯MySql
- linux裝置驅動編寫入門Linux
- Laravel 測試驅動開發 -- 正向單元測試Laravel
- 驅動開發入門
- Linux驅動開發筆記(四):裝置驅動介紹、熟悉雜項裝置驅動和ubuntu開發雜項裝置DemoLinux筆記Ubuntu
- 測試驅動開發(TDD)例項演示
- 教程|Debian系統上移植USBWIFI RTL8192EU驅動並設定開機自啟動WiFi
- 04_Linux下把驅動編譯進核心Linux編譯
- golang驅動系統印表機Golang
- Linux驅動實踐:帶你一步一步編譯核心驅動程式Linux編譯
- linux驅動之LED驅動Linux
- 測試驅動開發(TDD)實戰心得 - DeniMoka
- 【YashanDB資料庫】Ubuntu系統載入Yashan C驅動後無法使用PHP資料庫UbuntuPHP
- golang 表格驅動測試Golang
- 【linux】驅動-11-gpio子系統Linux
- 【linux】驅動-10-pinctrl子系統Linux
- 驅動開發:配置Visual Studio驅動開發環境開發環境
- 測試驅動開發(TDD)總結——原理篇
- 變異測試是測試驅動開發(TDD)的演變
- Linux驅動實踐:如何編寫【 GPIO 】裝置的驅動程式?Linux
- Windows10系統載入ahci驅動程式的方法Windows
- Linux RN6752 驅動編寫Linux
- 驅動開發:探索DRIVER_OBJECT驅動物件Object物件
- 載入驅動三種execute
- Helloworld 驅動模組載入
- Centos7.3編譯RAID驅動(一)CentOS編譯AI
- golang 表格驅動測試案例Golang
- 步進電機Linux驅動Linux
- 使用Spring Boot REST API進行測試驅動開發Spring BootRESTAPI