一、Linux基礎
1、任意3種網絡操作的Linux命令,并說明他們的含義
1. ifconfig 命令
ifconfig 用于查看和配置 Linux 系統(tǒng)的網絡接口。
查看所有網絡接口及其狀態(tài):ifconfig -a 。
使用 up 和 down 命令啟動或停止某個接口:ifconfig eth0 up 和 ifconfig eth0 down 。
2. iptables 命令
iptables ,是一個配置 Linux 內核防火墻的命令行工具。功能非常強大,對于我們開發(fā)來說,主要掌握如何開放端口即可。
3. netstat 命令
Linux netstat命令用于顯示網絡狀態(tài)。
利用netstat指令可讓你得知整個Linux系統(tǒng)的網絡情況。
4. ping 命令
Linux ping命令用于檢測主機。
執(zhí)行ping指令會使用ICMP傳輸協(xié)議,發(fā)出要求回應的信息,若遠端主機的網絡功能沒有問題,就會回應該信息,因而得知該主機運作正常。
5. telnet 命令
Linux telnet命令用于遠端登入。
執(zhí)行telnet指令開啟終端機階段作業(yè),并登入遠端主機。
2、Linux支持的文件類型
普通文件類型 -
目錄文件類型 d
塊設備文件類型 b
字符設備類型 c
套接字文件類型 s
FIFO管道文件類型 p
鏈接文件類型 l
二、Linux系統(tǒng)編程
1、 嵌入式操作系統(tǒng)進程間有哪些同步通信服務?
Linux進程間通信方式主要有
信號(signal)
信號量
管道(pipe)、流管道(s_pipe)、有名管道(FIFO)。
消息隊列
共享內存
套接字(本地的還有域套接字)
三、ARM
1. 請問ARM支持哪幾種異常類型?
異常源分類
要進入異常模式,一定要有異常源,ARM規(guī)定有7種異常源:
異常源 | 描述 |
---|---|
Reset | 上電時執(zhí)行 |
Undef | 當流水線中的某個非法指令到達執(zhí)行狀態(tài)時執(zhí)行 |
SWI | 當一個軟中斷指令被執(zhí)行完的時候執(zhí)行 |
Prefetch | 當一個指令被從內存中預取時,由于某種原因而失敗,如果它能到達執(zhí)行狀態(tài)這個異常才會產生 |
Data | 如果一個預取指令試圖存取一個非法的內存單元,這時異常產生 |
IRQ | 通常的中斷 |
FIQ | 快速中斷 |
2、請簡述什么是中斷?中斷發(fā)生后,CPU做了哪些操作
中斷:是指CPU在執(zhí)行程序的過程中,出現(xiàn)了某些突發(fā)事件時CPU必須暫停執(zhí)行當前的程序,轉去處理突發(fā)事件,處理完畢后CPU又返回源程序被中斷的位置并繼續(xù)執(zhí)行。
中斷發(fā)生后,ARM核的操作步驟可以總結為4大步3小步。
4大步3小步
保存執(zhí)行狀態(tài):將CPSR復制到發(fā)生的異常模式下SPSR中;
模式切換:
CPSR模式位強制設置為與異常類型相對應的值,
處理器進入到ARM執(zhí)行模式,
禁止所有IRQ中斷,當進入FIQ快速中斷模式時禁止FIQ中斷;
保存返回地址:將下一條指令的地址(被打斷程序)保存在LR(異常模式下LR_excep)中。
跳入異常向量表:強制設置PC的值為相應異常向量地址,跳轉到異常處理程序中。
3、什么是GPIO?
general purpose input/output
GPIO是相對于芯片本身而言的,如某個管腳是芯片的GPIO腳,則該腳可作為輸入或輸出高或低電平使用,當然某個腳具有復用的功能,即可做GPIO也可做其他用途。
也就是說你可以把這些引腳拿來用作任何一般用途的輸入輸出,例如用一根引腳連到led的一極來控制它的亮滅,也可以用一根(一些)引腳連到一個傳感器上以獲得該傳感器的狀態(tài),這給cpu提供了一個方便的控制周邊設備的途經。如果沒有足夠多的gpio管腳,在控制一些外圍設備時就會力有不逮,這時可采取的方案是使用CPLD來幫助管理。
4、IIC引腳名稱及功能?
SCL 時鐘線,用于同步數(shù)據(jù)
5、IIC的S、P信號如何發(fā)出?
每次通信都必須由主設備發(fā)起,當主設備決定開始通訊時,需要發(fā)送開始(S)信號,需要執(zhí)行以下動作;
空閑時SCL默認是高電平;
將SDA線從高壓電平切換到低壓電平;
然后將SCL從高電平切換到低電平。 在主設備發(fā)送開始條件信號之后,所有從機即使處于睡眠模式也將變?yōu)榛顒訝顟B(tài),并等待接收地址位。 當雙方決定結束通訊時,需要發(fā)送停止(P)信號,需要執(zhí)行以下動作;
先將SDA、SCL設置為低電平;
然后將SCL從低電平切換到高電平;
將SDA從低電平切換到高電平。 在停止條件信號之后,I2C總線即處于空閑狀態(tài)。
6、SPI引腳名稱及功能?
串行時鐘線(SCK)、 主機輸入/從機輸出數(shù)據(jù)線MISO、 主機輸出/從機輸入數(shù)據(jù)線MOSI 從機選擇線SS
(有的SPI接口芯片帶有中斷信號線INT或INT、有的SPI接口芯片沒有主機輸出/從機輸入數(shù)據(jù)線MOSI)
四、驅動
1、查看驅動模塊中打印信息應該使用什么命令?如何查看內核中已有的字符設備的信息?如何查看正在使用的有哪些中斷號?
-
查看驅動模塊中打印信息的命令:
dmesg
-
查看加載模塊信息可以用
lsmod
已經分配的字符設備塊設備號信息可以查看下面文件
cat /proc/devices
內核會為每一個驅動模塊建立一個文件夾,如下:
ls /sys/module/
-
顯示當前使用的中斷號
cat /proc/interrupts
2、如何手動創(chuàng)建字符設備?并簡述主設備號和次設備號的用途。
創(chuàng)建字符設備命令如下:
mknod chartest c 4 64,
mknod : 創(chuàng)建設備節(jié)點
chartest :設備節(jié)點名字
c : 字符設備,
4 : 主設備號
64: 次設備號
1)主設備號:主設備號標識設備對應的驅動程序。雖然現(xiàn)代的linux內核允許多個驅動程序共享主設備號,但我們看待的大多數(shù)設備仍然按照“一個主設備對應一個驅動程序”的原則組織。
次設備號:次設備號由內核使用,用于正確確定設備文件所指的設備。依賴于驅動程序的編寫方式,我們可以通過次設備號獲得一個指向內核設備的直接指針,也可將此設備號當作設備本地數(shù)組的索引。
比如:
硬件平臺可能又4個串口,他們驅動非常類似,區(qū)別僅僅是個字對應的SFR基地址不同,
那么我們可以讓著幾個串口共用同一個串口設備驅動
通過次設備號來區(qū)別具體是哪一個串口
3、內核中使用共享資源時,為了使之滿足互斥條件,通常有哪些方法?
原子操作,自旋鎖,信號量,互斥鎖
4、Linux內核包括那幾個子系統(tǒng)?
Linux內核主要由進程調度(SCHED)、內存管理(MM)、虛擬文件系統(tǒng)(VFS)、網絡接口(NET)和進程間通信(IPC)5個子系統(tǒng)組成