1. 程式人生 > >驅動開發入門級

驅動開發入門級

一,驅動開發筆記

1, 開發驅動常用的幾個命令

  1. lsmod :list moduel 把我們機器上所有的驅動打印出來,

  2. insmod:安裝驅動

  3. rmmod:刪除驅動

  4. modinfo:列印驅動資訊

  5. dmesg: 列印驅動log資訊

2, makefile模板

#ubuntu的核心原始碼樹,如果要編譯在ubuntu中安裝的模組就開啟這2個
#KERN_VER = $(shell uname -r)
#KERN_DIR = /lib/modules/$(KERN_VER)/build


# 開發板的linux核心的原始碼樹目錄
KERN_DIR = /root/driver/kernel

obj-m    += module_test.o

all:
make -C $(KERN_DIR) M=`pwd` modules

cp:
cp *.ko /root/chensong/test/driver_test

.PHONY: clean    
clean:
make -C $(KERN_DIR) M=`pwd` modules clean

3, 開發模組的資訊

module_init(chensongdev_init);
module_exit(chensongdev_exit);

// MODULE_xxx 新增模組資訊
MODULE_LICENSE("GPL"); // 許可證
MODULE_AUTHOR("chensong"); //模組作者
MODULE_DESCRIPTION("led test"); //模組介紹資訊
MODULE_ALIAS("alias chenli"); //模組別名資訊

4, 簡單helloworld

hello.c

#include <linux/init.h>
#include <linux/module.h>
MODULE_LICENSE("Dual BSD/GPL");   //核心2.6以上版本建議我們加上這個license
static int hello_init(void)                                //驅動入口
{
	printk(KERN_ALERT "Hello, world\n");
	return 0;
}
static void hello_exit(void)
{
	printk(KERN_ALERT "Goodbye, cruel world\n");
}

module_init(hello_init);
module_exit(hello_exit);
// MODULE_xxx 新增模組資訊
MODULE_LICENSE("GPL"); // 許可證
MODULE_AUTHOR("chensong"); //模組作者
MODULE_DESCRIPTION("hello wrold test"); //模組介紹資訊
MODULE_ALIAS("alias chenli"); //模組別名資訊

Makefile

KERN_VER = $(shell uname -r)  ## linux 
KERN_DIR = /lib/modules/$(KERN_VER)/build


# 開發板的linux核心的原始碼樹目錄
#KERN_DIR = /root/driver/kernel

obj-m    += hello.o

all:
        make -C $(KERN_DIR) M=`pwd` modules

cp:
        cp *.ko /root/porting_x210/rootfs/rootfs/driver_test

.PHONY: clean    
clean:
        make -C $(KERN_DIR) M=`pwd` modules clean

驅動helloworld

二, 下載linux核心程式碼分析

驅動的介面

例項

相關推薦

驅動開發入門

一,驅動開發筆記 1, 開發驅動常用的幾個命令 lsmod :list moduel 把我們機器上所有的驅動打印出來, insmod:安裝驅動 rmmod:刪除驅動 modinfo:列印驅動資訊 dmesg: 列印驅動log資訊 2, m

Web 前端開發入門學習筆記(二)

  9.盒子模型:    它講了這樣一個事實:在HTML裡,在瀏覽器渲染頁面時,所有的元素都是要佔據一定空間的,而且這個空間一定是一個矩形的。在我們的瀏覽器中絕對不出現佔據圓形、不規則圖形這樣空間的元素存在。 簡單的來說,我們可以把頁面上的所有元素都當做

Web 前端開發入門學習筆記(一)

Web前端入門級學習筆記   1.基本概念 css-cascading style sheet   2.網頁設計中HTML,CSS,JavaScript地位 HTML:內容 CSS:呈現(樣式) JavaScript:互動(頁面的動態效果)

Windows驅動開發入門

對於初學者,DbgView.exe和SRVINSTW.EXE是非常簡單有用的兩個工具,一定要裝上。前者用於檢視日誌資訊,後者用於載入驅動。 一、驅動程式設計的必要性     在傳統DOS系統下,每個應用程式都有權利讀寫硬體,讀寫I/O埠,控制系統中斷,然而到了Windo

Zookeeper.NET Client(二)【官方驅動 開發入門

首先專案結構很簡單,如圖: 接下來是Program.cs內容: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Thre

java web 入門 開發 常用頁面調試方法

文件的 數據 生效 str debugger 操作數 ron 速查 現在 這裏介紹一下Java web 入門級開發中常用的代碼調式方法; ( 僅供入門級童靴 參考) ; 工具: chrome 瀏覽器 (版本越高越好); Java web 入門級開發 主要就是兩個方

【轉】Windows驅動開發如何入門

算法 war math.h detail article stat 開發指南 自己 人類 1、http://blog.csdn.net/charlessimonyi/article/details/50904854  (2016年03月16日 14:55:36) 2、 搞W

myabtis入門03——mybatis開發dao層的兩種方法

一、先來談談SqlSession的適用範圍 通過SqlSessionFactoryBuilder建立會話工廠SqlSessionFactory。 將SqlSessionFactoryBuilder當成一個工具類使用即可,不需要使用單例管理SqlSessionFactoryBu

《5.linux驅動開發-第4部分-5.4.驅動框架入門之LED》

《5.linux驅動開發-第4部分-5.4.驅動框架入門之LED》 第一部分、章節目錄 5.4.1.何謂驅動框架 5.4.2.核心驅動框架中LED的基本情況 5.4.3.初步分析led驅動框架原始碼1 5.4.4.初步分析led驅動框架原始碼2 5.4.5.在核心中新增或去除某個驅動 5

Windows驅動開發入門篇(一)

        本文主要介紹“如何入門Windows驅動開發”和“新手需要掌握哪些知識和動手技能”,大部分是本人探索Windows驅動開發近一月時間的經驗之談。大致包括如下幾個方面: 1,開發工具、除錯工具和除錯手段; 2,Windows驅動開發框架; 3,驅動程式基本知識

前端開發----微信小程式入門教程(前篇)

前言 前段時間,憑藉著出生牛犢不怕虎的勁頭,憑藉著一點Java基礎和前端入門的知識水平,買了域名和伺服器準備搭建自己的一個技術站點,初衷是旨在打造自己成為一個T形全站工程師。後經過各種百度,各種折騰終於大概在半個月左右的時間寫好了幾個基本介面,能上傳圖片,釋出

入門--《見縫插針》遊戲開發

</pre>場景只用了一個MainScene,遊戲的介面轉換都是在層上實現的。<p></p><p></p><p>MainScene的內容:純色背景一個:<span style="white-sp

Linux 驅動開發之核心模組開發 (二)—— 核心模組編譯 Makefile 入門

一、模組的編譯  我們在前面核心編譯中驅動移植那塊,講到驅動編譯分為靜態編譯和動態編譯;靜態編譯即為將驅動直接編譯進核心,動態編譯即為將驅動編譯成模組。 而動態編譯又分為兩種: a -- 內部編譯        在核心原始碼目錄內編譯 b -- 外部編譯        在核

[ARM-LInux開發]linux裝置驅動makefile入門解析

以下內容僅作參考,能力有限,如有錯誤還請糾正。對於一個普通的linux裝置驅動模組,以下是一個經典的makefile程式碼,使用下面這個makefile可以完成大部分驅動的編譯,使用時只需要修改一下要編譯生成的驅動名稱即可。只需修改obj-m的值。ifneq ($(KERN

Android Studio3.0開發JNI流程------JNI入門

JIN——Java Native Interface的縮寫 API實現了Java和其他語言的通訊(主要是C&C++)。從Java1.1開始,JNI標準成為java平臺的一部分,它允許Java程式碼和其他語言寫的程式碼進行互動。JNI標準至少要保證

使用 Design Pattern Toolkit 進行模型驅動開發入門

引言 當大多數人想到模型驅動的開發時,首先出現在腦海中的是使用某種 UML 模型進行編碼以及從該模型生成相應的構件。然而,事情並不總是這樣的。模型存在於各種各樣的地方。模型是任何驅動產生過程或行為的構件。 模型驅動的開發具有許多目標: 減少在開發常見的構件上耗費的時間

微服務開發入門框架Spring Boot詳解(四)

前幾章把Spring Boot大概都介紹了個遍,如果各位朋友有什麼疑問和指教歡迎在評論指出。下面我將介紹如何使用Spring Boot進行企業級開發。大概會從以下幾點開始介紹。 如何使用Spring Boot進行企業開發Spring Boot與Spring Cloud(Sp

專案開發過程中的細節問題及解決方法(Vue,Css)(入門

Vue開發填坑 方法methods通用 問題描述: vue開發過程中很多時候,函式方法methods會在各個元件內共用,每個元件都寫個比較多餘。 解決方法: 1.利用CommonJS思想,單獨寫,然後每個元件利用import { function

Android開發入門的正確姿勢,你get到了嗎?

開源 如何 com 正常 它的 接收 應用 切換 角度 在進行Android開發之前,我們先了解一下Android的生態圈現狀。Android系統是開源的,任何手機廠商和開發者都有權限去修改系統源代碼,定制專屬的系統。 這就產生了一個問題,不同手機廠商之間的ROM可能無法安

Android入門編譯錯誤匯總

art can 手動 already 提示 文件夾 som 原因 兩個 1 描寫敘述: 項目常常須要引用別人的libraryproject,在選項中add進來後,點擊應用或者確定。關閉頁面。 回到代碼中卻發現無法鏈接,又一次打開properties查看,發現導入的p