1. 程式人生 > >1-Linux驅動基本框架結構

1-Linux驅動基本框架結構

//第一步,核心程式設計使用的標頭檔案一律是核心原始碼中的標頭檔案,不是標準C庫的標頭檔案,所以在編譯驅動時,要利用核心原始碼/opt/kernel/include
#include <linux/init.h>
#include <linux/module.h>

//第二步,編寫驅動的入口函式和出口函式
static int helloworld_init(void)
{
    //入口函式一般會做向核心註冊功能函式和申請資源的工作
    //比如向核心註冊操作硬體的函式或者申請記憶體資源
    printk("hello,world\n");
    return 0; //如果成功,返回0,失敗返回負值
}

static void helloworld_exit(void)
{
    //出口函式一般會做跟入口函式相反的內容,比如
    //解除安裝操作硬體的函式或者釋放申請的記憶體資源
    printk("Goodbye!\n");
}

//告訴核心驅動的入口函式和出口函式
module_init(helloworld_init);
module_exit(helloworld_exit);

MODULE_LICENSE("GPL");







1、驅動程式碼和我們的c應用程式是不一樣的,linux驅動的標頭檔案應該以核心中的驅動標頭檔案為主。

2、驅動的結尾應該有MODULE_LICENSE("GPL")模組許可申明。

3、驅動程式碼由核心驅動的入口函式和出口函式為出入口。相應的有"XXX__init"和"XXX__exit“函式對應。

4、驅動程式碼和應用的程式碼中的列印函式是不一樣的,在核心驅動中應該使用的是printk(”......“.....)函式。

相關推薦

1-Linux驅動基本框架結構

//第一步,核心程式設計使用的標頭檔案一律是核心原始碼中的標頭檔案,不是標準C庫的標頭檔案,所以在編譯驅動時,要利用核心原始碼/opt/kernel/include #include <linu

Linux知識點總結之磁碟儲存 1.1 磁碟的基本組成結構

磁碟的基本組成結構 ①磁頭 ②盤面 ③磁軌 ④柱面 ⑤扇區 ①磁頭 硬碟儲存原理: >>>用資料的控制電路通過硬碟讀寫頭去改變磁碟表面上極細微的磁性粒子簇的N/S極來加以儲存 >>>刪除資料即刪除對此資料的索引,不

1.LINUX基本命令整理集合

首先先說一下有些命令在終端輸入會顯示‘-bash: shell: 未找到命令’,不要著急,我教你一步一步配置yum源,安裝命令 (1)編輯文字檔案 vi /etc/yum.repos.d/yum.repo 如下所示: [local] #軟體源的名稱

1.Linux基礎 基本操作:

面試 遠程 配置 編輯 信息 nowrap 環境變量設置 密碼 默認 一、linux的實驗環境 Linux操作系統,RedHat 7.4 64位 Vmware 12 網卡:僅主機模式,集群通信的時候需要這個模式,其實NAT也可以用於集群通信,這裏就用僅主機模式。 一共用到五

1、Python 基本資料結構

一、線性資料結構 1. 線性資料結構的特點 資料項之間只存在先後的次序關係,新的資料項加入到資料集中時,只會加入到原有某個資料項之前或之後 線性結構總有兩端:左右端、前後端、頂端底端等,但兩端

TensorFlow2.0(1):基本資料結構—張量

1 引言 TensorFlow2.0版本已經發布,雖然不是正式版,但預覽版都發布了,正式版還會遠嗎?相比於1.X,2.0版的TensorFlow修改的不是一點半點,這些修改極大的彌補了1.X版本的反人類設計,提升了框架的整體易用性,絕對好評! 不多說了,趕緊來學習一波吧,做最先吃螃蟹的那一批人!先從Ten

Redis(1)——5種基本資料結構

一、Redis 簡介 "Redis is an open source (BSD licensed), in-memory data structure store, used as a database, cache and message broker." —— Redis是一個

Linux進程切換(1) 基本框架

兩個 nor pid text _id 現在 然而 器) 相關 一、前言 本文主要是以context_switch為起點,分析了整個進程切換過程中的基本操作和基本的代碼框架,很多細節,例如tlb的操作,cache的操作,鎖的操作等等會在其他專門的文檔中描述。進程切換包括體系

Linux下PCI裝置驅動程式開發基本框架

PCI是一種廣泛採用的匯流排標準,它提供了許多優於其它匯流排標準(如EISA)的新特性,目前已經成為計算機系統中應用最為廣泛,並且最為通用的匯流排標準。Linux的核心能較好地支援PCI匯流排,本文以Intel 386體系結構為主,探討了在Linux下開發PCI裝置驅動程式的基本框架。    一、PCI匯流排

Linux 網路裝置驅動開發(三) —— 網路裝置驅動基本原理和框架

一、協議棧層次對比 二、Linux網路子系統     Linux網路子系統的頂部是系統呼叫介面層。它為使用者空間提供的應用程式提供了一種訪問核心網路子系統的方法(socket)。位於其下面是一個協議無關層,它提供一種通用的方法來使用傳輸層協議。然後是具體協議的實現,在Lin

linux驅動由淺入深系列:驅動程式的基本結構概覽之一(第一個驅動程式)

本系列導航: 提到linux驅動程式,首先應該知道它是linux的核心模組。那麼想要編寫驅動程式,就要首先認識一下linux的核心模組機制。Linux核心模組是使得複雜而龐大的linux核心條理清晰、可裁剪、高相容性的重要特性。 Linux核心模組的特點: 1, 

linux裝置驅動中重要的3個數據結構 &&Linux裝置驅動模型幾個基本資料結構模型:kobject,kset,subsystem

大多數基本的驅動操作涉及到核心的3個重要資料結構:file_operations,file 和inode。 我們已經擁有一些裝置號,但是如何將其與驅動操作連在一起呢?file_operations結構就是這個橋樑,這個結構體定義在<Linux/fs.h>中,它是

linux驅動基礎開發1——linux 裝置驅動基本概念

二、裝置型別 硬體是千變萬化的,沒有八千也有一萬了,就像世界上有三種人:男人、女人、女博士一樣,linux做了一個很偉大也很艱難的分類:把所有的硬體裝置分為三大類:字元裝置、塊裝置、網路裝置。 1)字元裝置:字元(char)裝置是個能夠像位元組流(類似檔案)一樣被訪問的裝置。     對字

Linux驅動開發詳解》——LCD裝置驅動重要資料結構驅動框架

核心檔案:/drivers/video/fbmem.c 18.2.3.Linux幀緩衝相關資料結構與函式          1. fb_info結構體(最關鍵) /* struct fb_info 結構體 */ struct fb_info {     int node;

linux驅動摸索 --驅動框架初始化(結合韋東山視頻教程)

boa kernel cde targe 一個 自動 comm argv ops 一.驅動框架 初始化:insmod 加載 1.確定主設備號: 分為靜態和動態分配,其中LED_GPIO_SIZE 表示支持的次設備號數目,一般默認為1. 相關

Linux驅動入門篇(三):基本的字符設備模塊(2)

連接 truct ace alloc orm 負數 -s tabs idt   上一節中介紹了設備號的申請和釋放,這一節開始了解字符設備的相關操作。   首先定位到<linux/cdev.h>文件,查看內核提供給字符設備的接口。 cdev結構 str

22.Linux-塊設備驅動框架詳細分析(詳解)

磁盤設備 回調 隊列 rst 學習 更新 表示 索引 函數實現 1.之前我們學的都是字符設備驅動,先來回憶一下 字符設備驅動: 當我們的應用層讀寫(read()/write())字符設備驅動時,是按字節/字符來讀寫數據的,期間沒有任何緩存區,因為數據量小,不能隨機讀取數據,

Linux內存管理的基本框架??

設計 內存管理 uboot page 有一個 一個 下標 size 最大 Linux內核的映射機制設計成三層,在頁面目錄和頁面表中間增設了一層“中間目錄”。在代碼中,頁面目錄稱為PGD,中間目錄稱為PMD,而頁面表稱為PT。PT中的表項稱為PTE,PTE是“Page Tab

linux實驗-基本指令1

及其 重定向 unix2dos 要求 func 帳號登錄 定向 設置密碼 dir 1、root帳號登錄,查看/tmp目錄,如果/tmp目錄下沒有子目錄myshare,則建立該目錄。 2、創建帳號testuser。 3、把myshare目錄及其目錄下的所有文件和子目錄的擁有者

tensorflow(1) 基礎: 神經網絡基本框架

決定 所有 start 梯度 span truncated 正態分布 variables data 1.tensorflow 的計算得到的是計算圖graph import tensorflow as tf a=tf.constant([1.0,2.0]) b=tf.con