Linux驅動學習1.hello world;

来源:https://www.cnblogs.com/yongleili717/archive/2019/03/04/10471408.html
-Advertisement-
Play Games

最近項目需要使用Linux系統開發,藉此機會學習一下Linux驅動開發 hello word代碼hello.c mekefile文件 在hello.c目錄下,shell終端中執行make命令,生成hello.ko文件; 使用以下命令插入 問題:插入模塊後本應列印出字元,後發現是printk列印級別問 ...


最近項目需要使用Linux系統開發,藉此機會學習一下Linux驅動開發

hello word代碼hello.c

#include <linux/module.h>
#include <linux/init.h>
static int hello_init(void)//模塊入口
{
    printk("Hello, I'm ready!\n");
    return 0;
}
static void hello_exit(void)//模塊出口
{
    printk("I'll be leaving, bye!\n");
}
module_init(hello_init);
module_exit(hello_exit);

MODULE_LICENSE("GPL");

mekefile文件

# If KERNELRELEASE is defined, we've been invoked from the
# kernel build system and can use its language.
ifneq ($(KERNELRELEASE),)
obj-m := hello.o
# Otherwise we were called directly from the command
# line; invoke the kernel build system.
else
    KERNELDIR ?= /lib/modules/$(shell uname -r)/build
    PWD := $(shell pwd)
default:
    $(MAKE) -C $(KERNELDIR) M=$(PWD) modules
endif

在hello.c目錄下,shell終端中執行make命令,生成hello.ko文件;

使用以下命令插入

sudo insmod hello.ko
lsmode//查看模塊 sudo rmmod hello.ko

 

問題:插入模塊後本應列印出字元,後發現是printk列印級別問題,查看/var/log/syslog下發現有列印出字元

使用一下代碼;

 printk(KERN_EMERG "EMERG\n");
 printk(KERN_ALERT "ALERT\n");
 printk(KERN_CRIT " CRIT\n");
 printk(KERN_ERR " ERR\n");
 printk(KERN_WARNING ""WARNING\n");
 printk(KERN_NOTICE "NOTICE\n");
 printk(KERN_INFO "INFO\n");
 printk(KERN_DEBUG "DEBUG\n");

發現終端還是沒有輸出,後查到https://blog.csdn.net/xj626852095/article/details/9746547下說是Ubuntu的問題,

只用使用#dmesg自行查看了


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 查看路由表 永久添加路由 重啟網路生效 ...
  • Windows 下Filebeat排錯Case實例一份,請查收。問題描述:Windows Server下Filebeat Agent服務無法正常啟動,導致網路數據打點無法正常進行,影響大範圍用戶網路使用等;報錯信息如下:查看對應log文件,日誌信息如下:2019-03-04T11:38:14+08:... ...
  • 協議 可理解為規則,是數據傳輸和數據解釋的規則。 TCP協議註重數據的傳輸,http協議註重數據的解釋 傳輸層:常見協議有TCP/UDP協議 應用層:常見協議有HTTP協議,FTP協議。 網路層:常見協議有ARP協議,RARP協議。 網路介面層:常見協議有ARP協議,RAPP協議。 HTTP 超文本 ...
  • windows防火牆實驗-設置遠程桌面連接以及禁止瀏覽器上網 實驗環境: 1.win2008遠程桌面服務 2.win7-1 10.10.10.136 3.win7-2 10.10.10.153 實驗步驟: 一、設置防火牆規則關於遠程桌面連接的 1.關閉防火牆中遠程桌面的規則 #或者直接在現有的遠程桌 ...
  • linux基礎之用戶及組管理 1、前序 對有限區域內,有限資源的合規使用的3A標準 Authentication:認證 相當於拿到了一個登錄linux的賬號,這叫認證了,但是這不表明拿到一個賬號你就能為所欲為,還需要進行授權 Authorization:授權 任何一個系統,認證完以後都有系統指派的一 ...
  • 先看一下效果 選擇分組 選擇伺服器 <! more 開始鏈接 為什麼寫 之前寫過一個字元界面的鏈接工具,但是看起來比較簡陋,他是這個樣子的: 看起來十分不好看。後來在網上看到shell中有一個 whiptail 工具可以製作各種命令行里的工具,於是就搜索了一下教程,然後就將之前的ssh工具重新寫了一 ...
  • 安裝Dock服務,主要命令是 yum install docker。 但是在啟動的時候報錯:warning msg="could not change group /var/run/docker.sock to docker: group docker not found" 錯誤截圖如下: 解決方案 ...
  • ?要查找的字元串,回車之後高亮文本中所有的查找到的字元串,並定位到文本中最後一個的位置。按N鍵從最後一個往前一次定位字元串,按shift+N鍵,定位到文本中下一個字元串。 /和?的查找都是高亮所有,只不過一個是從前往後定位,一個是從後往前定位。 命令 說明x 刪除當前游標下的字元X 刪除游標前面的字 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...