職位分析:Sr. Embedded Software Engineer

-Driver development experience with programming language of C, C++ in Linux is required
-At least one the following experiences of device driver: Ethernet Switch chip, PON chipset.
-Knowledge in common used HW interface/components such as Ethernet (MAC), UART, I2C,SPI,USB , HDLC , PCI and NAND flash is required.
-Experience of Linux shell programming is a plus
-Experience of Clearcase is required;
-Experience of software modeling tools such as Rational Rose is a plus;
-System level knowledge in broadband access product or transport product is a plus.

Driver development in Linux

一般而言,固件工程師的要求要高於應用軟件工程師的層次,而其中的Linux設備驅動編程又是Linux程序設計中比較複雜的部分,究其原因,主要包括如下幾個方面:
  (1)設備驅動屬於Linux內核的部分,編寫Linux設備驅動需要有一定的Linux操作系統內核基礎;
  (2)編寫Linux設備驅動需要對硬件的原理有相當的瞭解,大多數情況下我們是針對一個特定的嵌入式硬件平臺編寫驅動的; 
  (3)Linux設備驅動中廣泛涉及到多進程併發的同步、互斥等控制,容易出現bug;
  (4)由於屬於內核的一部分,Linux設備驅動的調試也相當複雜。

關於Linux驅動開發這部分內容專文討論。

Ethernet Switch chip, PON chipset

Ehternet Switch chip, 以太網交換芯片

Passive Optical Network(PON), 無源光網絡

Ethernet PON(EPON)

一些關鍵詞彙:

DMA、三層、兩層

詳見以太網交換相關內容的帖子

Knowledge in common used HW interface/components such as Ethernet (MAC), UART, I2C,SPI,USB , HDLC , PCI and NAND flash

MAC: Media Access Control 媒體存取控制

UART: 

通用異步收發器(UART)是一種串行接口,許多微處理器和微控制器中都包含這種外設接口。異步串行接口提供了一種簡單的途徑,使兩個器件無需共享同一個時鐘信號就能進行通信。如果再加入一個合適的電平轉換器,串口還能用在RS-232和RS-485網絡中通信,或者與計算機的COM端口連接。串口只需兩根信號線(Rx和Tx)即可實現,而且只要兩端器件都採用同樣的位格式和波特率,那麼它們無需其它任何對方的信息就可以成功傳輸數據。

http://en.wikipedia.org/wiki/UART

I2C: Inter-Integrated Circuit總線是一種由PHILIPS公司開發的兩線式串行總線,用於連接微控制器及其外圍設備。

http://en.wikipedia.org/wiki/I²C

http://linux.chinaunix.net/techdoc/develop/2008/07/21/1018792.shtml

http://www.mcufan.com/xinshou/mcu-iic.htm


SPI,是英語Serial Peripheral interface的縮寫,顧名思義就是串行外圍設備接口。SPI,是一種高速的,全雙工,同步的通信總線,並且在芯片的管腳上只佔用四根線,節約了芯片的管腳,同時爲PCB的佈局上節省空間,提供方便,正是出於這種簡單易用的特性,現在越來越多的芯片集成了這種通信協議,比如P89LPC900

http://www.eefocus.com/html/07-01/061002596858.shtml

USB: USB是英文Universal Serial Bus的縮寫,中文含義是“通用串行總線”。它不是一種新的總線標準,而是應用在PC領域的接口技術。USB是在1994年底由英特爾、康柏、IBM、Microsoft等多家公司聯合提出的。不過直到近期,它纔得到廣泛地應用。從1994年11月11日發表了USB V0.7版本以後,USB版本經歷了多年的發展,到現在已經發展爲2.0版本,成爲目前電腦中的標準擴展接口。目前主板中主要是採用USB1.1和USB2.0,各USB版本間能很好的兼容。USB用一個4針插頭作爲標準插頭,採用菊花鍊形式可以把所有的外設連接起來,最多可以連接127個外部設備,並且不會損失帶寬。USB需要主機硬件、操作系統和外設三個方面的支持才能工作。

HDLC: 高級數據鏈路控制(High Level Data Link Control protocol)

高級數據鏈路控制(HDLC)協議是基於的一種數據鏈路層協議,促進傳送到下一層的數據在傳輸過程中能夠準確地被接收(也就是差錯釋放中沒有任何損失並且序列正確)。HDLC 的另一個重要功能是流量控制,換句話說,一旦接收端收到數據,便能立即進行傳輸。HDLC 具有兩種不同的實現方式:高級數據鏈路控制正常響應模式即 HDLC NRM(又稱爲SDLC)和 HDLC 鏈路訪問過程平衡(LAPB)。其中第二種使用更爲普遍。HDLC 是 X.25 棧的一部分。

HDLC 是面向比特的同步通信協議,主要爲全雙工點對點操作提供完整的數據透明度。它支持對等鏈路,表現在每個鏈路終端都不具有永久性管理站的功能。另一方面,HDLC NRM 具有一個永久基站以及一個或多個次站。

http://www.networkdictionary.cn/protocols/hdlc.php

PCI: Peripheral Component Interconnect

NAND: 

NOR和NAND是現在市場上兩種主要的非易失閃存技術。Intel於1988年首先開發出NOR flash技術,徹底改變了原先由EPROM和EEPROM一統天下的局面。緊接着,1989年,東芝公司發表了NAND flash結構,強調降低每比特的成本,更高的性能,並且象磁盤一樣可以通過接口輕鬆升級。但是經過了十多年之後,仍然有相當多的硬件工程師分不清NOR和NAND閃存。
  相“flash存儲器”經常可以與相“NOR存儲器”互換使用。許多業內人士也搞不清楚NAND閃存技術相對於NOR技術的優越之處,因爲大多數情況下閃存只是用來存儲少量的代碼,這時NOR閃存更適合一些。而NAND則是高數據存儲密度的理想解決方案。 
  NOR的特點是芯片內執行(XIP, eXecute In Place),這樣應用程序可以直接在flash閃存內運行,不必再把代碼讀到系統RAM中。
NOR的傳輸效率很高,在1~4MB的小容量時具有很高的成本效益,但是很低的寫入和擦除速度大大影響了它的性能。
  NAND結構能提供極高的單元密度,可以達到高存儲密度,並且寫入和擦除的速度也很快。應用NAND的困難在於flash的管理和需要特殊的系統接口。

NAND和NOR的差別

Linux shell programming

《UNIX Shells by example》

System level knowledge in broadband access product or transport product


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章