20101016 嵌入式系統開發之道講座60. 補充 : Die Size Area Compare A1 A2 A3 A4 A5 1 3 2 44 5 7 8 9 10 6 4 96. 計算機系統 (2) – 記憶體 Program (.text) Constant (.rodata) Data or Global Variable (.data) Others data Data or Global Variable (.data) Global Variable (.bss) Other usage (buffer…) ROM or Flash ( 非揮發性記憶體 ) RAM 106. 嵌入式系統 軟體開發團隊 組織架構 Middleware 開發 management IC 驗證 OS HAL 版本 控制 文件 控制 既有 功能移植 新功能 開發 系統整合 LCD Audio Video … HAL API OS API 客戶 API 架構 AP 模擬器 架構 設計 tools Driver 開發 Project Leader 系統平台開發小組 組織架構乃依實際狀況而定 沒有完美的組織架構 但組織架構必須直接反應系統架構 134. 嵌入式系統專案 – 組織文化問題 1. Communication! 2. Communication! 3. Communication! 如何克服組織裡的障礙, 使產品順利出貨? 141. Q & A 歡迎任何與嵌入式系統這一行有關的問題 Editor's Notes 傳識資訊股份有限公司 http://www.fitpi.com 感謝各位在週末的休息時間願意花時間來聽這個講座,我們都知道周遭的電子產品都算是嵌入系統,其中搭配的硬體零件與軟體系統大不相同,我在這兩個小時內如何說完一本 900 頁的書裡面所有的內容? 在準備演講資料之前,我試著思考在兩小時不長不短的時間內,要傳達什麼資訊,對各位會最有收穫 -最後我把題目定為: All you need to know to develop an embedded system project. 很顯然沒有人有辦法在兩個小時內講完所有嵌入式系統開發的細節,為什麼我還敢訂這個題目呢?因為我要講的是共通的道理,無論你用什麼平台開發什麼產品,都必須遵循的觀念。在正式進入主題之前,大家有沒有想過:你為什麼現在要來聽這個講座? 為何你要來聽這個講座?學習應該要自己來,除非碰到了想不通的問題,需要有相關經驗者的意見。 您在工作或職涯上碰到什麼樣的問題? 或說: 與在座朋友相同領域的人們都會碰到什麼問題?對職業生涯的發展為什麼會有疑惑?這麼多東西要學,我到底該從何著手? 希望我可以讓您在這個講座上得到您的解答。在此我們先來看看嵌入式系統開發者可能會碰到的困境。 大家都來自資訊產業 or 電子產品開發這一行,可電子產品種類這麼多… 作手機和作相機算不算同一行? 應用不同,所以就算是不同行業嗎? 為什麼鴻海同一家公司裡也作手機也作相機還作印表機? 所以你在電子產品這一行,能只會作手機嗎? 就算您打算一輩子以手機為志業 – HTC 的例子 這是前兩期商周的封面新聞 以宏達電為例,他以前做 PDA 代工做得很 成功,但如果一直顧著眼前的成功,沒有想到要轉,那就沒有今天的宏達電啦!現在也是一樣,當他發現 Android 才有未來的時候,就把微軟的工程師全部轉 到 Android ,叫他們忘記「以前會做微軟」,不這樣就會死翹翹啊! 周永明 Windows Phone 7 即使在同一家公司,都是作手機,你也可能必須在不同平台,不同系統跳來跳去 你會擔心這樣的事情嗎?對我來說,我知道不管什麼機,開發時都有一樣的觀念,一樣的本質,所以我並不擔心。 就像張三丰教張無忌太極劍時,要他忘得越快越好,拘泥於劍招,你就無法發揮太極以柔克剛的精隨。 拘泥於微軟 Windows CE 的規定,你再來作 Android 就會綁手綁腳。但所謂嵌入式系統不就是把一個計算機系統,加上應用,並將其產品化的過程嗎?只要我們能真正掌握嵌入式系統開發的本質,忘記並不會對我造成影響,更何況實際上人腦根本記不得那麼多規定的東西。 嵌入式系統也有個可以一以貫之的概念,不管你是 ARM 還是 8051, Windows Mobile 還是 Android ,只要用這個概念來從事開發就是了,其他只是你要遵循的概念。這個概念我稱之為道。 面對電子產品開發的多樣性與不確定性,我想這個嵌入式系統的統一概念,就是你們出現在這裡的原因。 而我為什麼可以在這裡講授這個道理?我憑什麼認為自己可以把這個道理講清楚? 因為我寫了這本書,而這本書的目的是 – 傳道! 這本書絕非如坊間某些書只要 copy/paste 或翻譯英文技術文件即可完成,裡面都是業界真實的狀況 – 雖然年紀還不是太老,但是我的工作經歷讓我可以實際參與電子產品從頭到尾的開發過程 傳識資訊股份有限公司 http://www.fitpi.com 我實際從無到有作過嵌入式作業系統,並將其產品化 我實際從無到有,在大陸 build 了一個作資訊家電的 team 我在日本大廠待了最久,對大部分台灣公司的工作,角色是國際大廠的 OEM/ODM/3 rd party/ 代工廠,而當時我的角色就是國際大廠的客戶,所以我可以從無到有定義產品規格…一直追蹤到生產&出貨 後來到 IC 設計公司管理 SA 團隊 現在自己開公司 所以我認為我很有資格來談嵌入式系統開發各個階段該注意的事項 Facebook is better 傳識資訊股份有限公司 http://www.fitpi.com 兩個問題 l : 聽過不只一次的故事:不管作什麼產品,新生報到,學長就丟了這本書要他先 k WHY? ( 裡面有些道理是要在接實際工作之前必須知道的,以後工作合作起來會比較順暢,可以用同樣的觀念思考 ) 為什麼它會在天龍第一名這麼久 ? 很多 topic 來來去去,但紅的時間不能長久。作資訊的人,常常會對無法深入學習一些新出來的名詞而感到焦躁,但一旦你作久了,你會發現有些東西沒學到好像也沒關係 重點是學習新東西的速度,而這和經驗與觀念的熟悉有關。 所謂電子產品開發就是在內部或外部專案裡執行技術開發,兩者不能偏廢。如果你知道專案的始末與運作觀念,你在技術開發時就會多想一點,往上爬的機會也比較多。 一般工程或管理人員常會將自己侷限於某個產品或某個應用領域,同時也侷限了自己的發展 一般工程人員搞不清楚規定與觀念間的差異 誤以為把一些規定弄得滾瓜爛熟就算是嵌入式系統高手了 嵌入式系統開發者得面對很多 data sheet ,這都是資料,你要把這些都讀完嗎? 你有這些時間嗎? 我們要作個有智慧的工作者,博學這件事情交給學校老師作吧。 所以我們要從兩個方面來看嵌入式系統開發的本質與觀念 – 先從產品,在從人 所以我們的 agenda 是: 傳識資訊股份有限公司 http://www.fitpi.com 傳識資訊股份有限公司 http://www.fitpi.com 案子哪裡來? 內部&外部 為什麼每個案子的規格 / 時程 / 成本…都掐得那麼緊? 你是否常聽到研發主管跟業務副總大小聲:怎麼可能做得到啦! 有時規格只是一句話,但老闆接案時不知道 iPod Touch 到底有幾代,第四代還有帶攝象頭… 很多案子是在酒足飯飽後談定,根本沒有機會詳細討論規格 無數一般人類看不懂的市場分析方法與統計圖表 最後得到跳躍式邏輯的結論 傳識資訊股份有限公司 http://www.fitpi.com 設計 - 電子產品因為具有高時效性、生命週期短、競爭強度高的特性,很容易會讓決策者昏了頭,因此做出錯誤的決定。所以市場上永遠不乏“自殺”的產品,就像旅鼠遷徙一樣,一隻一隻前仆後繼的跌入水裡。 管理 - 既然軟體工程規範了這個多的準則,為什麼大部分的軟體專案還是會 delay ?為什麼沒有人敢說他的系統或軟體是絕對沒有 bug 的?為什麼解過的問題還會再出現?為什麼工程師拼命加班事情還是做不完?你們念資訊的不是都會修軟體工程嗎? 傳識資訊股份有限公司 http://www.fitpi.com 剛剛說的是電子產品開發週期 , 這裡開始說嵌入式系統專案生命週期 ( 不包含商業行為 , 例如為什麼要做這個感覺根本賣不掉的產品 ?) 傳識資訊股份有限公司 http://www.fitpi.com 嵌入式系統專案生命週期第一階段 – 專案啟動 Prototype => memory size, computing power 早期的疏忽或偷懶累積到後期,往往就會變成難以挽救的大災難;這是經驗法則,絕對不是危言聳聽! 傳識資訊股份有限公司 http://www.fitpi.com 剛剛說的是電子產品開發週期 , 這裡開始說嵌入式系統專案生命週期 ( 不包含商業行為 , 例如為什麼要做這個感覺根本賣不掉的產品 ?) 傳識資訊股份有限公司 http://www.fitpi.com 一種逐步完善 (progressive elaboration) 的規劃方式,應於近期完成的工作 (work) 在工作分解結構的細緻規劃,而準備在遠期完成的工作在工作分解結構的較粗略規劃,但是應在臨近當前的一兩個期間內完成的工作的詳細規劃應當在當期工作接近完成時完成。 嵌入式系統專案生命週期第二階段 – 規劃 Case study: 就算先不考慮軟體開發的工作量,客戶要求的上市時間距離現在還有約八個月,期間必須做三次試產,每次試產後要做 500 小時以上的環境測試,你知道 500 小時是多久嗎?是一個月喔!再加上 layout 、洗版子所需要的時間,這些無法壓縮時間的事項就幾乎已經把 schedule 最後面五、六個月排滿;如果中間出了什麼紕漏,後面的事情無可避免的要往後延期! Goal->WBS->Activity-> Schedule 傳識資訊股份有限公司 http://www.fitpi.com 時程計畫並非完全不能更改,必須在一定規範與審查後更改 傳識資訊股份有限公司 http://www.fitpi.com 剛剛說的是電子產品開發週期 , 這裡開始說嵌入式系統專案生命週期 ( 不包含商業行為 , 例如為什麼要做這個感覺根本賣不掉的產品 ?) 傳識資訊股份有限公司 http://www.fitpi.com 嵌入式系統開發必須秉持一種叫做“ 剛剛好就好 ”的觀念,成本剛剛好、資源剛剛好、時程剛剛好、技術剛剛好、規格也只要剛剛好就好;一味追求高深而不實用的技術層次,不見得會受到消費者的歡迎;如果為了完成一個華而不實的功能,反而延誤了最佳的上市時機,豈非得不償失! 傳識資訊股份有限公司 http://www.fitpi.com 剛剛說的是電子產品開發週期 , 這裡開始說嵌入式系統專案生命週期 ( 不包含商業行為 , 例如為什麼要做這個感覺根本賣不掉的產品 ?) 傳識資訊股份有限公司 http://www.fitpi.com 人多好辦事? - Communication channel : C(n,2) = n(n-1)/2 越道專案後期 , 加人通常只是拖慢進度 傳識資訊股份有限公司 http://www.fitpi.com 傳識資訊股份有限公司 http://www.fitpi.com 傳識資訊股份有限公司 http://www.fitpi.com 剛剛說的是電子產品開發週期 , 這裡開始說嵌入式系統專案生命週期 ( 不包含商業行為 , 例如為什麼要做這個感覺根本賣不掉的產品 ?) 傳識資訊股份有限公司 http://www.fitpi.com 人力成本 : 沒計劃地叫 RD 作東作西 , 難道 RD 是不領薪水的 ? 或者讓同樣的人去做更重要的事 , 會為公司創造更大的價值 ? 傳識資訊股份有限公司 http://www.fitpi.com 傳識資訊股份有限公司 http://www.fitpi.com 傳識資訊股份有限公司 http://www.fitpi.com 如何在設計階段就避免這樣的事情發生 ? 傳識資訊股份有限公司 http://www.fitpi.com 詳細地定義到底要作到什麼程度 ? 傳識資訊股份有限公司 http://www.fitpi.com 傳識資訊股份有限公司 http://www.fitpi.com 傳識資訊股份有限公司 http://www.fitpi.com 傳識資訊股份有限公司 http://www.fitpi.com 傳識資訊股份有限公司 http://www.fitpi.com 傳識資訊股份有限公司 http://www.fitpi.com 傳識資訊股份有限公司 http://www.fitpi.com 傳識資訊股份有限公司 http://www.fitpi.com 傳識資訊股份有限公司 http://www.fitpi.com 傳識資訊股份有限公司 http://www.fitpi.com 軟體工程師不可能寫出沒有 bug 的程式,測試工程師也不可能找出系統中所有的問題,所以測試工作一定要經過仔細的規劃,則測試工作才可以被控制,測試結果才可以被量化,產品品質才可以被保證 。 傳識資訊股份有限公司 http://www.fitpi.com Initial :軟體開發過程是無秩序的,偶而甚至是混亂的;軟體開發有時是成功的,有時是不成功的。幾乎沒有什麼過程是經過定義的,成功通常是依賴於個人的努力。 Repeatable :已建立基本的專案管理程序去追蹤成本、效益、進度和功能性;必要的開發過程已稍具紀律,此後有類似的專案可重複使用以前的成功經驗。 Defined :專案管理活動和軟體開發活動的過程均已文件化與標準化。 Managed :已收集軟體開發過程與產品品質的相關資訊,並加以量化、紀錄與分析。 Optimizing :利用組織中的歷史數據,輔以新的技術與觀念,使持續的改善成為可能。 傳識資訊股份有限公司 http://www.fitpi.com 傳識資訊股份有限公司 http://www.fitpi.com 傳識資訊股份有限公司 http://www.fitpi.com 傳識資訊股份有限公司 http://www.fitpi.com 傳識資訊股份有限公司 http://www.fitpi.com 系統架構 is everything! 然後就是 interface. 傳識資訊股份有限公司 http://www.fitpi.com 模組化不只是指軟體 , 包含軟硬體 , 人力組織規劃…等等 傳識資訊股份有限公司 http://www.fitpi.com 傳識資訊股份有限公司 http://www.fitpi.com PM 如果不具基本的專業知識 , 如何解決甚至預防這些衝突 ? 傳識資訊股份有限公司 http://www.fitpi.com 傳識資訊股份有限公司 http://www.fitpi.com 傳識資訊股份有限公司 http://www.fitpi.com 傳識資訊股份有限公司 http://www.fitpi.com 客戶或品保人員總不肯相信 -“ 不可能開發出沒有 bug 的軟體 ”這件事;然而品質系統本來就不是在追求完美無暇的產品,而是要求產品開發的過程必須依定一定的程序,好讓產品的品質是可以被控制的。 傳識資訊股份有限公司 http://www.fitpi.com 任一個 嵌入式系統專案的生命週期都是如此 , 所以管理也有一定的準則可依循 傳識資訊股份有限公司 http://www.fitpi.com 傳識資訊股份有限公司 http://www.fitpi.com NFC : 8bit 定址空間 64KB 、 1.773447MHz 速度極慢 傳識資訊股份有限公司 http://www.fitpi.com 電腦系統方塊圖 - 就是 CPU+MEMORY+IO 除了 CPU 外 , 記憶體的使用常被忽略 , 在此先對記憶體使用作一簡單的介紹 傳識資訊股份有限公司 http://www.fitpi.com 沒有硬碟 , 所以需要 ROM, 但 ROM 裡的資料不能改變 , 所以需要 RAM 記憶體區段的定義 - 記憶體的配置並沒有一定的規範 傳識資訊股份有限公司 http://www.fitpi.com 堅固 通訊 , 自我修復 省電 便宜 標準 Network stack, 穩定度 傳識資訊股份有限公司 http://www.fitpi.com 傳識資訊股份有限公司 http://www.fitpi.com 組織架構乃依實際狀況而定 沒有完美的組織架構 Tool 包含 simulator 傳識資訊股份有限公司 http://www.fitpi.com 記憶體使用配置 (memory layout - 規範某個模組或程式區段可使用某個範圍內的記憶體 ) 開發環境設計 ( 如何 build 整個系統,並讓其在機器上執行? ) 不用每個工程師都要去學 ICE 怎麼用 傳識資訊股份有限公司 http://www.fitpi.com 產品特性 –產品使用環境、販售地區、目標使用者族群以及應用範圍都可能影響系統架構的設計,例如煞車系統對正確性以及快速反應時間的要求就比洗衣機高;又例如手機或 PDA 的功能很多,而且可以讓使用者恣意操作,所以在設計使用者介面時,就要比只允許受過訓練的專人所使用的電子設備要嚴謹的多 ( 例如掛在候鳥或鯨魚身上的訊號發射器 ) 。 傳識資訊股份有限公司 http://www.fitpi.com 這就是我們專案管理中說的: 範圍管理 (Scope Management) ;在你還沒有弄清楚專案的範圍之前,你怎麼可能知道要如何設計系統架構?用茅屋的架構蓋大廈,或用鋼骨結構蓋平房都不對吧。上面那個例子就是想把 F1 跑車的引擎裝到 mini 裡,跑起來不散掉才有問題。電子產品的系統架構就如同房子的結構、車子的引擎,設計者不可不慎! 傳識資訊股份有限公司 http://www.fitpi.com 這種系統架構圖的用途類似 UML 的元件圖 傳識資訊股份有限公司 http://www.fitpi.com 寫幾個程式範例 用來描述此架構的資料流 工程師看了這些程式會比較有感覺 傳識資訊股份有限公司 http://www.fitpi.com 堅持的勇氣 軟體架構師按照抽象化原理,按步驟進行分層設計可以確保滿足系統需求,但是開發軟體是一種團隊合作的工作,軟體架構師在專案進行的過程中,常常遇到 強大的阻力。例如主管迫於時程壓力,以為分層設計的過程冗長,而希望跳過中間程序,要求設計人員直接產生 Final Solution ;或者因為組員不熟悉設計觀念,認為大體架構設計好即可直接 Coding 。按照歷史的經驗,這些開發方式看似便捷,但是常常讓專案無法管理,導致失敗。所以軟體架構師必須審度形勢,與團隊溝通,堅持正確的方法,方 能成功完成專案。 傳識資訊股份有限公司 http://www.fitpi.com - 系統架構沒有一定的標準或對錯,但無論專案複雜程度如何,在開始寫程式之前,一定要讓所有工程師知道自己負責的程式是在架構中的哪個位置,那個位置的程式有哪些底層功能可以使用 . -” 重複實現某功能”帶來的問題不是人力浪費,而是 maintain 困難;當某個相關功能出現 bug ,或修改規格的狀況時,工程師必須設法找出散布在系統中與此功能有關的程式,萬一有所遺漏,對客戶來說,人家只會認為你的系統不穩定、品質管控令人無法放心… 隊研發團隊來說則是疲於奔命、自信心受損…影響不可謂不大! - 基本上程式只能呼叫較底層的 API, 併設法包裝出上層的 API ;負責某模組的工程師應不至於天馬行空地做出像”會去操作暫存器的 AP” 這樣的東西 傳識資訊股份有限公司 http://www.fitpi.com 傳識資訊股份有限公司 http://www.fitpi.com 如果 老闆 客戶 總是常常來亂亂亂 這樣的環境下 , PM 如何確保專案運作 如何確保團隊不散 ? 傳識資訊股份有限公司 http://www.fitpi.com 傳識資訊股份有限公司 http://www.fitpi.com