加入星計(jì)劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴(kuò)散
  • 作品版權(quán)保護(hù)
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長(zhǎng)期合作伙伴
立即加入
  • 正文
    • 一、Linux基礎(chǔ)
    • 二、Linux系統(tǒng)編程
    • 三、ARM
    • 四、驅(qū)動(dòng)
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

幾道簡(jiǎn)單的Linux驅(qū)動(dòng)相關(guān)面試題,你看你會(huì)幾題?

2022/10/25
2192
閱讀需 9 分鐘
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

一、Linux基礎(chǔ)

1、任意3種網(wǎng)絡(luò)操作的Linux命令,并說(shuō)明他們的含義

1. ifconfig 命令

ifconfig 用于查看和配置 Linux 系統(tǒng)的網(wǎng)絡(luò)接口。
查看所有網(wǎng)絡(luò)接口及其狀態(tài):ifconfig -a 。
使用 up 和 down 命令啟動(dòng)或停止某個(gè)接口:ifconfig eth0 up 和 ifconfig eth0 down 。

 

2. iptables 命令

iptables ,是一個(gè)配置 Linux 內(nèi)核防火墻的命令行工具。功能非常強(qiáng)大,對(duì)于我們開發(fā)來(lái)說(shuō),主要掌握如何開放端口即可。

 

3. netstat 命令

Linux netstat命令用于顯示網(wǎng)絡(luò)狀態(tài)。

利用netstat指令可讓你得知整個(gè)Linux系統(tǒng)的網(wǎng)絡(luò)情況。

 

4. ping 命令

Linux ping命令用于檢測(cè)主機(jī)。

執(zhí)行ping指令會(huì)使用ICMP傳輸協(xié)議,發(fā)出要求回應(yīng)的信息,若遠(yuǎn)端主機(jī)的網(wǎng)絡(luò)功能沒(méi)有問(wèn)題,就會(huì)回應(yīng)該信息,因而得知該主機(jī)運(yùn)作正常。

5. telnet 命令

Linux telnet命令用于遠(yuǎn)端登入。

執(zhí)行telnet指令開啟終端機(jī)階段作業(yè),并登入遠(yuǎn)端主機(jī)。

2、Linux支持的文件類型

普通文件類型   -

目錄文件類型  d

塊設(shè)備文件類型  b

字符設(shè)備類型  c

套接字文件類型  s

FIFO管道文件類型 p

鏈接文件類型  l

二、Linux系統(tǒng)編程

1、 嵌入式操作系統(tǒng)進(jìn)程間有哪些同步通信服務(wù)?

Linux進(jìn)程間通信方式主要有

信號(hào)(signal)

信號(hào)量

管道(pipe)、流管道(s_pipe)、有名管道(FIFO)。

消息隊(duì)列

共享內(nèi)存

套接字(本地的還有域套接字)

 

三、ARM

1. 請(qǐng)問(wèn)ARM支持哪幾種異常類型?

異常源分類

要進(jìn)入異常模式,一定要有異常源,ARM規(guī)定有7種異常源:

異常源 描述
Reset 上電時(shí)執(zhí)行
Undef 當(dāng)流水線中的某個(gè)非法指令到達(dá)執(zhí)行狀態(tài)時(shí)執(zhí)行
SWI 當(dāng)一個(gè)軟中斷指令被執(zhí)行完的時(shí)候執(zhí)行
Prefetch 當(dāng)一個(gè)指令被從內(nèi)存中預(yù)取時(shí),由于某種原因而失敗,如果它能到達(dá)執(zhí)行狀態(tài)這個(gè)異常才會(huì)產(chǎn)生
Data 如果一個(gè)預(yù)取指令試圖存取一個(gè)非法的內(nèi)存單元,這時(shí)異常產(chǎn)生
IRQ 通常的中斷
FIQ 快速中斷

2、請(qǐng)簡(jiǎn)述什么是中斷?中斷發(fā)生后,CPU做了哪些操作

中斷:是指CPU在執(zhí)行程序的過(guò)程中,出現(xiàn)了某些突發(fā)事件時(shí)CPU必須暫停執(zhí)行當(dāng)前的程序,轉(zhuǎn)去處理突發(fā)事件,處理完畢后CPU又返回源程序被中斷的位置并繼續(xù)執(zhí)行。

中斷發(fā)生后,ARM核的操作步驟可以總結(jié)為4大步3小步。

4大步3小步

保存執(zhí)行狀態(tài):將CPSR復(fù)制到發(fā)生的異常模式下SPSR中;

模式切換:

CPSR模式位強(qiáng)制設(shè)置為與異常類型相對(duì)應(yīng)的值,

處理器進(jìn)入到ARM執(zhí)行模式,

禁止所有IRQ中斷,當(dāng)進(jìn)入FIQ快速中斷模式時(shí)禁止FIQ中斷;

 

保存返回地址:將下一條指令的地址(被打斷程序)保存在LR(異常模式下LR_excep)中。

跳入異常向量表:強(qiáng)制設(shè)置PC的值為相應(yīng)異常向量地址,跳轉(zhuǎn)到異常處理程序中。

3、什么是GPIO?

general purpose input/output  

GPIO是相對(duì)于芯片本身而言的,如某個(gè)管腳是芯片的GPIO腳,則該腳可作為輸入或輸出高或低電平使用,當(dāng)然某個(gè)腳具有復(fù)用的功能,即可做GPIO也可做其他用途。

也就是說(shuō)你可以把這些引腳拿來(lái)用作任何一般用途的輸入輸出,例如用一根引腳連到led的一極來(lái)控制它的亮滅,也可以用一根(一些)引腳連到一個(gè)傳感器上以獲得該傳感器的狀態(tài),這給cpu提供了一個(gè)方便的控制周邊設(shè)備的途經(jīng)。如果沒(méi)有足夠多的gpio管腳,在控制一些外圍設(shè)備時(shí)就會(huì)力有不逮,這時(shí)可采取的方案是使用CPLD來(lái)幫助管理。

4、IIC引腳名稱及功能?

SDA 數(shù)據(jù)線,用于傳輸數(shù)據(jù)

SCL 時(shí)鐘線,用于同步數(shù)據(jù)

5、IIC的S、P信號(hào)如何發(fā)出?

每次通信都必須由主設(shè)備發(fā)起,當(dāng)主設(shè)備決定開始通訊時(shí),需要發(fā)送開始(S)信號(hào),需要執(zhí)行以下動(dòng)作;

空閑時(shí)SCL默認(rèn)是高電平;

將SDA線從高壓電平切換到低壓電平;

然后將SCL從高電平切換到低電平。 在主設(shè)備發(fā)送開始條件信號(hào)之后,所有從機(jī)即使處于睡眠模式也將變?yōu)榛顒?dòng)狀態(tài),并等待接收地址位。 當(dāng)雙方?jīng)Q定結(jié)束通訊時(shí),需要發(fā)送停止(P)信號(hào),需要執(zhí)行以下動(dòng)作;

先將SDA、SCL設(shè)置為低電平;

然后將SCL從低電平切換到高電平;

將SDA從低電平切換到高電平。 在停止條件信號(hào)之后,I2C總線即處于空閑狀態(tài)。

6、SPI引腳名稱及功能?

串行時(shí)鐘線(SCK)、 主機(jī)輸入/從機(jī)輸出數(shù)據(jù)線MISO、 主機(jī)輸出/從機(jī)輸入數(shù)據(jù)線MOSI 從機(jī)選擇線SS

(有的SPI接口芯片帶有中斷信號(hào)線INT或INT、有的SPI接口芯片沒(méi)有主機(jī)輸出/從機(jī)輸入數(shù)據(jù)線MOSI)

 

四、驅(qū)動(dòng)

1、查看驅(qū)動(dòng)模塊中打印信息應(yīng)該使用什么命令?如何查看內(nèi)核中已有的字符設(shè)備的信息?如何查看正在使用的有哪些中斷號(hào)?

 
  • 查看驅(qū)動(dòng)模塊中打印信息的命令:
 dmesg
 
  • 查看加載模塊信息可以用
lsmod

已經(jīng)分配的字符設(shè)備塊設(shè)備號(hào)信息可以查看下面文件

cat /proc/devices

內(nèi)核會(huì)為每一個(gè)驅(qū)動(dòng)模塊建立一個(gè)文件夾,如下:

ls /sys/module/
 
  • 顯示當(dāng)前使用的中斷號(hào)
cat /proc/interrupts

2、如何手動(dòng)創(chuàng)建字符設(shè)備?并簡(jiǎn)述主設(shè)備號(hào)和次設(shè)備號(hào)的用途。

創(chuàng)建字符設(shè)備命令如下:

mknod chartest c 4 64,

mknod : 創(chuàng)建設(shè)備節(jié)點(diǎn)
chartest :設(shè)備節(jié)點(diǎn)名字
c : 字符設(shè)備,
4 : 主設(shè)備號(hào)
64: 次設(shè)備號(hào)

1)主設(shè)備號(hào):主設(shè)備號(hào)標(biāo)識(shí)設(shè)備對(duì)應(yīng)的驅(qū)動(dòng)程序。雖然現(xiàn)代的linux內(nèi)核允許多個(gè)驅(qū)動(dòng)程序共享主設(shè)備號(hào),但我們看待的大多數(shù)設(shè)備仍然按照“一個(gè)主設(shè)備對(duì)應(yīng)一個(gè)驅(qū)動(dòng)程序”的原則組織。

次設(shè)備號(hào):次設(shè)備號(hào)由內(nèi)核使用,用于正確確定設(shè)備文件所指的設(shè)備。依賴于驅(qū)動(dòng)程序的編寫方式,我們可以通過(guò)次設(shè)備號(hào)獲得一個(gè)指向內(nèi)核設(shè)備的直接指針,也可將此設(shè)備號(hào)當(dāng)作設(shè)備本地?cái)?shù)組的索引。

比如:

 硬件平臺(tái)可能又4個(gè)串口,他們驅(qū)動(dòng)非常類似,區(qū)別僅僅是個(gè)字對(duì)應(yīng)的SFR基地址不同,
 那么我們可以讓著幾個(gè)串口共用同一個(gè)串口設(shè)備驅(qū)動(dòng)
 通過(guò)次設(shè)備號(hào)來(lái)區(qū)別具體是哪一個(gè)串口

3、內(nèi)核中使用共享資源時(shí),為了使之滿足互斥條件,通常有哪些方法?

原子操作,自旋鎖,信號(hào)量,互斥鎖

4、Linux內(nèi)核包括那幾個(gè)子系統(tǒng)?

Linux內(nèi)核主要由進(jìn)程調(diào)度(SCHED)、內(nèi)存管理(MM)、虛擬文件系統(tǒng)(VFS)、網(wǎng)絡(luò)接口(NET)和進(jìn)程間通信(IPC)5個(gè)子系統(tǒng)組成

相關(guān)推薦

電子產(chǎn)業(yè)圖譜

公眾號(hào)『一口Linux』號(hào)主彭老師,擁有15年嵌入式開發(fā)經(jīng)驗(yàn)和培訓(xùn)經(jīng)驗(yàn)。曾任職ZTE,某研究所,華清遠(yuǎn)見(jiàn)教學(xué)總監(jiān)。擁有多篇網(wǎng)絡(luò)協(xié)議相關(guān)專利和軟件著作。精通計(jì)算機(jī)網(wǎng)絡(luò)、Linux系統(tǒng)編程、ARM、Linux驅(qū)動(dòng)、龍芯、物聯(lián)網(wǎng)。原創(chuàng)內(nèi)容基本從實(shí)際項(xiàng)目出發(fā),保持原理+實(shí)踐風(fēng)格,適合Linux驅(qū)動(dòng)新手入門和技術(shù)進(jìn)階。