2013年6月17日 星期一

測試插入程式碼

讀取記憶體程式

void memread()
{
 int *p, i;
 p = (int *)0xcccccccc; //指向0xcccccccc位址
 while(1){
  i = *p; //一直讀取0xcccccccc位址的內容
 }
}

設定記憶體

在某工程中,要求設定一個絕對位址為0xaaaa的整數型變數的值為0x1111。 編譯器是一個純粹的ANSI編譯器。寫程式碼去完成這一任務。 這一問題測試你是否知道為了存取一絕對位址把一個整數型強製轉型 (typecast) 為一指標是合法的。這一問題的實作模式隨著個人風格不同而不同。典型的類似程式碼如下︰
void setmem()
{
    int *ptr;
    ptr = (int *)0xaaaa;
    *ptr = 0x1111;
}
 一個較常用的方法是︰
void setmem()
{
    *(int * const)(0xaaaa) = 0x1111;
}



定義一個最大值的巨集
#define MAX(A,B) ((A>B)?A:B)

call by value 和call by referece

void main()
{
 int x=10,y=20; 
 printf("x= %d,y= %d before swap(call by reference).\n",x,y);
 swap(&x,&y); 
 printf("x= %d,y= %d after  swap(call by reference).\n",x,y);
}

void swap_ref(int *px,int *py)
{
 int temp;
 temp=*px;
 *px=*py;
 *py=temp;
}

下列無法做swap
void main(){
 int i=10, j=20;
 printf("i= %d, j=%d before swap(call by value).\n",i,j);
 swap_val(i,j);
 printf("i= %d, j=%d after swap(call by value).\n",i,j);
 printf("MAX of A and B is %d",MAX(10,100));
}
>void swap_val(int i, int j)
{
 int temp;
 temp=i;
 i=j;
 j=temp;
}

2013年6月11日 星期二

電子廠工作職稱與職務內容簡敘述

每間公司的運作都是由老闆聘請一堆低不同部門的人員所組成, 以下就個人經驗和網路或書籍上得到的內容做簡單的整理, 是和電子產業工程職務做為分類

====產品相關====
PM(Product Manager)產品經理
    =>規劃產品規格, 產品佈局, 成本及市場評估, 決定出貨時間點
PJM(Project Manager)專案經理
    => 管理時程, 也要去追重要的里程碑日期.

====工程相關====
HW(Hardware) 硬體工程師
    =>選用物料, 電路設計, PCB佈局
FW(Firmware) 韌體工程師
    =>將板子MCU及控制晶片寫入開機程式, 使系統可以有功能
SW(Software)軟體工程師
    => 處理介面流程, UI功能
SA (System Application) 系統應用工程師
    => IC廠設計開發板, 要能驗證新IC的所有功能
ME(Machnicl)機構工程師
    => 設計外殼及內部PCB及線材的擺放
ID(Identical)外觀設計工程師
   => 提供吸引人的外觀圖,

====測試相關====
QA (Quality assurance)
    =>驗證產品基本功能及行為是否符合PM開出的規格
ETD (Electircal Test department)
    =>除了要測試基本功能外也要仿造客戶會接上的裝置來做測試
EMI (ElectroMagnetic Interference)電磁干擾
    =>打靜電槍看產品能不能承受且不能使產品受損, 也要在chamber內測試
        會不會有過高的頻率幅射的可能
Safty 安規
    => 產品內組裝及防護IC調查使用狀況

2013年6月2日 星期日

[轉]如何成為一位傑出的工程師(下)


九個工作策略
1. 閃亮的軌跡(Blazing trails), 2. 知道該問誰(Knowing who knows), 3. 主動的自我管理(Proactive self-management), 4. 掌握全局(Getting the big picture), 5. 正確地追隨(The right kind of followership), 6. 團隊合作(Teamwork as joint ownership of a project), 7. 小領導者的領導風格(Small-l leadership), 8. 精明(Street smarts) , 9. 呈現(Show and tell)

好了,如果你是一個希望能夠提高生產力,增加自己智慧資產的工程師。你該如何做才能讓別人覺得你表現傑出呢?在我們這個研究之前,這個答案並不存在。無論是在學校或是在職場中,沒有任何地方在教培養傑出表現的工作策略。大多數的人藉由試誤法來驗證自己的想法。然而,許多計術上極有競爭力的工程師因為在這個過程中犯了太多錯誤,使得他們的整體表現僅僅比平均稍高一些而已。例如,他們可能沒有採取主動積極的態度,或者是他們在對整個組織重要性不高的方面主動積極。

我們發現,改變你做事的方法以及和別人共事的方法是有必要的。表現傑出的人事實上做事的方法和其他的人有相當的差異。他們將他們的工作策略融合到每天的表現中,產生一個前後一致的行為準則。任何一位具有足夠聰明和動機的工程師都可以獲得卓越表現的能力。

盡管如此,這種生產力的發揮並不是像大爆炸一樣的釋放出來。也沒有魔法藥丸或是神奇子彈可以讓你瞬間出類拔萃。而是藉由九個互相結合在一起的工作策略為基礎發展起來的。以下依照重要性排列,分別介紹這九種工作策略。

[轉]如何成為一位傑出的工程師(上)

如何成為一位傑出的工程師
How to be a Star Engineer
Robert E. Kelley, Carnegie Mellon University
(Robert E. Kelley, "How to be a star engineer," IEEE Spectrum, pp. 51-58, Oct. 1999.)
翻譯:馬仕毅

1985年,我被問了一些問題,從那時起,我就開始找尋真正的答案。提出問題的是貝爾實驗室(那是仍然是AT&T的一部分,現在屬於Lucent Technologies Inc.)。貝爾實驗室由全世界最好的大學中聘用了最優秀,最聰明的畢業生,然而,最後只有少數的人真正發揮他們的潛力而成為卓越的工程師。大部分的新進人員發展成可以穩定地完成任務的執行者,生產力並沒有特別突出,無法幫助貝爾實驗室在提昇AT&T的市場競爭力方面,做出顯著的貢獻。
貝爾實驗室想要知道的是:傑出的工程師和普通的工程師到底有什麼不同?傑出與否是由天份來決定?還是可以經由學習得來?可不可以設計一套提昇生產力的計畫來幫助表現平平的員工成為傑出的人才?
不只有公司才會尋求這些問題的答案。由1985年開始,幾乎所有我遇到的工程師都希望能夠增加自己的生產力。他們覺得自己也可以出類拔萃,他們不喜歡被同事的光芒所掩蓋。因此他們不斷地努力求進步。在現今的職場中,資源越來越少,工作的要求卻越來越多。全球化的競爭,購併風氣,企業裁員使得每位員工所承擔的責任越來越重大,而可利用的資源卻比以前少。環顧你的四周,和五年前比較,那位不是比以前工作更努力,工時更長?誰不是待完成的工作一堆,好多的電話和電子郵件還沒回?大家都在暗自擔心,如果不能再提高生產力,下一個被裁員的會不會是自己?誰不希望能夠重新掌握自己的生活-在工作和個人生活中取得一個更好的平衡點?每個人都聽過:更聰明地工作(work smarter),只是似乎沒人知道那是什麼意思。
我和我的同事從那時起就開始研究公司和個人生產力的問題。來自貝爾實驗室,3M,及惠普公司總計超過一千位工程師在這個研究的過程中,同時扮演了研究夥伴及受試者的角色。為了瞭解傑出工程師的秘密,我們使用了問卷調查,直接觀察,工作日記,焦點團隊(focusgroups),以及面試等方法來收集資料。並在適當的時候使用統計分析,內容分析(contentanalysis),及反覆的模型建立(iterative model building)等方法。
許多其他的公司也都參與了這個過程,包含了以電機工程師為重心的Analog Devices, Fore Systems, AirTouch,以及一些包含其他領域工程師的公司如Shell Oil, KimberlyClark等。這些公司採用了我們的生產力提昇計畫。有效地將表現普通的員工轉換成傑出的工程師,而在這個過程中,也讓我們對於產生傑出表現的關鍵因素有了更多的了解。

2013年5月12日 星期日

[轉]訊號於傳輸時的衰減失真

[參考資料] 新電子

解決訊號失真 實體層測試舉足輕重   
在訊號傳輸的實體層規範中,最重要的就是減少失真,並讓訊號能在接收端能正確的還原發射端的資料,當然在接收端中可以用前向糾錯(FEC)等方式將資料做還原,但是愈多錯誤須做的冗餘運算就會增多,這樣一來不但會降低整體系統頻寬,也會讓IC設計成本增加,在訊號完整性中,傳輸線是高速通訊的根本,因此也要先對其物理特性做一探討。  
3是以一般FR4線路板為例,透過弦波的方式行走一段距離後得到的訊號衰減結果,其中影響到的參數除原本傳輸線阻抗匹配設計外,還有材料特性,如介電常數的Dk及耗損因子的Df。在理想情況下,DkDf和頻率無關,若是以Dk=4Df=0.02FR4來看,其每吋衰減量為



,如果是以3Gbit/s傳輸速率,並以NRZ的數位訊號格式來表示,其基頻為1.5GHz  
3 PCB為例,不同的Df值在3Gbit/s數位訊號下的眼圖模擬。

2013年5月7日 星期二

系統廠工作上的專有名詞

經常在工作上會用到的英文專有名詞的縮寫

===========流程方面=============
EVT : Engineering Verification Test (工程驗證測試階段)
DVT: Design Verification Test (設計驗證測試階段)
PVT: Production Verification Test(生產驗證測試階段)
PR: Pilot Run 試產
MP: Mass production 量產

 ===========維修方面=============
FMEA = Failure mode and effects analysis
RMA = Return material Authroization CAR = Correct Action Report.

 ===========採購方面=============
MSRP: manufacturer's suggested retail price  製造商建議零售價
NRE : Non-Recurring Engineering Expense : 一次性工程費用
MOQ: minimum order quantity 最小採買量
ROI: retuen on investment 投資報酬率 
FOB:Free on Board 賣方將貨物交出責任即告解除,此後的費用與風險均由買方負擔

MAP: Minimum advertised price 最小廣告價格


 ===========認證方面=============
EMC: Electromagnetic Compatibility 電磁相容
BSMI:  Bureau of Standards, Metrology and Inspection臺灣經濟部標准檢驗局
          檢測項目包括EMIEMS另外還有safety

2013年5月6日 星期一

[轉]Firmware Engineer at Qualcomm


網路上查到的FW enginneer 的面試過程及建議,

==============================開始投履歷及面試====
Interview Process:
Applied Online
After about two weeks HR e-mail me to set-up phone interview. Then I had a phone interview on same day.

During Phone interview key question I asked is "do you have any concerns about me?" He told me he wants some body committed to position at least two years. Also He told me he will set me up for onsite interview.

After another week HR e-mail me for on site interview.
On site is with 1 HR and 5 Engineers on same department

HR Will ask you how much money you made in previous job. Why you want to quit the job (I was currently employed), why you want to work @ Qualcomm, your future goals...

Then the fun starts with the five engineers.

Each interview takes about an hour. Lunch is also an interview.
==============================心得建議===========
Each interviewer is very professional; however they will test you until you break to see how you handle. Based on my experience they're not testing to see if you know everything, it's more of testing your personality, and how your problem solving skills.