2008-12-16

專家觀點:不會「軟硬兼施」的電子工程師

[Via 電子工程專輯]

前兩天才在一本書上看到在台灣對工程師的要求,今天在電子工程專輯看到這篇,很值得分享。

 

============================================================

嵌入式領域剛剛起步時,大部份開發者至少都有兩種頭銜,分別是韌體工程師和硬體設計師。一些人可能同時掌握類比、電源或許甚至包括射頻電路的開發。工程師可能獨自一人負責產品中的大部份電子研發工作。有時,同一個人甚至還要進行PCB設計和原型裝配。

這種現象非常有趣!

但是,當時的系統和現在比起來更加簡單。8KB左右的程式碼就顯得很多了,SMT技術也並未將電路板組裝變成一種乏味的單調工作。12位元的ADC當時還很昂貴,這意味著通常大部份工作於類比領域的人所遭遇的雜訊問題,要比當前測量fA電流的系統少得多。低時脈速率規避了Maxwell定律的限制,而可編程邏輯當時還只是個夢想。

現在,儘管很大部份嵌入式系統規模仍然很小,通常包括一顆嵌入在小型PIC晶片或其他高整合度CPU 中的矽晶片,但應用已相當普遍。韌體可以使用上千甚至百萬行程式碼。硬體人員要處理數百個接腳的晶片,且必須執行在極低雜訊容限內,同時還必須滿足EMI 和ESD要求,這些要求十幾年前聞所未聞。

因此,工程師開始分工,最先是將工作劃分為可管理的大型任務,而後,由於必須處理先進技術及需求,因而需要更多專業化知識。

今天,越來越多的嵌入式系統開發者只關注自己的領域,對他們所設計系統的其他方面所知甚少。這是知識進步的必然:隨著科技進步,人們各自領域的專業知識增加,與此同時,知識涉獵範圍縮減。

但有趣的是,為何僅在一個世代的時間內,我們就發展到這個地步,很多韌體開發者無法回答關於他們硬體平台的簡單問題。在和工程師的偶爾交流中,我經常問及他們系統的時脈頻率、供電電壓或其他的硬體問題。不少人不能回答,有時軟體人員甚至不知道採用的是何種處理器。

反之亦然,當向硬體開發者詢問關於韌體的資料結構或者使用哪種RTOS時,你可能會看到一臉茫然的表情。FPGA專家有時對「類別(classes)」顯得無知,類比專案小組領導者可能完全不知道PWM控制。

我曾經工作於一個團隊,使用嵌入式Windows或者Linux僅僅是為了減少對韌體人員的需求,這些人很難找,比Visual Studio程式師薪酬更高。這些GUI人員可能對產品的硬體實現毫無概念。

這種自然而然並且必要的分工已經創造出新的工作種類,一種甚至還沒有名字的工作職位,我稱之為系統工程師。這些人的確對所有相關的問題深入瞭解,他們能在測量低雜訊前置放大器時,連結到VHDL以及C程式碼。有時,他們是電腦專家,能將數位硬體和程式碼關聯起來,並聯絡射頻人員,協助整個團隊解決挑戰性的多領域問題。

這些系統工程師價值連城,並且越來越難找到。有時我想他們是不是逐漸消失的物種。但是,在其他技術領域,已經透過努力使得系統人才和大量專業人才共存。例如,全科醫生(General Practitioners)可以做全身檢查。

你的經驗呢?你認為,系統工程師已瀕臨絕種了嗎?

(參考原文: Hardware/Software Disconnect,by Jack Ganssle;本文作者為嵌入式開發領域的專業講師與顧問)

 

============================================================

事實上,有一定規模的公司,其分工制度十分完整,負責軟體的、負責硬體的、負責測試的。在這樣的公司中,顯少有人能完全瞭解整個產品,硬體工程師不知道產品提供哪些功能、軟體工程師不知道板子上哪個腳位是做什麼的,測試人員不瞭解軟硬體架構。

 

文中的系統工程師存在嗎?我想是有的,不過真的越來越少了。單一領域的工作都做不完了,還有多少力氣跨足其他領域呢?不過,這種人才是真正缺少的人才,也是工程師中的搶手貨。

 

 

2008-12-12

[Debian] DHCP server

1. apt-get install dhcp3-server

2. Use ifconfig to check ethernet interface (ex. eth0)

3. edit /etc/dhcpd.conf

    subnet 192.168.0.0 mask 255.255.255.0 {

        range 192.168.0.100 192.168.0.200;   

    }

4. edit /etc/default/dhcp

    INTERFACE="eth0"

5. /etc/init.d/dhcp restart

 

p.s. Note that eth0's ip address must in the same subnet with the range wrote in dhcpd.conf

2008-11-27

TR-064 FAQs

這陣子在做 TR-064,順便將遇到的問題整理一下。

Reference :

1. What is the TR-064 ?

官方說法:『This Working Text will specify the method for configuring DSL CPE through software on PCs inside the LAN.』

CPE : customer premise equipment

其實就是從 LAN 端對 IGD (Internet Gateway Device) 做設定的一套規格,其中包含要使用什麼 Protocol(XML/SOAP/HTTP、SSDP/HTTPU)、有哪些項目需要被設定(Device or Service)、每個項目中可以執行的動作(Action)、包含哪些設定值(StateVariables)等。

1.1 Protocol

image

上面這張圖是由 TR-064 Specification 中截取出來的,我們可以看到他的Protocol部份分為兩類:XML/SOAP/HTTP與SSDP/HTTPU。SSDP/HTTPU是針對區域網路中搜尋機器所使用的協定,XML/SOAP/HTTP則是在傳送資訊時使用。

1.2 The Model

TR-064中有制定自己的 Data model,它以 UPnP IGD 1.0 specification為基礎再多作延伸,增加XML schema與parameter的定義。下圖黑色部份為 UPnP IGD 中訂定的model,藍色虛線則為 TR-064 增加的部份。

image

 

1.3 Conclusion

TR-064 不是制定 protocol 的文件,而是一套由 DSL Forum 制定的規格,只要符合文件中所規範的事項,就可說是支援 TR-064。

 

p.s. 由於各家廠商對產品的要求不同,也有可能出現與規格不符的情況。

 

2. What differents between TR-064 and TR-069 ?

TR-069 : CPE WAN Management Protocol。

TR-069 規範了WAN端對機器做設定的Protocol,藉由 CPE 與 ACS (Auto-configuration Server)的溝通讓管理者可以透過WAN端做設定。在機器上會執行一支 TR-069的 client,ACS就靠這支程式做設定。但由於各家ACS廠商在設計上有些許不同,造成在A廠可以用的,移到B廠就不一定可以正常運作,通常ACS是由電信業者所掌握。

TR-064沒有使用特別的Protocol運作,延習了UPnP的架構,增加Authentication機制,在user端安裝CPE management application就可以對機器做設定。

 

3. How to implement the TR-064 on the CPE ?

Linux-IGD 是一套 open source 的 UPnP IGD Server。雖然目前對 UPnP IGD 1.0 的支援尚不完整,也不支援 TR-064,但是個不錯的切入點,可以加以擴充以支援 TR-064。Linux-IGD 需搭配 libupnp 做為對外溝通的介面,這部份亦缺乏TR-064規範的Authentication機制,需要額外增加。

 

4. How to verify your TR-064 ?

假如你使用上面第三項所描述的方法,那麼可以使用Intel 提供的 UPnP Tool( IntelToolsForUPnPTechnology_v2.zip ) 中的 Device Spy 來驗證,安裝前需要先安裝 .NET Framework 2.0。但要注意的是Device Spy 是以 UPnP 來做 Device 的設定,而不是完整支援 TR-064 規格。

 

若是自行開發,目前還沒找到適當的驗證工具,若有人有好的 Test tool 也請留言跟我說一下。

 

5. What happen when the Device Spy cannot show correctly (TR-064 implemented by libupnp and linux-igd) ?

5.1 out of boundary

在 linux-igd 中配置的 buffer size 不夠存放要傳送出來的資訊。除了自己編寫的XML內容外,傳出的封包還會包含 SOAP資訊。

5.2 XML format does not correct

檢查傳送出來的 XML 文件格式是否正確,基本上是在每個<device>下只會有一個<serviceList>,如果<device>中還有多個device,則要用<deviceList>包起來。

5.3 XML content not correct

曾經有遇到如果XML中的value沒有設值,Device Spy 無法正確顯示的情況。舉例來說,正確的應該要這樣:

<u:GetInfoResponse xmlns:u=\"urn:dslforum-org:service:DeviceInfo:1\">

<NewManufacturerName>Jason</NewManufacturerName>

</u:GetInfoResponse>

但如果寫成:

<u:GetInfoResponse xmlns:u=\"urn:dslforum-org:service:DeviceInfo:1\">

<NewManufacturerName></NewManufacturerName>

</u:GetInfoResponse>

可能無法正確顯示。

 

// TBC...........

6. What is locking mechanism (ConfigurationStarted and ConfigurationFinished) ?

7. How about security ?

7.1 Access restriction

7.2 SSL/TLS

★★★★★★ 傑森系列 ★★★★★★