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