2012/05/25

關於 Windows Driver 之 WDF(Windows Driver Foundation或Framework)架構

關於 Windows Driver.
———————————————————–
從 Windows Vista之後的平台,
開始使用WDF(Windows Driver Foundation或Framework)架構來寫Driver
在之前的平台主要是依照WDM來寫 (Windows Driver Modle)
且WDF可以相容於WDM

1 : Architecture of the Windows Driver Foundation
http://msdn.microsoft.com/en-us/windows/hardware/gg463314.aspx

2 : 此檔是大陸微軟的: Windows Vista 时代的驱动程序开发
這兩份檔案裡頭的圖是一樣的, 可以一起看
——————————————————————————————————–

2012/05/23

Yahoo站長工具關閉,並轉為Bing Webmaster Tools

“業界的變化是很大的”, 這句話也同樣印證在yahoo與microsoft的關係上,為什麼會這樣說呢? 因為之前Yahoo的Site Explorer明明就作得很不錯, 足以跟Google webmasters抗衡, 但是殺出個程咬金的大金主微軟,硬是讓yahoo與microsoft合作Bing Webmaster Tools


風光一時的ahoo Site Explorer

參考:
Yahoo Site Explorer关闭

2012/05/22

[windows]小畫家不見了, 怎麼辦?

通常如果電腦裡面的小畫家找不到, 可以用兩種方法處理
我也是找了一下資料:

通常小畫家不見了可能有兩種情況,一種是某天頭昏眼花不小心刪掉;另一種則是安裝作業系統時,就沒有安裝進去。

解決方式不會很難,前者可以去 C:\WINDOWS\system32\ 裡面找 mspaint.exe 這個檔案,按右鍵傳送到桌面當捷徑、或者拉到自己方便開啟的地方即可;至於後者需要作業系統安裝片才能解決,步驟如下:
01.進入「控制台」→打開「新增或移除程式」→點選「新增/移除 Windows 元件」
02.看跳出的「Windows 元件精靈」視窗中,將第一項 “Accessories and Utilities” 打勾
03.若有打勾則點選「詳細資料」→「附屬應用程式」的「詳細資料」
04.將「小畫家」勾選即開始安裝,記得要放進安裝片喔!

2012/05/21

windows底下,如何查詢USB的VID與PID?

方法一:可以使用ChipGenius
它是USB晶片製造商專門用來大量生產USB隨身碟的工具,只要用這個工具就能把同樣的USB晶片,客製化成各種不同用途的隨身碟,例如:內建開機碟區的開機隨身碟、一般儲存隨身碟、模擬成硬碟的USB-HDD…等。

[下載網址]

其實我只是單純要知道USB的VID與PID,
而不需要製作開機USB碟或是rebuild

但是ChipGenius功能滿強大的,
使用的話要注意一下, 資料先備份!


方法二: 裝置管理員
內容 => 詳細資料 => 硬體識別碼(Hardware Ids)

2012/05/16

Google / Facebook / Wiki 使用什麼程式語言作為技術架構

Google :
Python, JAVA, C++

http://blog.nccu.edu.tw/blog/yenlung/144
Python 是 Google 三大官方語言之一: 其他兩個是 JAVA, C++。另外, Google 的網路應用程式伺服器 Google App Engine, 第一個 (也是目前唯一的) 支援的就是 Python。

技術對談-看Google怎麼用Java
我們應用Interface Definition Language編譯程式,成為可以跨Java、Python及C++三種語言的系統。

facebook:
LAMP(Linux、Apache、MySQL、PHP), Python、Perl和Java, gcc和Boost, Subversion和git

Facebook使用LAMP(Linux、Apache、MySQL、PHP)作為技術架構。Facebook的一個技術架構工程師Steven Grimm在博客中提及到:幾乎我們所有的服務器都運行開源軟體。我們的Web服務器是Linux,Apache和PHP。我們數據庫是MySQL。我們使用memcached來保證網站的快速反應。一些後台應用Python、Perl和Java,以及一些gcc和Boost。程序員用Subversion和git來進行代碼管理。還有很多——像很多網站一樣,從頭到腳都是開源軟體。

wiki:
MediaWiki, php, Ubuntu Linux, Mysql

目前所用軟體稱作MediaWiki。MediaWiki採用PHP編程語言寫成,並可使用MySQL或PostgreSQL之一作為其關係資料庫管理系統。2008年10月之前,維基百科服務器的作業系統主要是採用紅帽Linux技術,但維基百科基金會於2008年10月9日宣布,旗下400多台伺服器陸續將改用Ubuntu Linux的方案。目前維基百科採用的網頁服務器軟體為Apache,資料庫是Mysql。

2012/05/14

MSDN除了官方文件之外, 也有Blog寫作以文章單一主題分享

MSND BLOG由許多blog組成
而這個網址會將大家發布的文章統整成一個時間流
http://blogs.msdn.com/

MSND BLOG的部落客們, 幾乎都是Microsoft員工
可能全球各部門都要負責將自己的部分, 寫出來當成產出吧

– The Ultimate Visual Studio Tips and Tricks Blog (分享visual studio使用小撇步)
http://blogs.msdn.com/b/zainnab/

– 開發者之魂 (微軟台灣)
http://blogs.msdn.com/b/ericsk/

2012/05/09

嵌入式系統Hardware開發注意事項

消費性電子產品的power系統很重要, 整體來說 hardwaree部份要先注意power系統
所謂所謂power順,則天下順~

電源的分電流, 可以看成大水管分流到各小水管
轉電通常是透過PWM或LDO來轉電!

線性穩壓IC (LDO)

LDO的由來:

LDO (Linear Regulator)中文名稱為線性穩壓IC, LDO 是 Low Drop Out Linear Regulator 的縮寫 ,十年前只要線性穩壓IC的Dropout Volatge 低於300~500mV 就可以稱為LDO( Low dropout Linear Regulator ), 隨著設計技術的進步, 大部份廠商的Linear Reguoator之 Dropout Voltage 都可做到300~500mV以下, 漸漸的 LDO 就跟Linear Regulator意思都一樣了。

LDO的架構:(以 LT1963為例)

LDO是所有電壓穩壓IC產品中最容易的一種, 只要一顆LDO IC加上兩顆電阻和兩三顆電容就可輕鬆的做到你想要的電壓.

LDO

LDO 的使用時機:

1. 希望得到一個很乾淨的電源, 如uV等級的電源.
2. 所需輸出電流小 通常用於10mA~1A. 1安培以上的也有, 但大部份1安培以上是要得到一個很乾淨的電源,
3. 輸入跟輸出的壓差很小, 如12V轉11V, 3.3V轉2.5V, 1.8V轉1.2V等.

LDO 的選用要領:

1. VIn 耐壓要夠 (LTC的LDO耐壓大致分為5V, 20V, 36V, 及80V等級)
2. IC 之輸出電流要夠(LTC的LDO電流大致為100mA~1.5A等級)
3. IC必須能承受降壓時所產生的溫升.(這點很重要)
4. 其他如Transient Response, Output Ripple, PSRR等就是比較細的規格, 如果你是用在跟RF有關的產品就要比較注意.

電壓也會逐步壓降壓降,
ACIN => 12 V => 5V
=> 3.3v
=> 1.8v

設計上不要一次轉換太大讓壓降太多
ex 由12v => 1.8v 公式: P=IV
因為有兩個缺點
1: 耗電
2: 產生熱能


設計上建議1.8v與3.3v的component數量要平衡

cpu =====I2C===== Sensor IC (可收3.3Vor5V最好用3.3v)
– cpu:規定i2C SPEC為3.3v
– Sensor IC : 可接受3.3v或5V, 但最好follow CPU SPEC的3.3V
– I2C:poll high也最好接同一條3.3v
(所以如果CPU i2c spec是5V,而sensor IC只接3V,則可能會level不夠高而不work)


硬體看IC需注意:
1: Power
2: BUS: i2c, smbus
3: clock
4: interupt (IC發出)
– 不需要interupt 是因為用polling 讀取

2012/05/07

更改小筆電解析度上限1024*600 就可以執行Win8 Metro

今天將小筆電EPC改安裝windows8 consumer preview版本
安裝後竟然metro apps無法使用,且win8作業系統也提示說是解析度的問題

一開始我的解析度是800*600
我立刻更新顯是驅動程式,於是上限改成1024*600
但是!!還是無法迎合metro apps的需求~

進一步要修改regedit (參考此網頁)

位置:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E 968-E325-11CE-BFC1-08002BE10318}\0000\Display1_DownScalingSupported

將原本的值從0改成1
設定完成之後,重開機。
開機重新進入之後就可以在螢幕解析度設定畫面中,找到1024×768(這是win8支援的最低解析度):
整體來說,Win8的運行效能比Win7要來的順暢很多,如果有觸控螢幕或平板,更值得一試。

2012/05/03

Roadmap是什麼呢? 你可以叫他作"產品規劃藍圖"

Roadmap是什麼呢? 在科技業上班的人一定常聽到這個單字
一般來說可以將Roadmap翻譯成“產品規劃藍圖”
這張圖表上面會記下時間點與該時間計畫推出的產品或服務


類似以下這張圖, 拿癮科技裡的文章當作範例
http://chinese.engadget.com/2011/07/06/qualcomm-snapdragon-roadmap-leaks-krait-slithering-on-the-scene/

2012/04/11

android reboot 很粗略流程說明啦~

android reboot的話
android_os_Power_reboot
在呼叫到kernel _reboot
然後就去控制硬體
會由PMIC將各components供電斷掉
然後系統再重啟

2012/03/28

無線網路失敗?!!

這個方法或許有用…

症狀:

『如 果 您 已 啟 用 另 外 的 程 式 來 管 理 這 個 無 線 連 線 ,請 使 用 該 軟 體 。
如 果 您 要 Windows 設 定 這 個 無 線 連 線 , 請 啟 動 Wireless Zero Configuration (WZC) 服 務 。 如 須 有 關 啟 動 WZC 服 務 的 資 訊 , 請 參 閱 microsoft.com 網 站 上 Microsoft 知 識 庫 ( Knowledge Base ) 中 的 871122 文 章 。』

方法:

http://tw.myblog.yahoo.com/jw!RwduGricHxbS5wePJgNshA–/article?mid=570&sc=1

※ 如果您無法開啟Windows XP的WZC,請由「開始」→「控制台」→「系統管理工具」,開啟「服務」,選擇「Wireless Zero Configuration」,按『啟動服務』工具;啟動WZC之後的無線網路,在其連線內容即會多出一個「無線網路」的窗格。

2012/03/21

0歐姆電阻的作用 / 焊接IC / 拆IC方法

0歐姆電阻的作用

大概有以下幾個功能:
① 做為跳線使用。這樣既美觀,安裝也方便。
② 在數位和類比等混合電路中,往往要求兩個地分開,並且單點連接。我們可以用一個0歐的電阻來連接這兩個地,而不是直接連在一起。這樣做的好處就是,地線被分成了兩個網路,在大面積鋪銅等處理時,就會方便得多。附帶提示一下,這樣的場合,有時也會用電感或者磁珠等來連接。
③ 做保險絲用。由於PCB上走線的熔斷電流較大,如果發生短路過流等故障時,很難熔斷,可能會帶來更大的事故。由於0歐電阻電流承受能力比較弱(其實0歐電阻也是有一定的電阻的,只是很小而已),過流時就先將0歐電阻熔斷了,從而將電路斷開,防止了更大事故的發生。有時也會用一些阻值為零點幾或者幾歐的小電阻來做保險絲。不過不太推薦這樣來用,但有些廠商為了節約成本,就用此將就了。
④ 為調試預留的位置。可以根據需要,決定是否安裝,或者其他的值。有時也會用*來標注,表示由調試時決定。
⑤ 作為配置電路使用。這個作用跟跳線或者指撥開關類似,但是通過焊接固定上去的,這樣就避免了普通用戶隨意修改配置。通過安裝不同位置的電阻,就可以更改電路的功能或者設置位址。

參考:
http://bbs.pigoo.com/thread-8534-1-1.html

焊接IC

拆IC方法

2012/03/20

網路上看到分享文-硬體研發工程師

網路上看到分享文

http://www.wretch.cc/blog/Ezra12/11242727


在A公司剛滿一年了,雖然最後選擇了離開,但我決定還是要把所見所學整理一下。在裡面看到的其實不只是在工作上而已,也包括不同人家庭、婚姻、理財、保險等等等,我嘗試一點一點在下面列出:

部門內的大環境:

我進入的部門是多媒體研發部內的TV Tuner團隊,這個部門最主要是在做顯示卡,大概站營收的90%,其餘才是TV tuner card,也就是電視卡。部門內硬體工程師加一位硬體課長只有六位,軟體工程師加上一位軟體課長共有九位,光是由軟硬體員工人數大概就可以知道,其實作產品來說軟體的effort是比硬體要大的。部門內出的產品又以OEM為多,最大宗客戶為HP,小部份才是作OBM,也就是掛自己的牌子賣。助理一位。PM(專案管理師)共有六位,四位負責OBM,只有兩位負責OEM,老實說這個人數比和營收比差距甚大。每一位工程師與PM除了向自己的課長負責之外,包括課長和全部的員工都要向部門的資深經理負責,每個星期開一到兩次會議。

硬體工程師的工作:

硬體工程師的工作簡單的說就是把產品從沒有做到有,把產品效能調整到最好,並且使之順利量產。其中大略有幾個步驟:

a. PM與Sales訂出市場策略,規劃出新產品的時程表與大致的規格,例如這次EEEPC在出貨之前,我們就必須把搭配EEEPC的USB電視卡做出來。

b. PM與工程師課長評估可行性,訂出詳細的產品規格與上游廠商(也就是產品內主要要用的晶片是哪一家的),並畫押schedule。在這個階段一定下來,馬上就會通知客戶,讓客戶知道我們大約什麼時候可以有他們或許會需要的產品。

c. 軟硬體工程師由課長指定接案,開始畫電路圖。案子一般來說又有分兩種,一種是由上游晶片廠做出來的公版(reference design),這種設計其實上游廠商已經把系統廠(也就是把消費者終端產品做出來的廠商,A公司就是)想要做的產品做出來了,從電路圖到電路板模型,從驅動程式到韌體一應俱全,此時硬體工程師一顆一顆的將電路圖近乎照抄完畢,把裡面的元件全部換成公司有現成的料件,有時會因為需要而加入自己的備用電路或元件,但通常會預留確認過沒問題的電路。另一種比較有挑戰性,就是要作一個沒有人作過的晶片組合,此時就要把不同晶片廠商的FAE(負責協助下游廠商設計的工程師)link起來,讓他們先討論,了解大致的連接之後,硬體工程師開始畫電路,遇到問題就找FAE討論,整個電路圖確定之後進到下一個設計步驟。

d. 使用軟體開始Placement,也就是零件擺放,要把電路圖上的每一顆元件按照一些設計的原則在電路板上擺在最適當的位置,這些位置非常重要,因為會直接影響下一個階段的結果,也就是走線。走線又叫做layout,這個部份我們會和大陸的layout工程師合作,首先先寫出layout rule,也就是寫出每一個零件之間的連線你想要怎麼連接,要走直線還是斜線?線寬要走多少距離?哪些線之間必須要走出一定的長度關係等等等,幾乎是把整張版子的每一個細節走法都寫出來讓layout工程師知道,之後layout工程師開使使用軟體走線,當然這當中需要不斷反覆的修改與溝通,畢竟對方是大陸人方式和台灣人不盡相同。Placement和Layout這兩個步驟是硬體工程師最精髓的地方,下功夫也就要先下在這,因為不同的線路走法會造成不同的產品效能,工程師的目標就是把效能最大化,進公司的前兩個月我都在讀這方面的書與資料。

e. Layout在硬體工程師確認完全ok之後,layout工程師會開始出圖作業,將版子的規劃圖送給PCB(印刷電路板)廠商去沖洗,也就是把他做出來,依照PCB層數的不同,最慢兩週內會洗出來,當中PCB廠也會和工程師確認當中的製作細節。接下來工程師要把版子當中的所有零件都確認好事哪一顆,公司內有沒有現成的?需不需要和其他廠商的業務拿sample?因為當版子洗出來,就要聯所有料件一起送往工廠製作產品sample。因此要先將料件備好,當中就會產生很多機會要和其他廠商業務碰面的機會。

f. 當sample版子還沒生出來之前,軟體工程師就應該先把驅動程式寫出來,sample一打出來就要測試,看看哪裡有問題。於是艱辛的debug之路就開始了,硬體工程師要分辨問題出在哪裡,作各種實驗來找答案,當中廠商FAE是最好的夥伴,常會需要他們的驗證及協助來找到問題。只要是硬體問題工程師都要自己想辦法解決,可能需要換料或是從新走線(就會回到上一個步驟重來一遍),若是驅動程式的問題則請軟體工程師或是上游廠商來作修改,一直做到產品在各樣測試下全部通過為止,其中包含基本效能測試、品質測試、高電壓防治測試、溫度測試、電磁防治測試等等。另外根據此產品要賣的國家不同,必須要去過當地的法規,每一項測試雖然都有其他的部門幫忙測試,但全部需要由硬體工程師準備、送件、壓時間、以及解bug,每一個bug若與一開始的設計有相關,無法以換零件解決的話,就必須回到走線的步驟作修改,從新打sample。如果產品是客戶要求,硬體工程師會將此ok的sample送到客戶那裡,附上自己寫的產品spec及測試結果,等客戶什麼時後有興趣看一看我們的產品。這部份必定是與其他家代工廠競爭的,因為如HP這樣的大公司必會先向許多廠商提出產品需求,看看誰做的最快最好最便宜,但通常決定的關鍵都是公司之間的”關係”。

g. 以上步驟先完成一部分時,就要開始準備產品的小量試產。A公司的產品都在蘇州生產,一般來說新產品都會先作200pcs的試產,看看在生產此產品時會不會遇到問題,硬體工程師透過email與電話監督,如果出現生產問題,要盡量想辦法在一天內提出解決方案,若沒有辦法,就必須要跑蘇州一趟了。試產當中所有的料件都需要由硬體工程師來準備,工廠PE(工廠端的工程師)會提出哪些料件不足,或是交期太長等,全都透過硬體工程師和廠商交涉來解決。如果順利,一次的試產就把生產問題都克服掉,那就準備第一次量產。也有許多狀況是必須有的二次試產,甚至第三次試產,想當然每一次試產都是成本,怎樣將次數降到最低就是關鍵了。

h. 配合sales需求開始量產。此時和上一步驟一樣,但是開始有其他單位幫忙備料、追料,工廠若出問題也必須由工廠扛較大責任,因為照理說生產問題應該在試產時就解決完畢。但是通常出問題硬體工程師還是要立即解決,不然就跑大陸。量產出問題是很嚴重的,因為會牽涉出貨時間,延遲客戶會立即反應,甚至要求賠償。

以上每一個步驟都是需要壓時間的,時間內東西沒有生出來就算失職,所以大部分RD的壓力都來自於時間不足,或是忽然有客戶很臨時的需求,於是乎加班變成常態。通常案子量產的機會不大,我做的十個案子中有一個走到量產,四個走到試產,而有五個夭折,另有胎死腹中的不計其數。這其實和markting方面有很大的關係,如果策略下的準其實不需要這麼多時間的浪費。

怎樣叫做厲害的硬體工程師?
這一點我是從我課長身上看到的,他的確在專業上卓越,更在扮演課長的角色上表現精悍。整理一下稍微可以分為幾點:

1. 基本專業上:細心是硬體工程師的必備條件,他必須對線路設計原則非常了解且堅持,工作當中會碰到一大堆人想和你在專業上妥協,甚至自己畫出一些可用的外加電路,使產品設計更加完整。同時從設計的一開始,就能針對效能問題、工廠生產問題、以及其他測試問題做出預測,直接就把解決方式設計進去,有些部門甚至要求RD不能作第二版sample,一定要一版ok,用以減少成本。對於晶片設計有不錯的認知,能加強debug速度。再厲害一些的工程師會很快幫助廠商釐清問題真相。

2. 專案管理上:我最多同時身上有七個案子在跑,每週都需要報告進度,所以如果我一天作一個那週末還得加班。厲害的工程師在專案上懂得爭取時間,包括和PM爭取,壓縮廠商時間等。為了要回家睡覺,工程師必須知道案子孰重孰輕,雖然每個案子的關係人同時都開口向你要進度,壓時間,你也必須以產品的銷售潛力當作排先後次序的原則。同時知道什麼問題要接,什麼問題要推,推不是不解決,而是推給晶片廠商去解問題而不自己解。同時要知道各家廠商的料況,避免使用交期太長的料,或是在很早之前就必須通知廠商備料。

3. 廠商關係上:厲害的硬體工程師和上游廠商關係良好,因為業務關係許多上游廠商的業務會不斷與工程師接洽,尋找切入的機會。關係良好的廠商會把最好的市場機會給你,盡全力解你的bug,以及以最快的速度提供你必要的元件。因此你不會在長官面前因為案子delay而丟臉,反而會因快速把料況問題解決而得到親睞。最後更不用說,好的廠商關係也是未來轉職莫大的幫助。廠商有百百種,三節送禮的有,聊天打屁的也有,應酬喝酒的更不佔少數。

4. 創意與提案:厲害的硬體工程師能夠向長官提案,一起討論並且建議。同時會去看其他的產品,藉以提出較具創意性的專案,不過這一項在我們部門內幾乎看不見。

2012/03/16

耗電與待機時間(battery life)換算

幾個公式:

W=PT (energy=power * time)
P=IV (power=Electric_current * Voltage)
W=IVT

通常電池的energy有兩種單位mAh與Wh

ex:
27Wh 且 7.4V
=> 套用公式P=IV => 27W/7.4V=3648mA
=> 所以27Wh約等於3648mA

—————————————
另外一例子:

電池資訊: 12.13wh, 3.7V
而總電流由41mA降到26mA

1: 先算電池總共energy
[P = IV => 12130mW = I * 3.7, I = 3278mA]
3278mAh

2: 原本電流的電池life time
(3278/41) * 1h = 79.95h

3: 降低之後電流的電池life time
(3278/26) * 1h = 126h

4: 所以增加多少時間 battery life
126h – 79.95h = 46.05h