【Linux內核模塊加新功能 DAY6-8】

一、向內核添加新功能
1.1 靜態加載法:

即新功能源碼與內核其它代碼一起編譯進uImage文件內

新功能源碼與Linux內核源碼在同一目錄結構下在linux-3.14/driver/char/目錄下編寫myhello.c,文件內容如下:#include <linux/module.h>
#include <linux/kernel.h>int __init myhello_init(void)
{printk("#####################################################\n");printk("#####################################################\n");printk("#####################################################\n");printk("#####################################################\n");printk("myhello is running\n");printk("#####################################################\n");printk("#####################################################\n");printk("#####################################################\n");printk("#####################################################\n");return 0;
}void __exit myhello_exit(void)
{printk("myhello will exit\n");
}
MODULE_LICENSE("GPL");
module_init(myhello_init);
module_exit(myhello_exit);給新功能代碼配置Kconfig#進入myhello.c的同級目錄
cd  ~/fs4412/linux-3.14/drivers/charvim Kconfig
#39行處添加如下內容:
config MY_HELLOtristate "This is a hello test"helpThis is a test for kernel new function給新功能代碼改寫Makefile#進入myhello.c的同級目錄
cd  ~/fs4412/linux-3.14/drivers/charvim Makefile
#拷貝18行,粘貼在下一行,修改成:
obj-$(CONFIG_MY_HELLO)     += myhello.omake menuconfig 界面里將新功能對應的那項選擇成<*>cd  ~/fs4412/linux-3.14
make menuconfig
#make menuconfig如果出錯,一般是兩個原因:
#1. libncurses5-dev沒安裝
#2. 命令行界面太小(太矮或太窄或字體太大了)menuconfig01menuconfig02menuconfig03menuconfig04make uImagecp arch/arm/boot/uImage /tftpboot啟動開發板觀察串口終端中的打印信息myhello靜態

1.2 動態加載法:

即新功能源碼與內核其它源碼不一起編譯,而是獨立編譯成內核的插件(被稱為內核模塊)文件.ko

a、新功能源碼與Linux內核源碼在同一目錄結構下時

給新功能代碼配置Kconfig給新功能代碼改寫Makefilemake menuconfig 界面里將新功能對應的那項選擇成<M>make uImagecp arch/arm/boot/uImage /tftpbootmake modulesmake modules會在新功能源碼的同級目錄下生成相應的同名.ko文件(生成的ko文件只適用于開發板linux)注意此命令執行前,開發板的內核源碼已被編譯

b、新功能源碼與Linux內核源碼不在同一目錄結構下時

cd ~/fs4412
mkdir mydrivercode
cd mydrivercode
cp ../linux-3.14/drivers/char/myhello.c .
vim Makefile
make (生成的ko文件適用于主機ubuntu linux)
make ARCH=arm (生成的ko文件適用于開發板linux,注意此命令執行前,開發板的內核源碼已被編譯)

#file命令可以查看指定ko文件適用于哪種平臺,用法:
file ko文件
#結果帶x86字樣的適用于主機ubuntu linux,帶arm字樣的適用于開發板linux

c、主機ubuntu下使用ko文件

sudo insmod ./???.ko #此處為內核模塊文件名,將內核模塊插入正在執行的內核中運行 ----- 相當于安裝插件
lsmod #查看已被插入的內核模塊有哪些,顯示的是插入內核后的模塊名
sudo rmmod ??? #,此處為插入內核后的模塊名,此時將已被插入的內核模塊從內核中移除 ----- 相當于卸載插件

sudo dmesg -C #清除內核已打印的信息
dmesg #查看內核的打印信息

d、開發板Linux下使用ko文件

#先將生成的ko文件拷貝到/opt/4412/rootfs目錄下:
cp ???/???.ko /opt/4412/rootfs

#在串口終端界面開發板Linux命令行下執行
insmod ./???.ko #將內核模塊插入正在執行的內核中運行 ----- 相當于安裝插件
lsmod #查看已被插入的內核模塊有哪些
rmmod ??? #將已被插入的內核模塊從內核中移除 ----- 相當于卸載插件

內核隨時打印信息,我們可以在串口終端界面隨時看到打印信息,不需要dmesg命令查看打印信息

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/696280.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/696280.shtml
英文地址,請注明出處:http://en.pswp.cn/news/696280.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Vue項目啟動過程全記錄(node.js運行環境搭建)

一、安裝node.js并配置環境變量 1、安裝node.js 從Node.js官網下載安裝包并安裝。然后在安裝后的目錄&#xff08;如果是下載的壓縮文件&#xff0c;則是解壓縮的目錄&#xff09;下新建node_global和node_cache這兩個文件夾。 node_global&#xff1a;npm全局安裝位置 node_…

Golang 中 NATS JetStream 的高級特性有哪些?

NATS JetStream 是 NATS 消息系統的一個高級功能模塊&#xff0c;提供了許多高級特性&#xff0c;使得它在處理消息時更加靈活、可靠和高效。以下是 NATS JetStream 的一些高級特性&#xff1a; 持久化消息存儲&#xff1a;NATS JetStream 使用持久化存儲引擎&#xff0c;可以確…

代碼隨想錄三刷day06

提示&#xff1a;文章寫完后&#xff0c;目錄可以自動生成&#xff0c;如何生成可參考右邊的幫助文檔 文章目錄 前言一、力扣203. 移除鏈表元素二、力扣707. 設計鏈表三、力扣 前言 遞歸法相對抽象一些&#xff0c;但是其實和雙指針法是一樣的邏輯&#xff0c;同樣是當cur為空的…

機器學習面試:邏輯回歸與樸素貝葉斯區別

邏輯回歸與樸素貝葉斯區別有以下幾個方面: (1)邏輯回歸是判別模型&#xff0c;樸素貝葉斯是生成模型&#xff0c;所以生成和判別的所有區別它們都有。 (2)樸素貝葉斯屬于貝葉斯&#xff0c;邏輯回歸是最大似然&#xff0c;兩種概率哲學間的區別。 (3)樸素貝葉斯需要條件獨立假設…

【刷題】牛客 JZ64 求1+2+3+...+n

刷題 題目描述思路一 &#xff08;暴力遞歸版&#xff09;思路二 &#xff08;妙用內存版&#xff09;思路三 &#xff08;快速乘法版&#xff09;思路四 &#xff08;構造巧解版&#xff09;Thanks?(&#xff65;ω&#xff65;)&#xff89;謝謝閱讀&#xff01;&#xff01…

力扣49.字母異位詞分組

題目描述&#xff1a; 49. 字母異位詞分組 難度 中等 給你一個字符串數組&#xff0c;請你將 字母異位詞 組合在一起。可以按任意順序返回結果列表。 字母異位詞 是由重新排列源單詞的所有字母得到的一個新單詞。 示例 1: 輸入: strs ["eat", "tea"…

在Linux中查找大文件

在Linux中查找大文件&#xff0c;你可以使用find命令結合其他工具&#xff08;如sort和du&#xff09;來實現。以下是一些常見的方法&#xff1a; 1. 使用find命令查找大文件 你可以使用find命令來查找特定大小以上的文件。例如&#xff0c;要查找當前目錄及其子目錄中大小超…

高盛:日本這輪通脹是否可持續,關鍵看房租

租金在日本CPI中的權重高達20%&#xff0c;高盛預計短期內租金將繼續拖累通脹至1.7%或以下&#xff0c;長期有望溫和上行&#xff0c;使通脹穩在2%的水平。 日本正在轉向“去通縮”&#xff0c;房租能否支撐通脹態勢&#xff1f; 在日股今年一路高歌、有望“收復失地”時&…

redis的AOF機制

Redis AOF(Append Only File)機制是為了記錄每一次redis命令的操作并用于恢復數據。 AOF按順序記錄每一步操作&#xff0c;例如&#xff1a; set k 3, set k 5, set k 10 &#xff0c;當服務器重啟后依次執行命令恢復k 10。 日志寫入有三種方式&#xff1a; Always&#x…

【【深入淺出的了解從算法到RTL的基本流程】】

深入淺出的了解從算法到RTL的基本流程 首先 明確需求 &#xff0c;明確題目 接下來是第一輪建模-------目的是 驗證算法的正確性 這個階段分為以下兩個方面 一方面是 &#xff1a; 通過一些算法仿真工具來對 這個設計進行建模 — 算法原理建模 第二方面是 &#xff1a; 是 算…

hbase最新版本配置屬性

1. 說明 hbase的配置屬性大全 hbase版本基于 hbase-3.0.0-alpha-4 <?xml version"1.0"?> <?xml-stylesheet type"text/xsl" href"configuration.xsl"?> <!-- /*** Licensed to the Apache Software Foundation (ASF) under…

unity-firebase-Analytics分析庫對接后數據不顯示原因,及最終解決方法

自己記錄一下unity對接了 FirebaseAnalytics.unitypackage&#xff08;基于 firebase_unity_sdk_10.3.0 版本&#xff09; 庫后&#xff0c;數據不顯示的原因及最終顯示解決方法&#xff1a; 1. 代碼問題&#xff08;有可能是代碼寫的問題&#xff0c;正確的代碼如下&#xff…

OpenTiny Vue 組件庫適配微前端可能遇到的4個問題

本文由體驗技術團隊 TinyVue 項目成員岑灌銘同學創作。 前言 微前端是一種多個團隊通過獨立發布功能的方式來共同構建現代化 web 應用的技術手段及方法策略&#xff0c;每個應用可以選擇不同的技術棧&#xff0c;獨立開發、獨立部署。 TinyVue組件庫的跨技術棧能力與微前端十…

springboot207基于springboot的實習管理系統

實習管理系統的設計與實現 摘要 近年來&#xff0c;信息化管理行業的不斷興起&#xff0c;使得人們的日常生活越來越離不開計算機和互聯網技術。首先&#xff0c;根據收集到的用戶需求分析&#xff0c;對設計系統有一個初步的認識與了解&#xff0c;確定實習管理系統的總體功…

H5星空漸變效果引導頁源碼

H5星空漸變效果引導頁源碼 源碼介紹&#xff1a;H5星空漸變效果引導頁源碼是一款帶有星空漸變效果的源碼&#xff0c;內含3個可跳轉旗下站點按鈕。 下載地址&#xff1a; https://www.changyouzuhao.cn/8344.html

【海賊王的數據航海:利用數據結構成為數據海洋的霸主】時間復雜度 | 空間復雜度

目錄 1 -> 算法效率 1.1 -> 如何衡量一個算法的好壞&#xff1f; 1.2 -> 算法的復雜度 2 -> 時間復雜度 2.1 -> 時間復雜度的概念 2.2 -> 大O的漸進表示法 2.3 -> 常見時間復雜度計算 3 -> 空間復雜度 4 -> 常見復雜度對比 1 -> 算法效…

nginx前綴匹配

nginx location ^~ /task/ { # 這樣&#xff0c;當您訪問 http://hostname:port/task/test 時&#xff0c;# 請求會被轉發到 proxy_pass /test&#xff0c;注意 /task/ 前綴在轉發時被去掉了。proxy_pass http://192.168.86.199:8805/; proxy_set_header Host $host; proxy…

SQL注入漏洞解析

什么是SQL注入 原理&#xff1a; SQL注入即是指web應用程序對用戶輸入數據的合法性沒有判斷或過濾不嚴&#xff0c;攻擊者可以在web應用程序中事先定義好的查詢語句的結尾上添加額外的SQL語句&#xff0c;在管理員不知情的情況下實現非法操作&#xff0c;以此來實現欺騙數據庫服…

Ps下載安裝(專業圖像處理軟件Ps安裝包下載2024【Windows版】)

Adobe全家桶下載方式 將持續更新~ 文章目錄 Adobe全家桶下載方式Ps下載方式【點我獲取下載鏈接】我們的網站一、Ps簡介聲明 Ps下載方式【點我獲取下載鏈接】 迅雷網盤下載&#xff1a;迅雷網盤下載方式百度網盤下載&#xff1a;百度網盤下載方式夸克網盤下載&#xff1a;夸克…

【Vuforia+Unity】AR01實現單張多張圖片識別產生對應數字內容

1.官網注冊 Home | Engine Developer Portal 2.下載插件SDK&#xff0c;導入Unity 3.官網創建數據庫上傳圖片&#xff0c;官網處理成數據 下載好導入Unity&#xff01; 下載好導入Unity&#xff01; 下載好導入Unity&#xff01; 下載好導入Unity&#xff01; 4.在Unity設…