在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

    文章

    11489

    瀏覽量

    213157
  • 存儲設備
    +關注

    關注

    0

    文章

    166

    瀏覽量

    19224
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    第十五章 DMA

    本章介紹DMA(直接存儲器存取),其可在不占用CPU的情況下搬數據,支持多種傳輸方向,含控制器、通道等配置及相關實驗代碼。
    的頭像 發表于 06-14 16:32 ?500次閱讀
    <b class='flag-5'>第十五章</b> DMA

    第十五章 DAC (下篇)

    本篇文章為第十五章DAC(下篇),介紹三個例程:DAC_OutDMASineWave用DMA輸出正弦波,DAC_OutNoiseWave輸出噪聲波,DAC_OutTriangleWave生成三角波,均有初始化、波形配置及串口調試功能。
    的頭像 發表于 05-28 15:39 ?431次閱讀
    <b class='flag-5'>第十五章</b> DAC (下篇)

    第十五章 DAC (上篇)

    文章介紹了基于W55MH32的DAC(數字/模擬轉換器)上篇內容,其為12位轉換器,有2通道,支持8/12位模式、DMA等,具噪聲和三角波生成等功能,還介紹了DAC_OutAudio例程的配置與驗證。
    的頭像 發表于 05-28 15:07 ?410次閱讀
    <b class='flag-5'>第十五章</b> DAC (上篇)

    易華錄亮相第十五屆交博會

    近日,由中國道路交通安全協會主辦的第十五屆中國道路交通安全產品博覽會暨公安交警警用裝備展(簡稱交博會)于武漢開幕。易華錄受邀參展,以“數智驅動 易享交通”為主題,與業內知名企業一起,共同探討智慧交通新思路、展示新產品、交流新方案。
    的頭像 發表于 04-27 11:25 ?371次閱讀

    千方科技亮相第十五屆交博會

    近日,第十五屆中國國際道路交通安全產品博覽會在武漢啟幕。千方科技以“AI+交通”、“交通新能源化”兩大主題亮相,展示了在城市交通綜合治理、交通安全綜合治理、車路云一體化、新能源停充一體化等領域的眾多產品或解決方案。
    的頭像 發表于 04-25 11:31 ?683次閱讀

    漢威科技亮相第十五屆交博會

    4月23日,經商務部批準,由中國道路交通安全協會主辦的第十五屆中國國際道路交通安全產品博覽會(以下簡稱“交博會”),在武漢國際博覽中心A1-A4館隆重開幕。
    的頭像 發表于 04-24 17:41 ?453次閱讀

    銳馳智光亮相第十五屆交博會

    2025年4月23日,第十五屆中國國際道路交通安全博覽會(以下簡稱“交博會”)在武漢國際博覽中心盛大啟幕。
    的頭像 發表于 04-24 17:12 ?415次閱讀

    迅鐳激光亮相第十五屆鋼結構行業發展論壇

    此前,4月11日至12日,第十五屆鋼結構行業發展論壇成功在京舉行。500余位鋼結構行業專家、學者、企業家齊聚一堂,共商行業發展新趨勢。迅鐳激光作為鋼結構行業智能制造的杰出代表受邀參會,并發表題為《H 型鋼激光切割機在鋼構領域的應用》的主題演講,在論壇上大放異彩。
    的頭像 發表于 04-19 10:32 ?361次閱讀

    洲明科技顯示技術助力第十五屆全運會場館煥新

    2025年,第十五屆全國運動會將首次在粵港澳三地聯合舉辦,這場中國頂級體壇盛會不僅是一場全民的體育狂歡,更是一扇展示體育科技創新、灣區發展活力的窗口。新舊交替之際,廣州賽區首批改造場館驗收移交!
    的頭像 發表于 01-07 14:05 ?817次閱讀

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

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

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

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

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

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

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

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

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

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

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

    分辨率 ? 第十五篇 I2C 第166 初步認識I2C 166.1 I2C總線的由來 166.2 I2C硬件連接 166.3 I2C基礎知識 166.4 iTOP-RK3568開發板上的I2C接口
    發表于 07-08 11:04
    主站蜘蛛池模板: 久久久午夜精品 | 精品欧美激情在线看 | 天天狠狠弄夜夜狠狠躁·太爽了 | 国产裸露片段精华合集链接 | 四虎精品影院在线观看视频 | 在线视频一区二区 | 日本视频一区二区三区 | 99国产国人青青视频在线观看 | 性欧洲女人18 | 一区二区免费 | 久久精品午夜 | 亚洲综合区图片小说区 | 在线免费视频手机版 | 国产一级做a爰片久久毛片 国产一级做a爰片久久毛片男 | 天天插天天透 | 日日干干| 亚洲色图 在线视频 | 国产美女作爱全过程免费视频 | 性a爱片免费视频性 | 女人爽到喷水的视频大全在线观看 | 性大特级毛片视频 | 黄色xxxx| 免费在线色视频 | 色视频在线观看网站 | 亚洲欧美视频在线观看 | 性欧美黑人xxxx | 欧美黑粗硬| 性视频软件 | 午夜视频免费看 | 色综合久久综合欧美综合网 | 在线精品国产第一页 | 人人干天天干 | 黄在线观看网站 | 高清不卡一区二区三区 | 国产成人亚洲日本精品 | 日本wwww色 | 午夜视频在线观看完整高清在线 | 亚洲成在| 午夜神马福利影院 | 亚洲综合区图片小说区 | 黄h网站 |