0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

linux驅(qū)動(dòng)開(kāi)發(fā)_文件系統(tǒng)本地掛載

DS小龍哥-嵌入式技術(shù) ? 2022-09-17 15:52 ? 次閱讀

【摘要】 介紹Linux開(kāi)發(fā)根文件系統(tǒng)掛載、NFS文件系統(tǒng)配置,UBOOT環(huán)境變量配置,完成文件系統(tǒng)啟動(dòng)。

數(shù)碼相冊(cè)功能:

1.?支持兩種格式圖片顯示: bmp、jpg

區(qū)分兩種圖片格式,通過(guò)后綴名稱區(qū)分。

2.?支持觸摸屏、按鍵方式翻頁(yè)(支持前后翻頁(yè))

建立雙向鏈表,調(diào)用讀取目錄的函數(shù)(opendir),將目錄下所有符合要求的圖片加入到鏈表里。

3.?支持三軸加速度計(jì),實(shí)現(xiàn)姿態(tài)感應(yīng)。根據(jù)三軸加速度的姿態(tài),調(diào)整圖片的顯示方向。

4.?支持圖片的自適應(yīng): 居中顯示,超大尺寸的圖片需要自動(dòng)縮小到屏幕能夠顯示的大小。

5.?居中顯示。

6.?數(shù)碼相冊(cè)需要有狀態(tài)欄: 當(dāng)前系統(tǒng)的時(shí)間信息,當(dāng)前圖片的名稱、數(shù)量。

任務(wù)1: 產(chǎn)品發(fā)布(本地掛載)

1.?在紅帽子系統(tǒng)上將根文件系統(tǒng)進(jìn)行壓縮打包。(PC機(jī)上操作)

[root@wbyq work]# tar cvf rootfs.tar rootfs/*

pYYBAGMlOaKANPlHAACUo7y2ANE955.png

2.?將打包之后的壓縮文件,移動(dòng)到rootfs目錄下,方便在開(kāi)發(fā)板上進(jìn)行訪問(wèn)(PC機(jī)上操作)

[root@wbyq work]# mv rootfs.tar rootfs/

3.?將SD卡上內(nèi)核、UBOOT等一些代碼拷貝到EMMC里面,(接下來(lái)就可以通過(guò)EMMC啟動(dòng))

講解MMC命令:

開(kāi)發(fā)板: 從SD卡啟動(dòng)的

mmc read addr blk# cnt

mmc write addr blk# cnt

mmc read 0 0x40000000 1 5

mmc write 1 0x40000000 1 5

??一次性將SD卡上所有需要的數(shù)據(jù)拷貝到EMMC里: BL1BL2 UBOOT.bin 簽名文件 內(nèi)核

movi r f 0 40008000;emmc open 1;movi w z f 1 40008000;emmc close 1;

movi r b 0 40008000;emmc open 1;movi w z b 1 40008000;emmc close 1;

movi r u 0 40008000;emmc open 1;movi w z u 1 40008000;emmc close 1;

movi r t 0 40008000;emmc open 1;movi w z t 1 40008000;emmc close 1;

movi r k 0 40008000;movi w k 1 40008000;

命令執(zhí)行成功之后,將SD卡拔出,開(kāi)發(fā)板開(kāi)關(guān)撥到EMMC啟動(dòng),復(fù)位開(kāi)發(fā)板,重新進(jìn)入到UBOOT命令行。

4.?對(duì)EMMC進(jìn)行分區(qū) (UBOOT命令行里執(zhí)行)

TINY4412 # fdisk -c 0 2000 1000 1000

TINY4412 # fdisk -p 0

partion # size(MB) block start # block count partition_Id

1 3301 8359120 6761931 0x0C

2 2004 134343 4104925 0x83

3 1005 4239268 2059926 0x83

4 1005 6299194 2059926 0x83

5.?對(duì)分區(qū)進(jìn)入格式化,安裝文件系統(tǒng)(UBOOT命令行里執(zhí)行)

TINY4412 # ext3format mmc 0:1

TINY4412 # ext3format mmc 0:2

TINY4412 # ext3format mmc 0:3

TINY4412 # ext3format mmc 0:4

將設(shè)備0(EMMC設(shè)備)的第2個(gè)分區(qū)格式化陳EXT3文件系統(tǒng)格式。

6.?設(shè)置UBOOT環(huán)境變量,讓內(nèi)核使用網(wǎng)絡(luò)方式掛載根文件系統(tǒng)(NFS)。(UBOOT命令行里執(zhí)行)

TINY4412 # set bootargs root=/dev/nfs nfsroot=192.168.10.11:/work/rootfs ip=192.168.10.123:192.168.10.11:192.168.10.1:255.255.255.0::eth0:off init=/linuxrc console=ttySAC0,115200 lcd=s702

TINY4412 # save //保存環(huán)境變量

Saving Environment to SMDK bootable device...

Done

TINY4412 # reset //重啟開(kāi)發(fā)板,進(jìn)行網(wǎng)絡(luò)文件系統(tǒng)掛載

7.?掛載EMMC的2號(hào)分區(qū)

將EMMC的第2個(gè)分區(qū)掛載到/mnt目錄下。

[root@tiny4412 ]#rm /dev/mmcblk* //將dev目錄下原來(lái)的mmc設(shè)備節(jié)點(diǎn)刪除掉

[root@tiny4412 ]#mdev -s //重新生成設(shè)備節(jié)點(diǎn)

[root@tiny4412 ]#ls /dev/mmcblk0* -l //查看生成之后的EMMC設(shè)備節(jié)點(diǎn)

brw-rw---- 1 root root 179, 0 Dec 10 2018 /dev/mmcblk0

brw-rw---- 1 root root 179, 8 Dec 10 2018 /dev/mmcblk0boot0

brw-rw---- 1 root root 179, 16 Dec 10 2018 /dev/mmcblk0boot1

brw-rw---- 1 root root 179, 1 Dec 10 2018 /dev/mmcblk0p1

brw-rw---- 1 root root 179, 2 Dec 10 2018 /dev/mmcblk0p2

brw-rw---- 1 root root 179, 3 Dec 10 2018 /dev/mmcblk0p3

brw-rw---- 1 root root 179, 4 Dec 10 2018 /dev/mmcblk0p4

[root@tiny4412 ]#mount /dev/mmcblk0p2 /mnt/ //將EMMC的第2個(gè)分區(qū)掛載到/mnt目錄下

[ 19.635000] EXT2-fs (mmcblk0p2): warning: mounting ext3 filesystem as ext2

[ 19.635000] EXT2-fs (mmcblk0p2): warning: checktime reached, running e2fsck is recommended

[root@tiny4412 ]#cd /mnt/

[root@tiny4412 mnt]#ls //查看掛載目錄

lost+found

8.?將之前打包的文件系統(tǒng)壓縮包解壓到掛載目錄下

[root@tiny4412 mnt]#pwd

/mnt

[root@tiny4412 mnt]#ls

lost+found

[root@tiny4412 mnt]#tar xvf /rootfs.tar //將之前打包的rootfs文件壓縮包解壓到/mnt目錄下

[root@tiny4412 mnt]#mv rootfs/* ./ //將解壓出來(lái)的rootfs目錄下所有文件,移動(dòng)到/mnt頂層目錄下

[root@tiny4412 mnt]#ls //移出來(lái)之后目錄下的文件

bin etc linuxrc proc sys var

code home lost+found rootfs tmp work

dev lib mnt sbin usr

[root@tiny4412 mnt]#cd / //回到根目錄下

[root@tiny4412 ]#umount /mnt/ //取消目錄掛載

9.?重啟開(kāi)發(fā)板,進(jìn)入到UBOOT命令行,重新設(shè)置環(huán)境變量為本地掛載

TINY4412 # set bootargs root=/dev/mmcblk0p2 rootfstype=ext3 init=/linuxrc console=ttySAC0,115200 lcd=s702 coherent_pool=2M //設(shè)置環(huán)境變量

TINY4412 # save //重啟開(kāi)發(fā)板

Saving Environment to SMDK bootable device...

done

TINY4412 # reset //復(fù)位開(kāi)發(fā)板

正常沒(méi)有問(wèn)題的情況下,開(kāi)發(fā)板文件已經(jīng)掛載成功。

poYBAGMlOaKAKVLDAAEsk4iffvo210.png

10.? 開(kāi)發(fā)板文件系統(tǒng)與PC通信的方法

(1)?可以通過(guò)SD卡、U盤等方式給開(kāi)發(fā)板拷貝文件。

(2)?可以通過(guò)NFS文件系統(tǒng)進(jìn)行遠(yuǎn)程掛載: 將NFS文件服務(wù)器的目錄掛載到本地。

??開(kāi)發(fā)板NFS網(wǎng)絡(luò)文件系統(tǒng)掛載

1.?修改PC機(jī)上NFS文件系統(tǒng)共享的目錄

[root@wbyq /]# mkdir /code //在根目錄下創(chuàng)建一個(gè)code目錄

[root@wbyq /]# gedit /etc/exports //打開(kāi)NFS服務(wù)器配置文件

pYYBAGMlOaKAbhBKAAC4f-azORc770.png

2.?重啟NFS服務(wù)器 (運(yùn)行之前編寫好的腳本文件)

poYBAGMlOaKADtVyAAHBUtRIPbA827.png

3.?設(shè)置開(kāi)發(fā)板上的網(wǎng)卡IP地址 (開(kāi)發(fā)板終端上進(jìn)行操作)

[root@tiny4412 ]#ifconfig eth0 192.168.10.123

4.?掛載NFS服務(wù)器共享的目錄(開(kāi)發(fā)板終端上進(jìn)行操作)

[root@tiny4412 ]#mount -t nfs -o nolock 192.168.10.11:/code /mnt/

5.?為了方便后續(xù)使用,可以編寫一個(gè)腳本。

[root@tiny4412 ]#ifconfig eth0 192.168.10.123

[root@tiny4412 ]#echo "ifconfig eth0 192.168.10.123" >nfs_start.sh

[root@tiny4412 ]#echo "mount -t nfs -o nolock 192.168.10.11:/code /mnt" >>nfs_st

art.sh

[root@tiny4412 ]#cat nfs_start.sh //查看腳本文件里的內(nèi)容

ifconfig eth0 192.168.10.123

mount -t nfs -o nolock 192.168.10.11:/code /mnt

[root@tiny4412 ]#chmod 777 nfs_start.sh //修改腳本權(quán)限

任務(wù)2: 360WIFI驅(qū)動(dòng)(與相關(guān)的無(wú)線管理工具安裝)

購(gòu)買的360WIFI: 2代。小度WIFI(百度)。 小米WIFI(小米)。

??學(xué)習(xí)無(wú)線WIFI驅(qū)動(dòng): 完整的WIFI驅(qū)動(dòng)

1.?如何下載官網(wǎng)提供的驅(qū)動(dòng)源碼,進(jìn)行編譯、配置、安裝: ARM

2.?學(xué)習(xí)WIFI相關(guān)的無(wú)線管理工具。

3.?學(xué)習(xí)網(wǎng)卡自動(dòng)分配IP地址,才可以訪問(wèn)公網(wǎng): 必須保證連接的熱點(diǎn)可以上網(wǎng)

uboot環(huán)境變量設(shè)置:

set bootargs root=/dev/nfs nfsroot=192.168.18.3:/work/rootfs ip=192.168.18.123:192.168.18.3:192.168.18.1:255.255.255.0::eth0:off init=/linuxrc console=ttySAC0,115200 lcd=s70 coherent_pool=2M
set bootargs noinitrd root=/dev/mmcblk0p3 rootfstype=ext3 console=ttySAC0,115200 init=/linuxrc ctp=2 lcd=S70 coherent_pool=2M
set bootargs noinitrd root=/dev/mmcblk0p2 rootfstype=ext3 console=ttySAC0,115200 init=/linuxrc ctp=2 lcd=S70 coherent_pool=2M
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 文件系統(tǒng)
    +關(guān)注

    關(guān)注

    0

    文章

    284

    瀏覽量

    19911
  • Uboot
    +關(guān)注

    關(guān)注

    4

    文章

    125

    瀏覽量

    28230
  • NFS
    NFS
    +關(guān)注

    關(guān)注

    1

    文章

    53

    瀏覽量

    26109
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Jtti:Linux中虛擬文件系統(tǒng)和容器化的關(guān)系

    Linux中,虛擬文件系統(tǒng)(VFS)和容器化技術(shù)之間有密切的關(guān)系。容器化是指通過(guò)使用容器來(lái)運(yùn)行應(yīng)用程序,而容器本質(zhì)上是在宿主機(jī)上運(yùn)行的獨(dú)立進(jìn)程,它們通常共享宿主機(jī)的操作系統(tǒng)內(nèi)核和部分文件系統(tǒng)
    的頭像 發(fā)表于 11-27 15:38 ?150次閱讀

    Linux文件系統(tǒng)掛載過(guò)程

    Linux文件系統(tǒng)(rootfs)是Linux系統(tǒng)中所有其他文件系統(tǒng)和目錄的起點(diǎn),它是內(nèi)核啟動(dòng)時(shí)掛載
    的頭像 發(fā)表于 10-05 16:50 ?423次閱讀

    如何構(gòu)建Linux文件系統(tǒng)

    構(gòu)建Linux文件系統(tǒng)是一個(gè)涉及多個(gè)步驟和概念的過(guò)程,它對(duì)于Linux系統(tǒng)的啟動(dòng)和運(yùn)行至關(guān)重要。
    的頭像 發(fā)表于 10-05 16:47 ?303次閱讀

    rtthread支持nandflash掛載fatfs文件系統(tǒng)嗎?

    rtthread支持nandflash掛載fatfs文件系統(tǒng)
    發(fā)表于 09-27 09:45

    想提高開(kāi)發(fā)效率,不要忘記文件系統(tǒng)

    ?同學(xué)們都知道,開(kāi)發(fā)過(guò)程中文件系統(tǒng)的重要性,同樣的,4G-Cat.1模組的文件系統(tǒng)也非常重要,它通常與數(shù)據(jù)傳輸速度、存儲(chǔ)效率,以及數(shù)據(jù)安全性等有非常重要的關(guān)系,在應(yīng)用開(kāi)發(fā)中也非常重要。
    的頭像 發(fā)表于 09-21 08:18 ?244次閱讀
    想提高<b class='flag-5'>開(kāi)發(fā)</b>效率,不要忘記<b class='flag-5'>文件系統(tǒng)</b>

    如何更改Linux文件系統(tǒng)終端顯示顏色

    自己制作的簡(jiǎn)單 Linux 文件系統(tǒng),你會(huì)發(fā)現(xiàn)終端顯示為黑白色,很不好看
    的頭像 發(fā)表于 08-12 17:29 ?549次閱讀
    如何更改<b class='flag-5'>Linux</b><b class='flag-5'>文件系統(tǒng)</b>終端顯示顏色

    如何修改buildroot和debian文件系統(tǒng)

    本文檔主要介紹在沒(méi)有編譯環(huán)境的情況下,如何修改buildroot和debian文件系統(tǒng)方法,如在buildroot文件系統(tǒng)中添加文件、修改目錄等文件操作,在debian
    的頭像 發(fā)表于 07-22 17:46 ?487次閱讀
    如何修改buildroot和debian<b class='flag-5'>文件系統(tǒng)</b>

    Linux高級(jí)文件系統(tǒng)管理詳解

    階的文件系統(tǒng)就得要學(xué)習(xí),本章我們會(huì)介紹磁盤陣列 (RAID),及邏輯卷軸文件系統(tǒng) (LVM),這些工具都可以幫助你管理與維護(hù)使用者可用的磁盤容量.
    的頭像 發(fā)表于 07-16 16:31 ?363次閱讀

    linux--sysfs文件系統(tǒng)

    sysfs文件系統(tǒng) sysfs,全稱為System Filesystem,是一個(gè)由Linux內(nèi)核實(shí)現(xiàn)的虛擬文件系統(tǒng)。它扮演著一個(gè)橋梁的角色,將內(nèi)核中的設(shè)備和驅(qū)動(dòng)程序信息以
    的頭像 發(fā)表于 07-08 11:37 ?875次閱讀
    <b class='flag-5'>linux</b>--sysfs<b class='flag-5'>文件系統(tǒng)</b>

    Linux添加磁盤創(chuàng)建分區(qū)、掛載

    Linux添加磁盤創(chuàng)建分區(qū)、掛載
    發(fā)表于 04-20 17:49 ?516次閱讀
    <b class='flag-5'>Linux</b>添加磁盤創(chuàng)建分區(qū)、<b class='flag-5'>掛載</b>

    STM32F412使用SD卡,SDIO,FATFS系統(tǒng),SD卡掛載文件系統(tǒng)失敗的原因?

    求助,STM32F412RET6 使用SD卡,使用SDIO接口,FATFS系統(tǒng),SD卡掛載文件系統(tǒng)失敗。返回錯(cuò)誤代碼3: 網(wǎng)上查到信息 \"FR_NOT_READY:物理驅(qū)動(dòng)沒(méi)有工作
    發(fā)表于 04-11 07:15

    STM32H750 FATFS文件系統(tǒng)掛載USB驅(qū)動(dòng),USB驅(qū)動(dòng)枚舉過(guò)程一直處于ready狀態(tài)是為什么?

    就是FATFS文件系統(tǒng)掛載USB驅(qū)動(dòng),讀寫U盤,我一直不成功USB驅(qū)動(dòng)枚舉過(guò)程一直處于ready 狀態(tài),文件系統(tǒng)
    發(fā)表于 03-27 06:52

    STM32L552VET6配置SDMMCH和文件系統(tǒng),加載文件系統(tǒng)掛載存儲(chǔ)卡會(huì)返回FR_NOT_READY如何解決?

    STM32L552VET6配置SDMMCH和文件系統(tǒng),不加載文件系統(tǒng)可以正常操作存儲(chǔ)卡,但是加載文件系統(tǒng)掛載存儲(chǔ)卡返回FR_NOT_READY,該如何解決。
    發(fā)表于 03-08 07:30

    Linux系統(tǒng)如何擴(kuò)展文件系統(tǒng)

    當(dāng)數(shù)據(jù)盤沒(méi)有創(chuàng)建分區(qū),只在設(shè)備上創(chuàng)建了文件系統(tǒng)?;蛘吒袷交擞脖P,就直接mount上系統(tǒng)使用。
    的頭像 發(fā)表于 02-21 09:53 ?842次閱讀

    鴻蒙輕內(nèi)核源碼分析:虛擬文件系統(tǒng) VFS

    接口不統(tǒng)一,若系統(tǒng)中有多個(gè)文件系統(tǒng)類型,訪問(wèn)不同的文件系統(tǒng)就需要使用不同的非標(biāo)準(zhǔn)接口。而通過(guò)在系統(tǒng)中添加 VFS 層,提供統(tǒng)一的抽象接口,屏蔽了底層異構(gòu)類型的
    的頭像 發(fā)表于 02-18 14:50 ?827次閱讀