1. 程式人生 > >EC修煉之道—程式碼架構

EC修煉之道—程式碼架構

         EC就是膝上型電腦上的一個嵌入式控制器。作為一個主機板軟體開發人員,一般說EC,就是EC韌體程式。

         想要做好EC,首先要懂程式碼架構。這個東西說簡單就簡單,說困難也困難,要有人幫忙點破,然後一切都會OK。我剛到現在的這家公司,一個同事說,他做EC,經常會有很多奇奇怪怪的問題反覆出現。後來,我才瞭解,他沒有在專業主機板團隊做EC的經驗,又得不到EC廠商的技術支援,所以對EC程式碼架構不瞭解。我比他幸運,因為我剛做EC的時候,臺灣的EC工程師JIMMY每月都會有一週的時間到大陸出差,幫客戶解決問題。有一天下午,我拉著JIMMY,幫我培訓了一個下午(算我半個老師了),感謝JIMMY幫我打下了一個還算不錯的基礎。當時陪他來我們公司的那個大陸工程師都不耐煩了,但JIMMY仍然耐心地幫我培訓。聽說他去了聯發科,祝願他能發展得更好。

         個人認為,EC的整個程式碼架構,應該分為4個部分:1,初始化部分;2,執行時中斷服務函式;3,執行時Dispatch中斷處理函式;4,執行時任務,即在TIMER中斷處理函式中加的輪詢程式碼。

1 初始化

         不管是EC,還是其它的系統軟體,程式碼最開始的部分總是初始化。初始化各個功能模組,讓其符合程式碼架構的需要和平臺功能模組的需要。

         一般來講,初始化程式碼主要做如下幾個事情:將中斷服務函式與中斷入口地址對應起來;設定好堆疊,為C環境做準備;初始化RAM為0;初始化各個模組,包括GPIO,中斷控制單元,PWM,AD/DA,PS2,Timer,SMBUS等;設定看門狗;etc

2 執行時中斷服務函式

         程式碼執行過程中,會有各種硬中斷及軟中斷來中斷CPU的執行,請求CPU的控制權。CPU會實時跳入到某個中斷服務函式中,執行相應的例程。中斷服務函式程式碼段,一般應該儘量短,最好設定一下中斷標誌,立即跳出。這樣一方面不會打斷別的程式太久,另一方面也讓其它中斷服務函式有公平的執行機會。

3 執行時Dispatcher中斷處理函式

         在EC初始化完成後,如果不進入低功耗狀態,那麼EC就需要正常Dispatcher各個中斷處理函式。中斷服務函式一般不會做太多工作,大部分工作都會交給中斷處理函式來執行。

   Dispatcher各個中斷處理函式是靠輪詢的方式來實現的,這樣可以保證各個中斷處理函式都有可能被執行,又可以保證一定的優先順序。只要把重要的中斷處理函式放在前面輪詢,就可以保證其優先呼叫。具體做法,可以檢視各個廠商的EC程式碼,在main()函式裡,都會有while(TRUE)類似的語句,在它括起來的程式碼段裡,會有查詢各個標誌位,然後執行相應函式的程式碼。

4 新增執行時任務

         為什麼用EC,那是因為只要有電,EC的控制權就一直在EC韌體手中。X86的CPU就不一樣了,一跑進作業系統,BIOS再想做些事情就特別困難。

         我們總是需要EC來檢測平臺的一些狀態,比如電池電量,CPU溫度,風扇轉速,按鍵狀態,平臺功耗等。這時,我們就需要在Timer裡,加入自己的程式碼,每隔一段時間,程式碼就會被執行一次。

         以上就是我所提煉的EC的整個程式碼架構了。在我接觸的EC裡,華邦,ITE,ENE都是這種架構,只有瑞薩的EC程式碼有點例外。不過我還是覺得上述程式碼架構比較好。

前年,我帶的一個學生要用一款微控制器做溫控模組。我便給他搭了一個軟體架構,讓他往中斷處理函式裡面加程式碼。他說我怎麼做得這麼快,一個晚上的時間就幫他搭好了。現在他也在做EC,肯定不再認為我CODE能力好了。因為那套溫控模組的程式碼架構完全就是抄襲EC的思想(^_^),連腦子都不帶轉一下的。

相關推薦

EC修煉程式碼架構

         EC就是膝上型電腦上的一個嵌入式控制器。作為一個主機板軟體開發人員,一般說EC,就是EC韌體程式。          想要做好EC,首先要懂程式碼架構。這個東西說簡單就簡單,說困難也困難,要有人幫忙點破,然後一切都會OK。我剛到現在的這家公司,一個同事說,

EC修煉—SMBUS

SMBUS在EC firmware中佔有重要的地位,我們先來看一下它的應用:(1)電池模組需要它來通訊,如SmartBattery IC以及ChargeIC。(2)平臺各個溫度獲取,通過與溫度感測器,SMBUSLINK1,或顯示卡晶片的SMUBS相連,來讀取其溫度值。(3

首席架構修煉-系統架構設計原理與核心技術-張勇-專題視訊課程

首席架構師修煉之道-系統架構設計原理與核心技術—112人已學習 課程介紹        系統架構是解決系統設計和演變過程中由於業務功能和資料體量的提升而出現的各種問題的方法論和實踐,關注於系統構成結構化元素、介面及其相互協作,並提供指導性架構風格,從而實現從原型到發現和改進問

EC修煉—Thermal

重啟,藍屏,關機,休眠,一系列災難性的錯誤均有可能是溫度過高引起。即使是行業的領頭羊,也經常性地栽倒在這個問題上。雖說這個問題應該是Thermal工程師應該考慮的問題,但作為可以控制風扇和可以通知HOST端的EC工程師來說,也應該瞭解Thermal的一些細節,以期能夠快速準

EC修煉—按鍵的做法

在EC的各項功能中,按鍵的作用非常重要。機器上的PowerSwitch按鍵,亮度加減按鍵,聲音加減按鍵,WIFI&Bluetooth開關等,都有可能用到按鍵功能。          按鍵的做法有兩種:一是使用中斷的方式;二是使用輪循GPIO的電平狀態來做按鍵功能。

EC修煉—ECSCI

         ECSCI是EC上的一個請求系統中斷的PIN。電池資訊的上報,溫度上報,LID狀態上報,亮度調節請求以及切屏等功能都需要此中斷來通知作業系統執行。既然是中斷,就必須有中斷號,ECSCI和其它一些DEVICE共用一個SCI中斷號,由BIOS來指定,並通過A

《編寫高質量程式碼--web前端開發修煉》筆記-CSS

此篇為本筆記的第二篇 標準模式與怪異模式(模擬老式瀏覽器的行為) 如果漏寫了DTD宣告,Firefox仍然會按照標準模式來解析網頁,但在IE中(包括IE6,IE7,IE8)就會觸發怪異模式 IE盒模型的解析 標準模式:網頁元素的寬度有padding,bo

編寫高質量程式碼:Web前端開發修煉(三)

第五章:高質量的Javascript 這章的內容我看的最久,這是跟我js基礎沒打好有著莫大的關係,但是還是耐著性子看完了, 不懂的東西都是百度上搜索,理解後再繼續。下面是記錄下來的筆記。 1)如何避免JS衝突 A:匿名函式 在多人合作一個網站時,每個人都會寫自己的

架構修煉(二)——架構?設計?架構師?

Part.1 什麼是架構? 簡單來說,架構就是一個考察物件的內部結構。 這個內部結構是【以元件為視角】來進行考慮的,架構的含義包括了【元件以及元件之間的關係】。 另一方面,架構的含義還包括考察物件內部的【關鍵機制】。 什麼是元件? 元件通常是開發或部署的一個單元。 根據考察物件的大小,元件的粒度也有所區別。

《程序員修煉》讀書筆記②

模糊 clas 算法 必須 品牌 很多 關於 性能 一是 概述 花了幾天時間看完了程序員修煉之道,有很多感悟,記錄於此,供自己開發時參考,相信對其他人也有用。 值得一提的是,這本書寫的非常好,很多大牛在走了很多彎路之後再讀這本書都很感慨沒有早些讀。 《程序員修煉之道》讀書筆

《MySQL DBA修煉》 讀書筆記(第一章 理解MySQL)

l數據庫 描述 負責 mysql權限 serve 擴展 基礎上 title 語境 1、MySQL的基礎架構 1.MySQL是一種關系數據庫產品,是建立在關系模型基礎上的數據庫。架構一般可分為應用層、邏輯層、物理層。應用層:負責和客戶端、用戶進行交互。邏輯層:負責具體的

程序員修煉:從小工到專家

合作人 測試 AI 附錄 修煉之道 資源 color 例子 項目 下載地址:網盤下載 內容簡介 · · · · · ·《程序員修煉之道:從小工到專家》內容簡介:《程序員修煉之道》由一系列獨立的部分組成,涵蓋的主題從個人責任、職業發展,知道用於使代碼保持靈活、並且易於改

大巧不工-WEB前端設計修煉pdf

客戶 margin post 了解 框架 前端開發 性能 round 測試 下載地址:網盤下載 大巧不工:Web前端設計修煉之道:全面探討Web前端設計的方法、原則、技巧和最佳實踐5大專業社區一致鼎力推薦!前端開發工程師、前端設計師、前端架構師和用戶體驗設計師等新興職業的

《程序員修煉》讀書筆記

重點 解決 意思 環境 部分 災難 就是 但是 解決方案 這周我閱讀的書目是《程序員修煉之道》,重點看了幾個章節,但是可能是因為我還沒有經歷過大的項目,所以不太能對裏面的一些觀點產生共鳴,不過裏面還是有些較為簡單的觀點讓我收獲了許多。 1、“我的源碼讓貓吃了” 在所有弱點

Web前端工程師修煉(原書第4版) 中文pdf掃描版

知識 實現簡單 div font web前端 圖形 如何工作 htm log 你是否也曾想過自己創建網頁,但卻苦於沒有經驗?那麽從現在開始學習吧!本書由淺入深地講解了Web設計的一些重要概念、基本原理,以及HTML、CSS和JavaScript的具體使用方法與技巧。當你

第四周讀書筆記——《程序員修煉——從小工到專家》

本周 post align 課程 tex 如何實現 知識 我想 分享 本周我讀的書是美國Andrew Hunt與David Thomas所著的《程序員修煉之道——從小工到專家》。翻開第一頁,我就可以看到無數來自其他專業人士對這本書的褒獎。俗話說,贊美總是不嫌多,我大概瀏覽了

《程序員修煉》讀書筆記(下)

修正 AC 理解 文件名 就會 復制 讀取文件 學習 原來 程序員修煉之道(下) Friday, March 30, 2018 15:17 就如同我在上篇讀書筆記中說的那樣,這本書中的一些方法和思想,需要我們在之後的編程學習過程中一點一點的參悟和領會。 曳光彈 比如說從

我與項目的化學反應 ——讀《程序員修煉》有感

理論 例如 亞歷山大 搜集 發生 實驗 是我 消費 不同 正如書中所說,我曾經產生過自己的項目會失敗的感覺,因為自己很迷茫不知道自己該如何去完成自己的團隊項目,那種迷茫感在一開始的時候一直圍繞著我,直到組長開始逐步把項目分塊,一步步細分後,並且要求每個人需要做什麽的時候,我

程序員修煉 Tips

tool con window 興趣 list func clas produce exc 這一篇文章其實就是記錄程序員修煉之道中的所有 Tips, 我講會在之後的每周實踐兩個 Tip, 並對這兩個 Tips 進行補充和說明自己的體會, 最終成為書中所說的卓有成效的程序

讀書隨記-《程序員修煉-從小工到專家》

正在 不同 準則 隨記 專家 tail 都是 範圍 沒有 註重實效的程序員有哪些特征 早期的采納者/快速的改編者 好奇 批判的思考著 有現實感 多才多藝 第一章 註重實效的哲學 註重實效的程序員能夠越出直接的問題去思考,設法把問題放