1. 程式人生 > >嵌入式Linux驅動開發案例流程--LED驅動

嵌入式Linux驅動開發案例流程--LED驅動

本文主要是以一個最簡單的LED驅動開發流程,來窺探一下Linux驅動開發為何物。

基本流程:

1.編寫驅動檔案xxxx.c

這個檔案的主要作用是對裝置硬體初始化,主要是xxx_init(),其中也包括裝置的註冊。

        對file_operations結構體進行初始化,這個初始化是核心,其實是對open.write.read等函式找對映函式。

各種對映函式的編寫,例如xxx_open(),xxxx_write(),xxx_read()等。

2.驅動檔案編寫完成後,將該檔案放入到"核心"中,路徑為linux-2.6.xxx/driver/char(根據裝置型別不同,選擇字元型或塊型)。本例中顯然是字元型裝置。

3.在/drivers/char/Makefile中增加一行:

obj-m  += xxxx.o    (xxxx就是流程1中的驅動檔名)

4.在核心目錄下執行“make modules”命令,就可以在/drivers/char 下生成xxx.ko

5.將xxx.ko下載到開發板裝置的/lib/modules/2.6.xxx 目錄下。

6.執行“modprobe xxx”,就可以將該驅動模組裝載到開發板的Linux核心中。如果想要解除安裝該驅動模組,可以執行命令“rmmod xxx”即可。

7.使用命令mknod在開發板中建立裝置檔案,這一點尤為重要,這個相當於為驅動檔案建立了一個“控制代碼”或者“路徑”,這樣應用程式想要使用該驅動時,需要用open開啟對應的裝置,open中的路徑就是該“控制代碼”。

命令:mknod   Name   {b | c}    Major  Minor ,其中Name為裝置名稱,b或c為裝置型別,Major為主裝置號,Minor為次裝置號。例如:mknod  /dev/leds   c   231   0

8.至此,驅動已經開發完成,如果想要使用驅動,則需要開發應用程式,比如test.c,在test中主要是要開啟對應的裝置,然後使用對應的裝置。

命令:open(constchar*pathname,intflags); 從名稱就可以看出pathname為裝置路徑,intflags為開啟型別。接著流程7,進行舉例為:open("/dev/leds",0);

相關推薦

嵌入式Linux驅動開發案例流程--LED驅動

本文主要是以一個最簡單的LED驅動開發流程,來窺探一下Linux驅動開發為何物。 基本流程: 1.編寫驅動檔案xxxx.c 這個檔案的主要作用是對裝置硬體初始化,主要是xxx_init(),其中也包括

linux驅動開發一般流程

首先,我們要考慮到作為驅動工程師要做的是拜託微控制器開發的思路,在單板開發(沒有OS)過程,裝置的驅動介面直接交給了上層,驅動和應用互為平等。在有OS的系統中,驅動獨立於硬體平臺之外,應用工程師通過虛

linux spi驅動開發學習(四)-----spi驅動程式完整流程分析

所有的應用程式使用dev/目錄下建立的裝置,這些字元裝置的操作函式集在檔案spidev.c中實現。 點選(此處)摺疊或開啟 static const struct file_operations spidev_fops = {     .owner =    THIS

嵌入式Linux裝置驅動開發之:按鍵驅動程式例項

11.6  按鍵驅動程式例項 11.6.1  按鍵工作原理 高電平和低電平相接怎麼會變成低電平呢 就像你把電源正極的負極相連一樣會把電壓拉低。大電流會從高電平引腳流向低電平引腳,把高電平引腳拉低。 LED和蜂鳴器是最簡單的GPIO的應用,都不需要任何外部

Linux驅動開發(7)——驅動模組傳參

標頭檔案在include/linux/moduleparam.h 傳遞單個引數:module_param(name,type,perm) - name:模組引數的名稱 - type: 模組引數的資料型別(支援int long short uint ulong ushort型

Linux驅動開發(4)——驅動註冊

結構體platform_driver struct platform_driver { int (*probe)(struct platform_device *);//初始化 int (*remove)(struct platform_device

linux 核心模組程式設計之LED驅動程式(六)

我使用的是tiny6410的核心板,板子如下,淘寶可以買到 為了不與板子上的任何驅動發生IO衝突,我使用CON1那一排沒用到的IO口,引腳如下   LED1 LED2 LED3 LED4

⑳tiny4412 Linux驅動開發之MMC子系統驅動程式

本次我們來說一下SDIO子系統的控制器的開發部分,這部分也是和硬體平臺相關的,在說這個之前,我們先來了解一下相關硬體的基礎知識和概念. MMC MMC全稱MultiMedia Card,由西門子公司和SanDisk公司1997年推出的多媒體記憶卡標準。MMC卡尺寸為32mm

嵌入式Linux系統開發環境搭建流程

宿主機:Host ,嵌入式Linux核心編譯,應用程式編譯的平臺,由Linux伺服器承擔 工作站:用以支援小組專案開發,可選擇Windows或Linux平臺(個人單獨開發時,為節省成本可與宿主機為同一臺計算機) 環境搭建流程: 1、將目標板通過串列埠與工作站進行物理連線

嵌入式Linux中基於 Qt/Embeded觸控式螢幕驅動的設計

摘要:本文主要介紹了在嵌入式 Linux 系統下基於 Qt/Embeded 的觸控式螢幕驅動的設計,通過對 Linux 裝置 驅動和Qt/Embedded裝置驅動介面的工作原理和機制介紹,並結合大量原始碼進行分析,提出了基於Qt/Embeded 的觸控式螢幕驅動的開發方案。

嵌入式linux開發流程以及linux應用層內容

嵌入式linux開發流程:1.搭建前期的開發環境,例如搭建linux主機環境,交叉編譯器的安裝,還有一些常用的開發輔助軟體如source insight等等。2.學習對硬體的直接操作,這裡和微控制器操作類似,我們需要檢視原理圖還有資料手冊對相應的暫存器進行操作,實現功能。這裡

嵌入式Linux裸機開發(一)——點亮Led

嵌入式Linux裸機開發(一)——點亮Led開發板:友善之臂smart210一、電路圖查閱1、底板電路圖查閱開發板底板電路圖,查閱LED相關部分LED電路工作原理:LED的正極接3.3V,負極接地時導通

基於嵌入式Linux/Qt 開發RFID智能倉儲指紋管理系統

基於嵌入式Linux/Qt 開發RFID智能倉儲指紋管理系統 基於嵌入式Linux/Qt 開發RFID智能倉儲指紋管理系統 Qt 是一個用於桌面系統和嵌入式開發的跨平臺應用程序框架。它包括一個直觀的API和一個豐富的類庫,以及用於GUI開發和國際化的集成工具,另外它支持Java

嵌入式Linux應用開發完全手冊(二)GPIO

5 GPIO介面 5.1 GPIO硬體介面介紹 GPIO General Purpose I/O Port,通用輸入、輸出埠。簡單說就是這個埠可以配成輸入的(讀電平訊號),也可以配成輸出的(設定電平訊號) 無論是輸入還是輸出都是通過暫存器來實現的

嵌入式Linux應用開發完全手冊(一)嵌入式Linux基礎知識

嵌入式Linux應用開發完全手冊 3 嵌入式Linux基礎知識 3.1 交叉編譯工具 編譯工具鏈,編譯工作由幾個步驟完成,分別用到了不同的工具 PC端應用 gcc ld objcopy

嵌入式Linux應用開發完全手冊(四)UART

11. 通用非同步收發器 UART 11.1 UART原理,部件使用方法 11.1.1UART原理 UART是Universal Asynchronous Receiver Transmitter的縮寫,即通用非同步收發器 UART用來傳輸序列資料: - 傳送時,CPU將

嵌入式Linux應用開發完全手冊(三)中斷

9 中斷體系結構 9.1 ARM中斷體系 ARM CPU工作模式和狀態 工作模式,7種,1種使用者模式,其他6選中特權模式 usr 使用者模式,ARM處理器正常的工作模式 fiq 快速中斷模式,高速資料傳輸或者通道處理 irq

嵌入式linux應用開發完全手冊(二) 第六章 儲存控制器

第二篇 ARM9 嵌入式系統基礎例項篇 第五章 GPIO介面 5.1 GPIO硬體介紹 GPIO(General Purpose I/O Ports)意思為通用輸入/輸出埠,通俗的說,就是一些引腳,可以通過它們輸出高低電平或者通過它們讀入引腳的狀態——是高電平還是低電平。 5.1.1 通

嵌入式linux應用開發完全手冊(一)

第一篇 嵌入式Linux開發環境構建 1.1.2 嵌入式發展 SCM(Single Chip Microcomputer)微控制器; MCU(Micro Controller Unit)微控制器; SoC(System on a Chip):系統級晶片,在一個晶片上由於廣泛使用

嵌入式Linux應用開發學習記錄(程式設計基礎)

C/C++檔案 ->可執行檔案需4步: 1.預處理:處理include、巨集定義、條件編譯,輸出 .i 檔案 2.編譯:把C翻譯成彙編 3.彙編:彙編翻譯成機器程式碼(OBJ檔案) 4.連線:將上面生成的OBJ和庫的OBJ連線,生產可執行檔案 編譯和執行: