2009年10月30日 星期五

自學embedded system soft

//*2009/10/28
剛才,看到一個網友在說他對embedded system soft文章(*1)
實在是,句句令人感到興奮.原來還有這麼多........


"
-- 作者: walltsou
-- 發佈時間: 2006/08/22 10:37pm
作業系統及編譯器兩大技術是自學軟體功力上的兩大困難點。
許多人軟體功力就算是練習多年,如無法在這兩個領域內有所突破,是無法進入高手的領域的。
就以我的經歷來告訴想自學軟體的人,尤其是和我一樣是從單晶片工程師開始的,這到底是怎麼一回事。
我在開始使用單晶片時,並沒有想到要去學這些技術,因為對當時的我來說,那應該是很高深用不到的技術。
但是系統越做越大,軟體程式開始變的複雜起來了。修改及維護時間變得很長。於是改開始使用高階語言(在這裏我是用C)來開發。
使用高階語言不見得可以解決軟體管理的問題,反而是組合語言可以做的,使用C語言就是用不上來。
於是我就把C語言的除錯器打開,產生組合語言來研究,看看C語言到底做了什麼事。
這下我見識到了另一個世界,只有少數程式段落看得懂。大部分程式在計算時都是使用堆疊區的記憶體,參數也是使用堆疊在傳遞。
我開始意識到使用堆疊是一項重要程式技術,才會非常頻繁的使用在高階語言上。
所以我找到了自動機(Automata)理論來了解堆疊可以做什麼事。
結果Automata是解釋了堆疊可以做什麼事,但也告訴我它的最後產品是CPU及Compiler。
CPU對單晶片工程師是比較容易理解的,但我沒想到Compiler也是同一概念下的產品。
這使得我覺得是無法躲避的技術,於是花了許多時間自修Compiler書。
開始了解Compiler技術後,突然會發覺自己的C語言技術突飛猛進,主要是了解了Compiler特性,所以更容易駕馭。
另一個觀點來說,如果是天天使用C語言的人,如果能更了解自己每天使用的工具,那才是會真正使用工具。所謂┌工欲善其事,必先利其器┘。
那作業系統又是另一件事,主要是因為即時系統的需求,我才會注意到這個技術的存在。
這也是單晶片技術另一個常遇見的問題,如何將單晶片做最多的事開始。
本來會使用中斷就很不錯了。但是即時系統的複雜性,讓我不得不去了解所謂的多工是什麼?
一般作業系統的書是不符合單晶片上的使用狀況。一直到uCOS的書出現才解開我的問題。
了解了小型作業系統後,剛好我轉到開發PCI卡片的工作,這時才了解作業系統的概念是如此重要,因為我在Windows上遇到許多問題,要是沒有這點Sense可能工作就丟了。
加上今年又進入多核CPU時代,如果沒有這些知識,未來恐怕會很難混下去。
打通了作業系統及編譯器技術後,我才發覺我穫得軟體上發揮的自由,電腦語言已隨我所控制,作業系統的管理機制由我所駕馭。這才是真正高手的領域。
所以我才說這是軟體功力的任督二脈。 -----------------------------
-- 作者: walltsou
-- 發佈時間: 2006/08/23 10:48am
許多人對此文章的熱心回應,在此將我用的參考書在此公布。有興趣的人自行參讀。
System Software參考書
(1) 系統程式,出版:文京,原著:Leland L.Beck,譯者:林騰蛟、林晉豐等譯
Automata參考書
(2) 形式語言與運算理論入門,出版:松崗,原著:John C.Martin,譯者:張世敏
Compiler參考書
(3) Lex & Yacc中譯本,出版:歐萊禮,原著:John R.Levine,Tony Mason & Doug Brown,譯者:林偉豪
(4) 編譯程式 原理、技巧與工具(上/下),出版:松崗,原著:Alfred V.Aho,Ravi Sethi,Jeffery D. Ullman
Small Operating System參考書
(5) MicroC/OS-II:即時作業系統核心,出版:全華,原著:Jean J.Labrosse,譯者:黃文增
(6) 嵌入式系統構件,出版:全華,原著:Jean J.Labrosse,譯者:黃文增
在此說明各書本之間關係及我的心得。
(1)這本書應是走單晶片及嵌入式系統必須有的"聖經"書,說明電腦工具之間關係,從Assembler,Compiler到O.S.之間關係及動作。只是要對CPU有一定程度了解,不然讀不下去。
再來直接進入Compiler技術會有困難度,所以先以了解Automata技術為踏腳石,看懂才開始看Compiler技術會比較簡單。
(2)了解電腦運作基本理論,此書很像數學書,但對堆疊應用有新認識。
(3)這些書本中最有趣的一本,會讓人對Compiler產生興趣的書,可以自製Compiler,一定要玩玩。讀這本最輕鬆。強烈建議一定要看。
(4)人稱"恐龍書",Compiler技術聖經,學完了就會手寫Compiler了,不必看到這種地步,了解就好。
(5)對於小型作業系統最詳細的書,所有程式碼都有說明。讓你了解作業系統最細微動作。
要懂作業系統,中斷要夠熟,如果可以了解巢狀中斷(中斷再中斷),那就可以看懂這本,當然C也不能太差。
(6)uCOS作業系統下的應用,讓您真正了解多工程式的長像。也有許多應用知識。"

--------------------------------------------------------------
目前的我,決定於使用Keil C及SDCC為主
雖然對於這些,對於Keil C並沒有直接的關係
像是keil c中對於51/2 中,並不能像一般C一樣
操作其stack更不用說其記憶体的存取等.相關議題
但不論是keil c or SDCC 也只是一個complier
 這也是我一直在注意其embedded.com上的內容
但它比較屬於應用層次上的;而其complier則沒有
故...............

(*!):已失去聯結.故我把它轉貼過來




沒有留言:

張貼留言