一、Linux中的硬件設備號
設 備 設 備 號
IDE硬盤 /dev/hd[a-d] (並行硬盤)
SCSI硬盤 /dev/sd[a-p] (串行硬盤)
U盤 /dev/sd[a-p]
光驅 /dev/cdrom
軟驅 /dev/fd[0-1]
打印機 /dev/lp[0-2]
鼠標 /dev/mouse
LCD /dev/fb0
系統終端 /dev/tty0
例如:
<1>當插入第一個U盤時,它的設備號為sda1
當插入第二個U盤時,它的設備號為sdb1
<2>當插入第一個硬盤時,它的設備號為hda1
當插入第二個硬盤時,它的設備號為hdb1
二、設備的掛載
例程:將U盤插入ARM開發板
在Linux系統中,設備在上層都被映射為設備文件,比如IDE硬盤被映射為設備文件/dev/hda1,U盤被映射為設備文件/dev/sda1.如果用戶直接訪問這些設備文件,則得到的一堆二進制代碼.所以,為了方便用戶的使用,Linux規定,必須將該設備文件掛載到某一目錄下(常用的是/mnt目錄),用戶對該目錄(比如/mnt目錄)的操作(讀/寫)就是對設備文件的操作,也就是對設備的操作.當然,在實際應用中,常在/mnt目錄下新建一子目錄,比如hdisk(IDE硬盤)、udisk(U盤),然后將設備文件掛載到該子目錄下.
步驟1:將相應的文件系統燒入ARM開發板,以支持USB設備等.
步驟2:插入U盤,此時在ARM開發板的終端(putty軟件或超級終端)上會顯示該U盤的相應信息,最重要的是U盤的設備文件名.
當插入第一個U盤時,該U盤的設備文件名為/dev/sda1.
當插入第二個U盤時,該U盤的設備文件名為/dev/sdb1.
步驟3:在putty軟件(或超級終端)下輸入命令:
[root@localhost /]#cd /mnt
[root@localhost mnt]#mkdir udisk
這樣,就在/mnt目錄下新建一子目錄udisk.
注意,在putty軟件(或超級終端)下輸入命令是對ARM開發板進行操作,也就是操作ARM開發板內的文件系統.切記不要再Linux虛擬機下操作.因為現在是將U盤掛載到ARM開發板上,而不是Linux虛擬機,所以,必須對ARM開發板進行操作.
步驟4:在putty軟件(或超級終端)下輸入命令:
[root@localhost /]#mount -t -vfat /dev/sda1 /mnt/udisk
這樣,就成功的將U盤的設備文件/dev/sda1掛載到了ARM開發板的/mnt/udisk目錄下,且以fat格式進行掛載.當用戶需要訪問U盤時,可以通過對文件/mnt/udisk而實現.
注意,U盤多采用fat格式的文件系統.
步驟5:在putty軟件(或超級終端)下輸入命令:
[root@localhost udisk]#cd ..
這樣就退出了udisk目錄.
[root@localhost udisk]#umount /mnt/udisk
這樣就成功的卸載了U盤(卸載U盤前,需要先退出/mnt/udisk目錄).
三、文件的掛載
例程:將Linux虛擬機的/home/lishuai目錄掛載到ARM系統的/mnt/arm_linux文件下
步驟1:將相應的文件系統燒入ARM開發板.
步驟2:在Linux虛擬機上建立NFS服務器,並將/home/lishuai目錄作為共享目錄,且設置的主機IP地址為192.168.0.*.
步驟3:<1>在Linux虛擬機終端上通過ifconfig命令設置IP地址為:192.168.0.20,並通過ifconfig命令查詢IP地址.
<2>在Windows的網上鄰居設置IP地址為:192.168.0.40,並通過"運行>cmd>ipconfig"命令查詢IP地址.
<3>在putty軟件或超級終端上通過ifconfig命令設置ARM開發板IP地址為:192.168.0.60,子網掩碼為255.255.255.0(#ifconfig eth0 192.168.0.60 netmask 255.255.255.0)並通過ifconfig eth0命令查詢IP地址.
這樣,Windows、Linux虛擬機、ARM開發板就在同一網段上了.
步驟4:在putty軟件或超級終端上輸入命令:
#ping 192.168.0.20 //查看ARM開發板能否ping通Linux主機
#ping 192.168.0.40 //查看ARM開發板能否ping通Windows
步驟5:在putty軟件或超級終端上輸入命令:
[root@localhost /]#cd /mnt
[root@localhost mnt]#mkdir arm_linux
這樣,就在ARM開發板的文件系統中/mnt下新建了一子目錄arm_linux.
步驟6:在putty軟件或超級終端上輸入命令:
#mount -o nolock,wsize=1024,rsize=1024 192.168.0.20:/home/lishuai /mnt/arm_linux
這樣就將IP地址為192.168.0.20(Linux虛擬機)下的/home/lishuai掛載到(ARM系統)的/mnt/arm_linux目錄下.
注釋:
<1>若在putty軟件或超級終端上輸入上面的掛載命令,表示用戶對ARM系統進行操作.由於ARM內已燒入了文件系統,故/mnt/arm_linux是ARM內文件系統的一個目錄.因此,當用戶執行該命令時,表示是將IP地址為192.168.0.20的/home/lishuai掛載到(ARM系統)的/mnt/arm_linux目錄下.因此,當用戶需要在ARM系統下對Linux虛擬機的/home/lishuai目錄進行操作時,直接對/mnt/arm_linux目錄操作便可以了.
此時,在putty軟件或超級終端上輸入命令:#cd /home,但卻找不到lishuai這個目錄,這是因為在在putty軟件或超級終端上執行cd命令時,是對ARM系統的訪問.而不是對Linux主機進行訪問,雖然ARM系統已燒入了文件系統,但/home目錄下未必有lishuai這個目錄.
<2>若在Linux虛擬機的終端上輸入上面的掛載命令,表示用戶對Linux主機進行操作.當然在Linux主機內已有相應的文件系統.故/mnt/arm_linux是Linux主機的一個目錄.因此,當用戶執行該命令時,表示將IP地址為192.168.0.20的/home/lishuai掛載到Linux主機的/mnt/arm_linux目錄下.因此,當用戶需要在Linux主機下對IP地址為192.168.0.20的設備的/home/lishuai目錄進行操作時,直接對/mnt/arm_linux目錄操作便可以了.
從上面的描述可以看出,執行的對象不同,實現的掛載目的也不同.
四、對設備掛載、文件掛載的綜合實現
例程:將Windows下的某個文件通過ARM開發板放入U盤
步驟1:通過Samba服務器將Windows下的文件hehe.txt放入(linux與Windows的)共享目錄/home/lishuai內.
步驟2:通過NFS服務器將Linux主機的/home/lishuai目錄掛載到ARM開發板的/mnt/arm_linux目錄下.
在putty軟件或超級終端上輸入命令:
#mount -o nolock,wsize=1024,rsize=1024 192.168.0.20:/home/lishuai /mnt/arm_linux
步驟3:將U盤掛載到ARM開發板的/mnt/udisk目錄下.
在putty軟件或超級終端上輸入命令:
#mount -t -vfat /dev/sda1 /mnt/udisk
步驟4:在putty軟件或超級終端上輸入命令:
#cd /mnt/udisk
#cp ../arm_linux/hehe.txt ./
這樣就實現了將Windows下的某個文件通過ARM開發板放入U盤的目的.
步驟5:卸載U盤和Linux虛擬機的/home/lishuai目錄.
在putty軟件或超級終端上輸入命令:
[root@localhost udisk]#cd ..
[root@localhost mnt]#umount /mnt/arm_linux
[root@localhost mnt]#umount /mnt/udisk
設 備 設 備 號
IDE硬盤 /dev/hd[a-d] (並行硬盤)
SCSI硬盤 /dev/sd[a-p] (串行硬盤)
U盤 /dev/sd[a-p]
光驅 /dev/cdrom
軟驅 /dev/fd[0-1]
打印機 /dev/lp[0-2]
鼠標 /dev/mouse
LCD /dev/fb0
系統終端 /dev/tty0
例如:
<1>當插入第一個U盤時,它的設備號為sda1
當插入第二個U盤時,它的設備號為sdb1
<2>當插入第一個硬盤時,它的設備號為hda1
當插入第二個硬盤時,它的設備號為hdb1
二、設備的掛載
例程:將U盤插入ARM開發板
在Linux系統中,設備在上層都被映射為設備文件,比如IDE硬盤被映射為設備文件/dev/hda1,U盤被映射為設備文件/dev/sda1.如果用戶直接訪問這些設備文件,則得到的一堆二進制代碼.所以,為了方便用戶的使用,Linux規定,必須將該設備文件掛載到某一目錄下(常用的是/mnt目錄),用戶對該目錄(比如/mnt目錄)的操作(讀/寫)就是對設備文件的操作,也就是對設備的操作.當然,在實際應用中,常在/mnt目錄下新建一子目錄,比如hdisk(IDE硬盤)、udisk(U盤),然后將設備文件掛載到該子目錄下.
步驟1:將相應的文件系統燒入ARM開發板,以支持USB設備等.
步驟2:插入U盤,此時在ARM開發板的終端(putty軟件或超級終端)上會顯示該U盤的相應信息,最重要的是U盤的設備文件名.
當插入第一個U盤時,該U盤的設備文件名為/dev/sda1.
當插入第二個U盤時,該U盤的設備文件名為/dev/sdb1.
步驟3:在putty軟件(或超級終端)下輸入命令:
[root@localhost /]#cd /mnt
[root@localhost mnt]#mkdir udisk
這樣,就在/mnt目錄下新建一子目錄udisk.
注意,在putty軟件(或超級終端)下輸入命令是對ARM開發板進行操作,也就是操作ARM開發板內的文件系統.切記不要再Linux虛擬機下操作.因為現在是將U盤掛載到ARM開發板上,而不是Linux虛擬機,所以,必須對ARM開發板進行操作.
步驟4:在putty軟件(或超級終端)下輸入命令:
[root@localhost /]#mount -t -vfat /dev/sda1 /mnt/udisk
這樣,就成功的將U盤的設備文件/dev/sda1掛載到了ARM開發板的/mnt/udisk目錄下,且以fat格式進行掛載.當用戶需要訪問U盤時,可以通過對文件/mnt/udisk而實現.
注意,U盤多采用fat格式的文件系統.
步驟5:在putty軟件(或超級終端)下輸入命令:
[root@localhost udisk]#cd ..
這樣就退出了udisk目錄.
[root@localhost udisk]#umount /mnt/udisk
這樣就成功的卸載了U盤(卸載U盤前,需要先退出/mnt/udisk目錄).
三、文件的掛載
例程:將Linux虛擬機的/home/lishuai目錄掛載到ARM系統的/mnt/arm_linux文件下
步驟1:將相應的文件系統燒入ARM開發板.
步驟2:在Linux虛擬機上建立NFS服務器,並將/home/lishuai目錄作為共享目錄,且設置的主機IP地址為192.168.0.*.
步驟3:<1>在Linux虛擬機終端上通過ifconfig命令設置IP地址為:192.168.0.20,並通過ifconfig命令查詢IP地址.
<2>在Windows的網上鄰居設置IP地址為:192.168.0.40,並通過"運行>cmd>ipconfig"命令查詢IP地址.
<3>在putty軟件或超級終端上通過ifconfig命令設置ARM開發板IP地址為:192.168.0.60,子網掩碼為255.255.255.0(#ifconfig eth0 192.168.0.60 netmask 255.255.255.0)並通過ifconfig eth0命令查詢IP地址.
這樣,Windows、Linux虛擬機、ARM開發板就在同一網段上了.
步驟4:在putty軟件或超級終端上輸入命令:
#ping 192.168.0.20 //查看ARM開發板能否ping通Linux主機
#ping 192.168.0.40 //查看ARM開發板能否ping通Windows
步驟5:在putty軟件或超級終端上輸入命令:
[root@localhost /]#cd /mnt
[root@localhost mnt]#mkdir arm_linux
這樣,就在ARM開發板的文件系統中/mnt下新建了一子目錄arm_linux.
步驟6:在putty軟件或超級終端上輸入命令:
#mount -o nolock,wsize=1024,rsize=1024 192.168.0.20:/home/lishuai /mnt/arm_linux
這樣就將IP地址為192.168.0.20(Linux虛擬機)下的/home/lishuai掛載到(ARM系統)的/mnt/arm_linux目錄下.
注釋:
<1>若在putty軟件或超級終端上輸入上面的掛載命令,表示用戶對ARM系統進行操作.由於ARM內已燒入了文件系統,故/mnt/arm_linux是ARM內文件系統的一個目錄.因此,當用戶執行該命令時,表示是將IP地址為192.168.0.20的/home/lishuai掛載到(ARM系統)的/mnt/arm_linux目錄下.因此,當用戶需要在ARM系統下對Linux虛擬機的/home/lishuai目錄進行操作時,直接對/mnt/arm_linux目錄操作便可以了.
此時,在putty軟件或超級終端上輸入命令:#cd /home,但卻找不到lishuai這個目錄,這是因為在在putty軟件或超級終端上執行cd命令時,是對ARM系統的訪問.而不是對Linux主機進行訪問,雖然ARM系統已燒入了文件系統,但/home目錄下未必有lishuai這個目錄.
<2>若在Linux虛擬機的終端上輸入上面的掛載命令,表示用戶對Linux主機進行操作.當然在Linux主機內已有相應的文件系統.故/mnt/arm_linux是Linux主機的一個目錄.因此,當用戶執行該命令時,表示將IP地址為192.168.0.20的/home/lishuai掛載到Linux主機的/mnt/arm_linux目錄下.因此,當用戶需要在Linux主機下對IP地址為192.168.0.20的設備的/home/lishuai目錄進行操作時,直接對/mnt/arm_linux目錄操作便可以了.
從上面的描述可以看出,執行的對象不同,實現的掛載目的也不同.
四、對設備掛載、文件掛載的綜合實現
例程:將Windows下的某個文件通過ARM開發板放入U盤
步驟1:通過Samba服務器將Windows下的文件hehe.txt放入(linux與Windows的)共享目錄/home/lishuai內.
步驟2:通過NFS服務器將Linux主機的/home/lishuai目錄掛載到ARM開發板的/mnt/arm_linux目錄下.
在putty軟件或超級終端上輸入命令:
#mount -o nolock,wsize=1024,rsize=1024 192.168.0.20:/home/lishuai /mnt/arm_linux
步驟3:將U盤掛載到ARM開發板的/mnt/udisk目錄下.
在putty軟件或超級終端上輸入命令:
#mount -t -vfat /dev/sda1 /mnt/udisk
步驟4:在putty軟件或超級終端上輸入命令:
#cd /mnt/udisk
#cp ../arm_linux/hehe.txt ./
這樣就實現了將Windows下的某個文件通過ARM開發板放入U盤的目的.
步驟5:卸載U盤和Linux虛擬機的/home/lishuai目錄.
在putty軟件或超級終端上輸入命令:
[root@localhost udisk]#cd ..
[root@localhost mnt]#umount /mnt/arm_linux
[root@localhost mnt]#umount /mnt/udisk
五、設備號的另類應用
1.配置linux主機IP地址:192.168.220.54
2.配置ARM開發板IP地址:192.168.220.1
3.配置Windows的IP地址:192.168.220.55
4.在putty軟件或超級終端下:#ping 192.168.220.54
5.將linux主機的/home/lishuai目錄掛載到ARM開發板的/mnt/arm_linux目錄下:
#mount -o nolock,wsize=1024,rsize=1024192.168.220.54:/home/lishuai /mnt/arm_linux
6.在linux主機的/home/lishuai目錄下創建hehe.c源碼.
#vim hehe.c
#include <stdio.h>
int main(void)
{
printf("hello embeded!/n");
return 0;
}
7.在linux主機的/home/lishuai目錄下使用arm-linux-gcc編譯hehe.c(為了在ARM平台上運行,必須使用arm-linux-gcc編譯器).
#arm-linux-gcc hehe.c -o hehe.arm
編譯成功后,在putty軟件或超級終端下的/mnt/arm_linux目錄下會新產生一個hehe.arm的可執行文件.由此看出,linux主機的/home/lishuai與ARM開發板的/mnt/arm_linux目錄是同步更新的.
8.在putty軟件或超級終端下:
#./hehe.arm > /dev/tty0 //將hehe.arm執行結果打印到LCD上
#clear > /dev/tty0 //清屏
#ls > /dev/tty0 //將顯示出當前路徑(/mnt/arm_linux)下的文件和目錄
Attention!!!
1.配置linux主機IP地址:192.168.220.54
2.配置ARM開發板IP地址:192.168.220.1
3.配置Windows的IP地址:192.168.220.55
4.在putty軟件或超級終端下:#ping 192.168.220.54
5.將linux主機的/home/lishuai目錄掛載到ARM開發板的/mnt/arm_linux目錄下:
#mount -o nolock,wsize=1024,rsize=1024192.168.220.54:/home/lishuai /mnt/arm_linux
6.在linux主機的/home/lishuai目錄下創建hehe.c源碼.
#vim hehe.c
#include <stdio.h>
int main(void)
{
printf("hello embeded!/n");
return 0;
}
7.在linux主機的/home/lishuai目錄下使用arm-linux-gcc編譯hehe.c(為了在ARM平台上運行,必須使用arm-linux-gcc編譯器).
#arm-linux-gcc hehe.c -o hehe.arm
編譯成功后,在putty軟件或超級終端下的/mnt/arm_linux目錄下會新產生一個hehe.arm的可執行文件.由此看出,linux主機的/home/lishuai與ARM開發板的/mnt/arm_linux目錄是同步更新的.
8.在putty軟件或超級終端下:
#./hehe.arm > /dev/tty0 //將hehe.arm執行結果打印到LCD上
#clear > /dev/tty0 //清屏
#ls > /dev/tty0 //將顯示出當前路徑(/mnt/arm_linux)下的文件和目錄
Attention!!!
(1)通常向LCD上寫這些重定向,是寫到tty0,而不是fb0.
(2)使用NFS實現文件掛載時,必須保證下面幾點.
<1>linux主機的NFS服務器正常使用.
若有問題,可通過指令重啟服務器:#service nfs restart
或查詢服務器狀態:#service nfs status
<2>Windows、linux主機和ARM開發板的IP地址在同一網段內,且通過ARM開發板可以ping通另外兩個設備.因為文件掛載是通過網絡實現的.
<1>linux主機的NFS服務器正常使用.
若有問題,可通過指令重啟服務器:#service nfs restart
或查詢服務器狀態:#service nfs status
<2>Windows、linux主機和ARM開發板的IP地址在同一網段內,且通過ARM開發板可以ping通另外兩個設備.因為文件掛載是通過網絡實現的.
(3)在實際的嵌入式開發中,常常無法將Linux主機的某個目錄掛載到ARM開發板上,此時可以從以下三個方面着手:
<1>由於這種掛載依賴於NFS服務器,因此可以查詢NFS服務器的狀態,或者重啟NFS服務器.
#service nfs restart
#service nfs status
<2>重新配置Linux虛擬機的IP地址.這種掛載基於ARM開發板、Linux主機和Windows網卡在同一網段上,有時相互之間ping通但卻無法掛載.
<3>在Linux主機內輸入命令來查看Linux主機是否能掛載自己.
#ifconfig eth0 192.168.0.50
#mount -o nolock 192.168.0.50:/home/lishuai /mnt
//將Linux主機的/home/lishuai目錄掛載到本機的/mnt目錄下