色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Linux應用開發【第十五章】存儲設備應用開發

weidongshan ? 來源:weidongshan ? 作者:weidongshan ? 2021-12-10 19:31 ? 次閱讀

文章目錄

15 存儲設備應用開發

15.1 SD/TF卡,U盤使用步驟

15.1.1 SD/TF卡,U盤的硬件接口

15.1.2 確定設備點

15.1.3 分區

15.1.4 格式化并掛載

15.1.5 介紹分區表

15.2 自動掛載U盤

15.2.1 udev規則

15.2.2 正則表達式

15.2.3 自動掛載U盤

15.3 掛載后就是一般的讀寫文件

15 存儲設備應用開發

15.1 SD/TF卡,U盤使用步驟

15.1.1 SD/TF卡,U盤的硬件接口

poYBAGGzOn2AddR4AARnURvd8oI007.png

如上圖的100ask6ull開發板,⑦為USB口,U盤從這里插入;?為mico sd卡槽,micro sd卡可以直接從這里插入。

注:micro sd卡也叫tf卡,它是sd卡類的一種,還有sd卡,mini sd卡等,我們簡稱這一類都叫sd卡。

15.1.2 確定設備點

①U盤確定設備點

下圖是未插入U盤前/dev/目錄下的內容

pYYBAGGzOn2Ae421AADE5V4fm3o229.png

當我們插入U盤后/dev/目錄下的內容為下圖

poYBAGGzOoOAA3xOAADMklaquQ0331.png

由這兩幅圖,可以清楚看到插入U盤后,/dev/目錄下多了sda,sda1,很顯然這兩個東西就是和我們的U盤有關的。

當我們插入U盤linux系統一般都會提示該設備節點是哪個,下圖就是當我們插入U盤后我們串口終端接收的信息,上面提示了有U盤插入,同時設備節點是sda

pYYBAGGzOoiAfDh1AABm4z7NQBQ695.png

sd表示這是個scsisata硬盤設備。

a:表示這是第一塊硬盤,

1:這是這塊硬盤的第一個分區,同時也是主分區。

根據以上內容,我們應該就能看出sda,sda1表示什么意思了。

sda表示整個U盤存儲設備

sda1表示是sda的第一個分區。

②SD卡確定設備點

下圖是未插入SD卡前/dev/目錄下的內容

pYYBAGGzOn2Ae421AADE5V4fm3o229.png

當我們插入SD卡后/dev/目錄下的內容為下圖

poYBAGGzOo6AEcGEAADK2JowqqQ049.png

由這兩幅圖,可以清楚看到插入SD卡后,/dev/目錄下多了mmcblk0,mmcblk0p1,很顯然這兩個東西就是和我們的SD卡有關的。

當我們插入sd卡,linux系統一般都會提示該設備節點是哪個,下圖就是當我們插入sd卡后我們串口終端接收的信息,上面提示了有sd卡插入,同時設備節點是mmcblk0

pYYBAGGzOpSAZs8jAAAuqpfQfw4755.png

mmc 應該是 sd 的前身,所以sd與mmc 的驅動通用,于是Linux 就把設備節點名稱延續下來了。

blk表示這是塊設備,隨后跟的數字是該設備的編號blk0,表示編號為0的塊設備,區分塊設備用的。

p表示是分區,p1 表示這是第一個分區。

根據以上內容,我們應該就能看出mmcblk0,mmcblk0p1表示什么意思了。

mmcblk0表示整個sd卡設備

mmcblk0p1表示這是sd卡設備的第一個分區。

15.1.3 分區

我們使用fdisk工具來分區,

執行fdisk /dev/mmcblk0后,輸入m(進入菜單功能選項)進入 fdisk 畫面:

poYBAGGzOpqAAfsjAADPdDZPljw706.png

常用的是:d l m p q t w命令

我們嘗試利用剩余空間增加一個分區

此時按下w 就可以將分區信息存儲到分區表中,并離開 fdisk;如果你決定這樣的操作不對,也可以直接按下 q 取消剛剛的fdisk工具的所有動作,并退出fdisk。

15.1.4 格式化并掛載

上一小節,我們新建立了一個分區,我們的第二個分區為 /dev/mmcblk0p2 ,分區類型為 Linux ,此時我們可以mkfs.ext3 /dev/mmcblk0p2對其進行格式化

pYYBAGGzOqCABm9_AABiEQWZJG4182.png

此時我們可以用mount命令掛載該分區到我們想要的目錄

mount -t ext3 /dev/mmcblk0p2 /mnt/

通過df –Th命令查看是否掛載成功。

poYBAGGzOqaAa4wSAAA-pMDwmSE037.png

當然我們也可以掛載mmcblk0p1這個分區,也是先指定某種文件系統格式化該分區,然后再用mount命令指定掛載的格式的同時掛載,最后df –Th命令查看是否掛載成功。

U盤的分區,格式化,掛載等操作和sd卡一致,只是將/dev/mmcblk0 變成了/dev/sda1。

15.1.5 介紹分區表

pYYBAGGzOqaARmfYAABDn64N2T0824.png

上圖是利用fdisk 里的p功能字,打印分區表功能顯示的。

Device:表示這是哪一個分區,這里表示是mmcblk0的的一個分區;

Boot:表示啟動引導標志;

StartCHS:分區開始的柱面、磁頭、扇區;

EndCHS:分區結束的柱面、磁頭、扇區;

StartLBA:邏輯塊地址起始位置;

EndLBA: 邏輯塊地址結束位置;

Sectors: 扇區數量;

Size:分區大小。

Id與Type:成對出現,id表示文件系統類型編號,type表示文件系統類型標記

注:這里的Id與Type其實只是做個標記,并沒有實際變成我們想要的文件系統格式,因此如果需要掛載時,還需要用mkfs相關命令的格式化為對應文件系統格式后再掛載。

15.2 自動掛載U盤

15.2.1 udev規則

udev是Linux(linux2.6內核之后)默認的設備管理工具。udev 以守護進程的形式運行,通過偵聽內核發出來的 uevent 來管理 /dev目錄下的設備文件。通過udev編寫對應規則,實現設備節點變化時做出規定的動作,例如本節所說的熱拔插實驗、

udev常用的規則我們了解下。

1)規則文件中以 “#” 開頭的行以及空行將被忽略;

2)規則文件必須以 .rules 作為后綴名,否則將被忽略; 3)規則文件分別位于: 系統規則目錄(/usr/lib/udev/rules.d)、 運行時規則目錄(/run/udev/rules.d)、 本機規則目錄(/etc/udev/rules.d),/etc/ 的優先級最高、 /run/ 的優先級居中、 /usr/lib/ 的優先級最低,也就是說我們可以在本機規則目錄(/etc/udev/rules.d)下添加新的規則,它優先級最高,如果存有低優先級的同類規則,也會被高優先級的新規則替換掉,規則文件開頭的數字越小它的執行順序越靠前。 4)"鍵"有兩種類型:匹配與賦值。 如果某條規則的所有匹配鍵的值都匹配成功,那么就表示此條規則匹配成功, 也就是此條規則中的所有賦值鍵都會被賦予指定的值。

匹配類:

①“==”等于;

②“!=”不等于;

③“ACTION”匹配事件的動作,例如"add"表示插入一個設備;

④“KERNEL”匹配設備的內核名稱,如sda;

⑤“SUBSYSTEM” 所屬的子系統。例如"sound"或"net"等。

賦值類:

①“=”,為鍵賦予指定的值;

②“LABEL”設置一個可用作 GOTO 跳轉目標的標簽

③“GOTO” 跳轉到下一個匹配的 LABEL 標簽所在的規則;

④“RUN”{類型}對于每一個設備事件來說,在處理完規則之后,都可以再接著執行一個程序列表(默認為空)。 不同的"類型"含義如下:“program"一個外部程序, 如果是相對路徑, 那么視為相對于 /usr/lib/udev 目錄。 否則必須使用絕對路徑。如果未明確指定"類型”, 那么這是默認值。"builtin"與 program 類似,但是僅用于表示內置的程序。程序名與其參數之間用空格分隔。 如果參數中含有空格,那么必須使用單引號(’)界定。僅可使用運行時間非常短的前臺程序, 切勿設置任何后臺守護進程或者長時間運行的程序

如需更加詳細關于udev內容可以參考這兩篇文章《udev 中文手冊 [金步國]》,《Writing udev rules.html》文章鏈接已保存在本章對應目錄下。

15.2.2 正則表達式

在udev的設備匹配上用到正則表達式,我們大致了解下,如需更加詳細的內容可以參考這篇文章《正則表達式30分鐘入門教程》,文章鏈接已保存在本章對應目錄下。

①在電腦上查找文件,如果需要找‘.c’文件,我們通常會用‘*.c’就可以查找全部的‘.c’文件,如下圖

poYBAGGzOqeAP_KBAABWXjYyzQ0545.png

這里使用的 * 就是通配符,表示任意字符。

②如果我們想要更加精確的表達的話就無能為力了,因此引入了正則表達式。

·:表示任意字符(換行符除外);

*:表示重復0次或更多次;

+:表示重復1次或更多次;

?:表示重復0次或1次;

[~]:表示這里面的字符里的某一個,例如[abc]表示abc中的其中一個,[1-9]表示1至9的其中一個。

例如leds?[1-3],其中s?表示s出現0次或者1次,[1-3]?表示1至3的某一個,出現0次或1次,根據以上信息匹配的結果就是leds,led1,led2,led3。我們通過一個語句就匹配了4個設備,多么簡練。

15.2.3 自動掛載U盤

①創建用于掛載U盤的目錄

mkdir /mnt/usb –p

②在/etc/udev/rules.d目錄下添加用于檢測U盤插入規則(add),終端下執行以下命令創建第一個U盤插入規則。

vim /etc/udev/rules.d/11-add-usb.rules

在11-add-usb.rules中添加如下內容:

ACTION!="add",GOTO="END" KERNEL=="sda[0-9]",RUN+="/etc/mount-usb.sh %k" LABEL="END"

上面的內容意思是:如果不是add添加事件,那么就跳到END標簽處結束,如果是add事件那么執行以下規則,如果添加的設備是sda0至sda9中任意一個,那么就執行RUN后面的內容,此處是一個腳本,一個掛載U盤的腳本,它還帶有個參數%k,表示kernel的值。

然后在/etc/目錄下創建mount-usb.sh腳本

在mount-usb.sh中添加如下內容:

#!/bin/sh mount -t vfat /dev/$1 /mnt/usb sync

上面的內容意思是:#!/bin/sh表示是腳本文件,按腳本文件解析,mount -t vfat /dev/$1 /mnt/usb表示按vfat格式將/dev/$1掛載到/mnt/usb目錄下,其中這里的$1就是之前規則里傳入進來的%k,也就是kernel值。Sync表示同步U盤數據。

最后記得給腳本文件添加執行權限。

chmod +x /etc/mount-usb.sh

③在/etc/udev/rules.d目錄下添加用于檢測U盤移出規則(remove),終端下執行以下命令創建第U盤移出規則。

vim /etc/udev/rules.d/11-remove-usb.rules

在11-remove-usb.rules中添加如下內容:

ACTION!="remove",GOTO="END" KERNEL=="sda[0-9]",RUN+="/etc/umount-usb.sh %k" LABEL="END"

上面的內容意思是:如果不是remove添加事件,那么就跳到END標簽處結束,如果是remove事件那么執行以下規則,如果移出的設備是sda0至sda9中任意一個,那么就執行RUN后面的內容,此處是一個腳本,一個卸載U盤的腳本,它還帶有個參數%k,表示kernel的值。

然后在/etc/目錄下創建umount-usb.sh腳本

在umount-usb.sh中添加如下內容:

#!/bin/sh sync umount /mnt/usb

上面的內容意思是:#!/bin/sh表示是腳本文件,按腳本文件解析,先同步U盤數據,然后再卸載,其中這里的$1就是之前規則里傳入進來的%k,也就是kernel值。

最后記得給腳本文件添加執行權限。

chmod +x /etc/umount-usb.sh

④設置好規則后,當我們插入U盤,執行df –Th就會顯示如下圖

pYYBAGGzOqeAYXpAAAA8jXdUB6I913.png

表明/dev/sda1已經成功掛載在/mnt/usb目錄下了。

注1: vfat格式也就是fat32格式,使用vfat格式是由于windows操作系統與linux操作系統都支持,這樣U盤就可以在windows操作系統與linux操作系統之間作為交換文件的介質。

注2:Linux 系統中欲寫入U盤等存儲介質內時,有的時候為了效率起見,會寫到 filesystem buffer 中,這個 buffer 是一塊記憶體空間,如果欲真正的寫入U盤等存儲介質內需要執行sync 指令,它會將存于 buffer 中的數據強制寫入U盤等存儲介質內,這也是為什么腳本里在要加入sync的原因。

15.3 掛載后就是一般的讀寫文件

成功掛載后,我們就可以在掛載目錄下進行創建,修改等文件操作,就等同于操作U盤上的文件。

poYBAGGzOqiAHE8YAAAqpfAMeIk728.png

如上圖,我們在終端使用以下命令創建兩個文本文件。touch /mnt/usb/111.txt touch /mnt/usb/222.txt

然后再拔出U盤,插到電腦中查看是否存在111.tx與222.txt

pYYBAGGzOqiADGM5AABLXSoWhQ4081.png

我們可用在上面添加些內容,然后再插入開發板,查看電腦上修改的內容在開發板上是否顯示。在111.txt中添加abc,在222.txt中添加100ask,保存,彈出U盤,插入開發板。 通過cat命令查看內容,如下圖

poYBAGGzOqiABaaQAAAnVHnNiXM111.png

顯示的內容正確,以后我們就可以通過U盤把電腦的東西往開發板上搬了。

審核編輯黃昊宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Linux
    +關注

    關注

    87

    文章

    11314

    瀏覽量

    209791
  • 存儲設備
    +關注

    關注

    0

    文章

    164

    瀏覽量

    18605
收藏 人收藏

    評論

    相關推薦

    羅德與施瓦茨亮相第十五屆亞洲電源技術發展論壇

    近日,羅德與施瓦茨(以下簡稱R&S)RT-ZISO 隔離測量系統亮相第十五屆亞洲電源技術發展論壇。R&S示波器產品經理蔡愷波發表《新一代隔離探測系統為寬禁帶功率電子設計提供解決方案》主題演講,分享RT-ZISO領先的產品能力以及相關測試技術洞察。
    的頭像 發表于 12-18 11:26 ?316次閱讀

    龍騰半導體第十五屆亞洲電源技術發展論壇精彩回顧

    近日,第十五屆亞洲電源技術發展論壇在深圳灣萬麗酒店圓滿結束。龍騰半導體全程參與了這場匯聚行業精英與前沿技術的電源盛會:不僅精彩展示了最新產品和技術成果,還榮獲“國產功率器件行業卓越獎”,贏得了市場的廣泛關注與高度認可。
    的頭像 發表于 12-10 11:52 ?266次閱讀

    深度參與,共話未來 —— 吹田電氣亮相第十五屆亞洲電源技術發展論壇

    在這個金秋時節,吹田電氣帶著對電源技術的無限熱愛與追求,我們啟程前往第十五屆亞洲電源技術發展論壇的盛會。在這場匯聚了行業精英、學者與前沿技術的盛會中,我們不僅僅見證了電源技術的最新進展,更與眾多同行
    的頭像 發表于 12-09 16:58 ?337次閱讀
    深度參與,共話未來 —— 吹田電氣亮相<b class='flag-5'>第十五</b>屆亞洲電源技術發展論壇

    慧能半導體邀您相約第十五屆亞洲電源技術發展論壇

    第十五屆“亞洲電源技術發展論壇”將于12月7日在深圳灣萬麗酒店3F隆重舉辦。本次會議再度升級,全面打造4大會場,包含半導體芯片、功率器件、被動元件、測試測量、檢測認證等多個技術方向,涉及小功率、高功率、消費類電子、汽車、工業、5G、光伏儲能等多產品應用領域。
    的頭像 發表于 12-04 10:46 ?296次閱讀

    海格通信亮相第十五屆中國國際航空航天博覽會

    近日,第十五屆中國國際航空航天博覽會在珠海舉行,向公眾展示當今國際航空航天業先進科技主流和發展水平。海格通信(SZ 002465)攜系列新產品及解決方案參展,展示了公司在低空經濟、無人智造、模擬仿真、衛星互聯網、北斗導航、車路云一體化等創新成果。
    的頭像 發表于 11-13 10:08 ?355次閱讀

    四創電子即將亮相第十五屆中國國際航空航天博覽會

    第十五屆中國國際航空航天博覽會 (珠海航展) 將于2024年11月12日在廣東珠海國際航展中心盛大開幕,現場將帶來一場“空、天、海、陸”尖端設備的動態演示盛宴。
    的頭像 發表于 11-11 09:44 ?377次閱讀

    迅為iTOP-RK3568開發板驅動開發指南-第十八篇 PWM

    第七期_設備樹 第八期_設備樹插件 第九期_設備模型 第十期_熱插拔第十一期_pinctrl子系統
    發表于 10-29 10:13

    《DNK210使用指南 -CanMV版 V1.0》第二十五章 LCD圖片顯示實驗

    第二十五章 LCD圖片顯示實驗 本章將介紹在LCD上的圖片顯示。通過本章的學習,讀者將學習到LCD上圖片的顯示。本章分為如下幾個小節:25.1 lcd模塊介紹25.2 硬件設計25.3 程序設計
    發表于 10-23 09:34

    《DNK210使用指南 -CanMV版 V1.0》第十五章 按鍵中斷實驗

    第十五章 按鍵中斷實驗 本章實驗將介紹如何使用CanMV讓Kendryte K210通過中斷的方式獲取板載按鍵的狀態。通過本章的學習,讀者將學習到在CanMV下Kendryte K210的GPIO
    發表于 10-12 09:20

    文檔更新 | 迅為RK3568驅動指南-第十七篇(串口)

    時序編寫 第163 DS18B20驅動溫度讀取編寫 163.4 運行測試 第164 DS18B20驅動使用ioctl設置分辨率 第165 DS18B20驅動使用ioctl讀取分辨率 ?
    發表于 09-24 10:42

    【北京迅為】《stm32mp157開發板嵌入式linux開發指南》第五 Ubuntu使用apt-get下載

    【北京迅為】《stm32mp157開發板嵌入式linux開發指南》第五 Ubuntu使用apt-get下載
    的頭像 發表于 09-03 16:26 ?812次閱讀
    【北京迅為】《stm32mp157<b class='flag-5'>開發</b>板嵌入式<b class='flag-5'>linux</b><b class='flag-5'>開發</b>指南》第五<b class='flag-5'>章</b> Ubuntu使用apt-get下載

    嵌入式linux開發的基本步驟有哪些?

    之前,首先需要選擇合適的硬件平臺。硬件選擇需要考慮以下幾個方面: 1.1 處理器 嵌入式Linux開發需要一個處理器,常見的處理器有ARM、MIPS、PowerPC等。選擇處理器時,需要考慮處理器的性能、功耗、成本等因素。 1.2 存儲
    的頭像 發表于 09-02 09:11 ?526次閱讀

    Linux 驅動開發與應用開發,你知道多少?

    一、Linux驅動開發與應用開發的區別開發層次不同:Linux驅動開發主要是針對硬件
    的頭像 發表于 08-30 12:16 ?833次閱讀
    <b class='flag-5'>Linux</b> 驅動<b class='flag-5'>開發</b>與應用<b class='flag-5'>開發</b>,你知道多少?

    文檔更新 |迅為 RK3568開發板驅動指南-第十五/十六篇

    分辨率 ? 第十五篇 I2C 第166 初步認識I2C 166.1 I2C總線的由來 166.2 I2C硬件連接 166.3 I2C基礎知識 166.4 iTOP-RK3568開發板上的I2C接口
    發表于 07-08 11:04

    精訓促能 | 古瑞瓦特第十五期授權運維培訓會圓滿成功!

    精訓促能 | 古瑞瓦特第十五期授權運維培訓會圓滿成功! 近日,為期3天的古瑞瓦特第十五期授權運維培訓會圓滿落幕。期間,多位學員齊聚山東濟南,共同剖析光儲運維問題,交流產品技術細節,切實提高光儲運維
    的頭像 發表于 06-07 20:22 ?302次閱讀
    精訓促能 | 古瑞瓦特<b class='flag-5'>第十五</b>期授權運維培訓會圓滿成功!
    主站蜘蛛池模板: 久久青草免费线观最新| 日本工口生肉全彩大全| 午夜免费体验30分| 国产精自产拍久久久久久蜜| 色婷婷狠狠97成为人免费| 沙发上小泬12P| 国产在线精品视频免费观看| 亚洲熟女丰满多毛XXXXX| 久久久精品久久| 99视频在线看观免费| 十七岁日本免费完整版BD| 国产一区内射最近更新| 最近中文字幕在线中文视频| 青柠在线观看免费播放电影| 国产精品高清免费网站| 日本日本熟妇中文在线视频| 国产精品人妻无码久久久蜜桃| 亚洲色播永久网址大全| 老司机福利在视频在ae8| 豆奶视频在线高清观看| 亚洲欧美精品无码一区二在线 | 精品国产成人系列| 亚洲国产综合久久精品 | 国产三级精品三级在线观看| 影音先锋亚洲AV少妇熟女| 日本老师xxxxx18| 精品一区二区三区AV天堂| 拔萝卜在线高清观看视频| 亚洲午夜精品一区二区公牛电影院| 欧美不卡一区二区三区| 99精品视频在线| 亚洲第一免费播放区| 欧美日韩一区在线观看| 狠狠干女人| 国产AV亚洲一区精午夜麻豆| 岳的奶大又白又胖| 学生无码AV一区二区三区| 交换邻居波多野结衣中文字幕| 99热久这里都是精品小草| 亚洲一区精品在线| 婷婷久久无码欧美人妻|