開發環境:ubuntu16.04 64bit
linux核心版本:linux-2.6.32.2
在/linux-2.6.32.2/drivers/char目錄下,編寫mini2440_leds.c,**如下:
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define device_name "leds"
static
unsigned
long led_table =
;static
unsigned
int led_cfg_table =
;static
intsbc2440_leds_ioctl
(struct inode *inode,
struct file *file,
unsigned
int cmd,
unsigned
long arg)
s3c2410_gpio_setpin
(led_table[arg]
,!cmd)
;return0;
default
:return
-einval;}}
static
struct file_operations dev_fops =
;static
struct miscdevice misc =
;static
int __init dev_init
(void
) ret =
misc_register
(&misc)
; printk (device_name"\tinitialized\n");
return ret;
}static
void __exit dev_exit
(void
)module_init
(dev_init)
;module_exit
(dev_exit)
;module_license
("gpl");
module_author
("friendlyarm inc."
);
config mini2440_leds
tristate "mini2440 leds support"
depends on mach_mini2440
default m if mach_mini2440
help
mini2440 module sample.
obj-$(config_mini2440_leds)
+= mini2440_leds.o
在 linux-2.6.32.2 目錄位置執行一下 make menuconfig在 devicedrivers -> character devices 選單中看到剛才所新增的選項了,我們選擇選項意為把該驅動編譯成模組。
到 linux-2.6.32.2 源**根目錄位置,執行 make modules。
編譯成功在mini2440_leds.c同一目錄下可以看到mini2440_leds.ko檔案,此檔案即是我們需要的模組。
u盤安裝:
linux核心配置對u盤的支援及掛載
將mini2440_leds.ko模組拷貝到u盤,插入開發板。
掛載驅動:
解除安裝驅動:
#rmmod mini2440_leds
led_kz.c原始碼:
#include
#include
#include
#include
int main(int argc, char **ar**)
/*開啟/dev/leds 裝置檔案*/
fd = open(
"/dev/leds0", 0);if
(fd < 0)
if(fd < 0)
/*通過系統呼叫 ioctl 和輸入的引數控制 led*/
ioctl(fd, on, led_no)
; //通過呼叫ioctl把引數傳送給驅動
/*關閉裝置控制代碼*/
close(fd)
;return 0;
}
編譯成可執行檔案:
在led_kz.c目錄下執行下面命令
#arm-linux-gcc -o led_kz led_kz.c
把程式拷貝到開發板執行:
關閉led4 3指定led,0關閉led
[root@h3-studio=w]
#./led_kz 3 0
開啟led4 3指定led,1開啟led
觀察開發板,led可以正常控制。
Linux驅動開發之DRM驅動
qq群 852283276 b站 主頁 drm 驅動程式開發 開篇 drm 驅動程式開發 vkms 最簡單的drm應用程式 single buffer drm 驅動是如何建立 fb device 的 linux中的drm 介紹 linux graphic dri 顯示子系統 介紹1 xilinx d...
驅動開發之模組
模組 可以在執行時插入到核心中的 叫做模組 模組和應用程式的區別 應用程式 模組 1.執行空間 使用者空間 核心空間 2.入口函式 main 載入函式 3.庫 usr lib 核心原始碼庫 4.資源釋放 可以釋放 必須釋放 5.段錯誤的危害 危害小 危害大 模組三要素 模組許可證宣告 必須 modu...
linux裝置驅動之PCIE驅動開發
pcie pci express 是intel提出的新一代的匯流排介面,目前普及的pcie 3.0的傳輸速率為8gt s,下一代pcie 4.0將翻番為16gt s,因為傳輸速率快廣泛應用於資料中心 雲計算 人工智慧 機器學習 視覺計算 顯示卡 儲存和網路等領域。pcie插槽是可以向下相容的,比如p...