Monday, April 29, 2013

UEFI Overview from Rookie

 

而UEFI(Unified Extensible Firmware Interface)演進過程簡單來說就是2005從Intel所釋出的EFI而衍生而來,主要是希望能夠取代 BIOS的呆版功能和一些限制,就有如<3>所提到IA32架搆的CPU只能訪問1MB的基本內存,影響了程序員的創造性。同時,各種板卡上的BIOS在映射到系統內存中的時候,受到128Kbytes的大小***。這使得一台計算機不能安裝太多的板卡,否則他們的BIOS的容量將很容易突破128Kbytes。

Intel Platform Innovation Framework for EFI,讓整個EFI流程非常明確,在設計上真可以說是如虎添翼,當然一好必有一弊,這樣的一套規範相對編譯出來的Machine Code一定很肥大。在硬體層面來說,需要的硬體資源相對需要提昇許多,但已研發角度來說,可說是大幅減少撰寫時間,我想這省下可是在這一大筆的專業人事成本上,這取捨之間,以長遠的角度來看或許UEFI有它存在的必要性。

image

在大略的掃過UEFI的架構後,它真的可以說是迷你型的OS。如上圖所示,一個EFI image涵蓋了Driver和Application,此外也有類似排程的Event功能, 想想這三個功能就有點OS的味道了。

image

UEFI Architecture提供一個Handle database的機制來供給UEFI System Table使用。

UEFI System Table

  • UEFI Boot Services
  • UEFI Runtime Services(RS)
  • Protocol Services

Protocol負責提供功能函式給主要的兩個程序(UEFI Boot和UEFI Runtime)所使用。

image

UEFI主要是用Framework的概念下去設計,目的是為了區分工作內容,讓設計者能夠更明確的排除問題且加速發展速度。而它主要區分六大步驟,分別為SEC(Security),PEI(Pre-EFI Initialization),DXE(Driver Execution Envronment),BDS(Boot Device Seletction/ BD Service),TSL(Transient System Load),RT(Run Time)。

我們可以在Shell下這段指令,讓我們能更加了解概念。Shell phase已經是透過BDS所選擇出的小型OS,使用者可以透過console來控制或查詢整個UEFI系統狀況。

Shell> dp –d

image_thumb1

Reference

<1>http://en.wikipedia.org/wiki/Unified_Extensible_Firmware_Interface

<2>http://blog.yam.com/wttmama/article/33619399

<3>http://stenlyho.blogspot.tw/2008/10/efi.html

<4>http://www.intel.com/content/www/us/en/architecture-and-technology/unified-extensible-firmware-interface/efi-homepage-general-technology.html

Thursday, April 25, 2013

BIOS Overview from Rookie

 

最近為了能夠快速進入BIOS領域,一直看相關的資料來加強自己,慢慢的了解整個電腦核心系統的架構,也想透過這些架構來幫BIOS在我心中好好定位一下,首先我們先從大方下手在一一細分。

何謂電腦(PC, Hardware, Platform, Motherboard…)?

現在我將它定義為硬體設備,至於硬體製成那又是遠遠的一回事。

何謂系統(OS, System, Kernel…)?

一堆來自世界各地的硬體通通擺在一起,那主機殼就好像地球一樣,每個硬體說著屬於自己的思考和語言,總該有個人(Xmerican??)跳出來維護世界的和平吧?

何謂軟體(Softeare, APP)?

它是一個很好的翻譯機讓使用者避開那些繁雜的命令。例如你若只想知道1+1=2,應該不會想知道暫存器之間如何變化吧。現在APP已經在21世紀火紅起來,我想它應該是最好解釋軟體的統稱。

那我該把BIOS放哪呢?

image

就我目前的認知裡,它就是系統與硬體之間溝通協調的橋樑。上圖就是我將人類使用電腦的流程概念圖。當然這只是想要將許多事件大概合理的區分,但往往一旦你深入圖中任何區塊之中,該如何界定你所在的位置,那就像用Google Map想要定位出百分百的位置一樣,不是不可能但需要一些運氣。

<Reference>

<1>http://en.wikipedia.org/wiki/BIOS

Wednesday, April 24, 2013

ACPI Overview from Rookie

 

目前對於BIOS一知半解的我,在短短的幾天搜尋許多資料,我想將初步的概念分享出來,不但可以整目前理思緒,且能在深入主題後分辨到底是否與當初認知有所差異。

ACPI(Advenced Configuration Power Interface)取代APM(Advanced Power Management)

提供給OSPM(Operation System Power Managerment)準則(standard interface)用函數來控制,主要規範的範圍我分為四大區塊

1)Power Management(System, Device, Processor)

2)Event(Plug and Play, System Event)

3)Environment Management(Battery, Thermal)

4)Communication(Embedde Controller, SMBus Controllor)

而OSPM就是只要tuning出好的QoS(Quality of Service)給使用者,但要達成這樣的最佳化效果那ACPI則要成為絕對領域,其他相關的配角(Hardware, Firmware, non-OS Softeare)不能涉及到以上四到區塊。讓OSPM做好大哥的角色,不過,OSPM也有失去控制權的時候,那就是在Thermal出現異常的狀況,ACPI會啟動Active and Passive Cooling interfaces的機制來保護硬體。

它到底如何作業呢?

Reference

<1>Advanced Configuration and Power Interface  Specification 5.0

<2>http://en.wikipedia.org/wiki/Advanced_Configuration_and_Power_Interface

<3>http://biosengineer.blogspot.tw/2007/11/acpi-spec-overview.html

<4>http://fred-zone.blogspot.tw/2008/10/bios-acpi-description-table.html

Sunday, January 20, 2013

Register Transfer Level Design with Verilog (1) [ebook]

設計程式之所以有趣不外乎是它的千變萬化,同樣的結果卻有不同的寫法。

但這些不同寫法當中也並沒有分誰對誰錯,也沒有制定標準來規範何事該用何解。

這也就是我們設計者的珍貴!!

Screen Shot 2013-01-20 at 9.58.41 PM





[1] Primitive Instantiations

在Verilog中最基本的邏輯閘便稱為Primitive,使用最基本的primitive為基礎來設計別稱Primitive Instantiations。

Screen Shot 2013-01-20 at 3.56.46 PM




[2] Assign Statements

透過Primitive gates在利用assign將結果牽線別有更多變的結果。

Screen Shot 2013-01-20 at 4.05.52 PM



[3] Conditional Expression

顧名思義,就是條件式的表示方法!這也是能將硬邦邦的硬體注入多變思想的刀刃。

Screen Shot 2013-01-20 at 4.04.09 PM



[4] Procedural Blocks

至於這套程序則是非常高接的處理程序,往往是很多Conditional Expression所組成。

Screen Shot 2013-01-20 at 4.04.28 PM




所有教課書不往往儘說這些道理,但這些確有哪些不同呢?其實在我的見解就如下

[1]就是利用最基本的邏輯閘組成所需的系統。

[2]的概念就與數學相似,利用運算元來表示系統。

[3]條件是就有如黑盒子概念,拿數位邏輯的概念來說,就是將系統使用Boolean Expressions來呈現,輸入與輸出的關係就有如條件班達成。

[4]則是透過程序流程來分析結果,當然所耗的資源都不盡相同。

Reference

<1>Verilog Digital System Design - RT Level Synthesis, Testbench and Verification

Thursday, January 17, 2013

Processors in embedded systems [Web]

Embedded Processor分為以下兩大類

Microprocessors (μP) 

是用來整合控制周圍系統的晶片,如記憶體。

這項技術從1968年由CADC開始,接者,Gilbert Hyatt, TMS 1000, Intel 4004, Pico/General instrument, For-Phase System AL1

有了巨人的肩膀,亂世群雄的時代就此展開,8-bit, 16-bit, 32-bit, 64-bit, Multicore

其中也將設計結構作為兩種區分,<5>會有所解釋!

RISC(Reduce Instruction Set Computer)

   MIPS(Microprocessor Without Interlocked Pipeline Stage)

CISC(Complex Instruction Set Computer)

   一個指令可以取代很多RISC的指令。

Microcontrollers (μC, MCU)

已經將許多周邊晶片給整合在一起,為了能夠降低成本和功率的考量下所設計出來的。

Program memory in the form of NOR flash or OTP ROM is also often included on chip, as well as a typically small amount of RAM. 

 

但各有其中之優勢,所以兩者都還存在着。

 

Reference 

<1>http://en.wikipedia.org/wiki/Embedded_system#Processors_in_embedded_systems

<2>http://en.wikipedia.org/wiki/Microprocessor

<3>http://en.wikipedia.org/wiki/MIPS_architecture

<4>http://en.wikipedia.org/wiki/Reduced_instruction_set_computing

<5>http://en.wikipedia.org/wiki/Instruction_set_architecture

<6>http://en.wikipedia.org/wiki/Complex_instruction_set_computing

<7>http://en.wikipedia.org/wiki/Microcontroller

Wednesday, January 16, 2013

How to design an FPGA from scratch [Web]

閱讀到一篇真的對新手很有幫助的一篇文章。

作者 Sven Andersson可以說是一位ASICs的先驅,

在他的BLOG當中真的有很多值得拿來分析的文章。

今天先來介紹一下,他給剛踏入這塊領域的新手有什麼建議呢?

FPGA design checklist 粒粒扣扣14項:

或許還沒有接觸過的人會想為什麼要有這幾項?我就加入我的想法分享給各位囉,當然我也整理了一下順序!

 

「1」Make sure you have plenty of time to spare.

其實這一點放在第一點不為過,因為要設計好的FPGA程式真的需要很多時間,如果只想花少時間就想做好它。

那真得有些挑戰,就像Library來說,可能C語言來做數學運算可以找個函示來用,但FPGA要設計出來可是需要鬼斧神工的技術呢!!

「2」Find a decent computer.

正所謂 工欲善其事,必先利其器。就是這個道理。

「3」If you can afford it, add a big display.

螢幕越大看的視窗越多,FPGA設計是需要有很多視窗來觀看其設計和模擬。

「4」Decide which operating system to use.

這一點其實跟第「5-8」有很大的關係,因為作業系統的不同,

工具軟體的資源就有所不同,當然Windows系統所擁有的工具軟體是最多的。

「5」Select an FPGA vendor.

「6」Download the FPGA design software.

「7」Choosing a logic simulator.

「8」Choosing a synthesis tool.

 

「9」Pick out a suitable development board.

能用的實驗板很多,但各有所優缺點,這就要看設計者如何取捨。

「10」Select an embedded processor to use.

這部分就比較專業一些,簡單來說挑一個比較熱門一點的比較容易上手,不熱門的也有它的優勢但就看設計者如何取捨。

我這也做了點小整理。

「11」Consider using a virtual machine (VM).

我想~~還是為了節省模擬與合成的時間吧!在我的文章中也有提到BUG是個夢魘啊!!!

「12」Add the latest service packs.

就把所有軟體更新吧!!!更新有更新的好,但也有可能更新後就不知道怎麼用了~呵呵

「13」Learn C programming.

這就不在話下了~應該的!!

「14」Read my tutorial (grin) .

 

Referance

<1>http://eetimes.com/design/programmable-logic/4015129/How-to-design-an-FPGA-from-scratch?CID=EMBEDIT

<2>http://en.wikipedia.org/wiki/Embedded_system#Processors_in_embedded_systems

<3>http://en.wikipedia.org/wiki/Application-specific_integrated_circuit

 

 

The art of FPGA construction FPGA的建構藝術 (3) 實體呈現


0108esdSmith03sm

 

 

 

 

 

 

 

等到程式碼都完成了,該如何驗證呢?

這是每個設計者都想知道,簡單來說就是找到Compile給它按下去就行了~~

而在FPGA會有兩種方式,一種是模擬,另一種則是合成。

依我經驗為例,能透過模擬就模擬,畢竟要合成出實際的電路在燒入到硬體內,真的是一大工程呢。

至於FPGA它的合成作業是如何達成呢?

就如圖示所表示,有三大階段,

[1] 將程式碼或圖像設計轉換成RTL。

[*2] 再將RTL的邏輯電路加以最佳化,除減少時間程序外也能減少成本。

[3] 再將最後的電路合成出你所要硬體的對應表(Netlist)。

 

這樣就大功告成啦~~

Register Transfer Level Design with Verilog (1) [ebook]

設計程式之所以有趣不外乎是它的千變萬化,同樣的結果卻有不同的寫法。 但這些不同寫法當中也並沒有分誰對誰錯,也沒有制定標準來規範何事該用何解。 這也就是我們設計者的珍貴!! [1] Primitive Instantiations 在Verilog中最基本的邏輯...