驅動開發之 LED(for mini2440)

2021-09-28 06:09:01 字數 3165 閱讀 4237

開發環境: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...