好像所有講述編程的書都用同一個例子來開始,就是在用戶的屏幕上顯示出“Hello,World!”。總是使用這個例子可能有一點叫人厭煩,可是它確實可以幫助讀者迅速地接觸到在編程環(huán)境中書寫簡單程序時的簡便方法和可能的困難。就這個意義來說,“Hello,World!”可以作為檢驗編程語言和計算機平臺的一個基準(zhǔn)。
不幸的是,如果按照這個標(biāo)準(zhǔn)來說,嵌入式系統(tǒng)可能是程序員工作中碰到的最難的計算機平臺了。甚至在某些嵌入式系統(tǒng)中,根本無法實現(xiàn)“Hello,World!”程序。即使在那些可以實現(xiàn)這個程序的嵌入式系統(tǒng)里面,文本字符串的輸出也更像是目標(biāo)的一部分而不是開始的一部分。
你看,“Hello,World!”示例隱含的假設(shè),就是有一個可以打印字符串的輸出設(shè)備。通常使用的是用戶顯示器上的一個窗口來完成這個功能。但是大多數(shù)的嵌入式系統(tǒng)并沒有一個顯示器或者類似的輸出設(shè)備。即使是對那些有顯示器的系統(tǒng),通常也需要用一小段嵌入式程序,通過調(diào)用顯示驅(qū)動程序來實現(xiàn)這個功能。這對一個嵌入式編程者來說絕對是一個相當(dāng)具有挑戰(zhàn)性的開端。
看起來我們還是最好以一個小的,容易實現(xiàn)并且高度可移植的聯(lián)人式程序來開始,這樣的tb程序也不太會有編程錯誤。歸根到底,我這本書繼續(xù)選用“Hello,World!”。這個例子的原因是,實現(xiàn)這個程序?qū)嵲谔唵瘟恕_@起碼在讀者的程序第一次就運行不起來的時候,會去掉一個可能的原因,即:錯誤不是因為代碼里的缺陷:相反,問題出在開發(fā)工具或者創(chuàng)建可執(zhí)行程序的過程里面。
嵌人式程序員在很大程度上必須要依靠自己的力量來工作。在開始一個新項目的時候,除了他所熟悉的編程語言的語法,他必須首先假定什么東西都沒有運轉(zhuǎn)起來,甚至連標(biāo)準(zhǔn)庫都沒有,就是類似printf()和scanf()的那些程序員常常依賴的輔助函數(shù)。實際上,庫例程常常作為編程語言的基本語法出現(xiàn)。可是這部分標(biāo)準(zhǔn)很難支持所有可能的計算平臺,并且常常被嵌入式系統(tǒng)編譯器的制造商們所忽略。
所以在這一章里你實際上將找不到一個真正的”Hello,World!”程序,相反,我們假定在第一個例子中只可以使用最基本的C 語言語法。隨著本書的進一步深人,我們會逐步向我們的指令系統(tǒng)里添加C++的語法、標(biāo)準(zhǔn)庫例程和一個等效的字符輸出設(shè)備。然后,在第九章“綜合所學(xué)的知識”里面。我們才最終實現(xiàn)一個“Hello,World!”程序。到那時候你將順利地走上成為一個嵌入式系統(tǒng)編程專家的道路。