計算機綜合實踐項目:自編程單片機系統(一)

身邊幾個玩編程計算器的同窗說,用計算器編程幀率過低了。一開始我以爲,好端端的處理器能卡成這樣,確定是計算器系統的問題。要是用個人開發板來跑絕對不會卡,但轉念一想個人開發板只能在計算機上編程而後燒寫進去,拿編譯型語言去跟解釋型語言比效率是沒有意義的。編程

後來查了一下資料,他們用的計算器中居然使用8位單片機。我有兩個想法:其一,性能不強的處理器加上解釋型語言,難怪跑在上面的程序會卡;其二,使用性能至關的單片機的我,應該也能開發一個可自編程的平臺吧。編程語言

因而就有了這個項目,設計一個可自編程的單片機系統。有幾個問題須要考慮:編輯器

 

1、用什麼處理器函數

上有樹莓派,個人考慮範圍僅限單片機。8/16位機我比較熟悉,但空間和性能都十分受限,32位機性能強,空間也能夠外擴。具體選哪一種,主要取決於應用。性能

2、用什麼編程語言學習

編譯型語言要有編譯器,是我如今不會寫也不會移植的東西;解釋型語言的效率在計算器中被證實不行;高級語言都被排除了,只剩彙編可用了。設計

彙編代碼轉換成單片機直接執行的機器語言被計算器玩家證實爲危險行爲,必須有一個託管彙編代碼運行的環境,稱之爲虛擬機吧,相應地把機器語言稱爲字節碼,這是從Java學來的概念。虛擬機和字節碼的格式均可以任我發揮。接口

3、用什麼交互設備內存

做爲一臺微型電腦,必需要有辦法來顯示。我不想外接顯示器,因此要板載顯示屏。從12864 OLED單色屏到240*320 TFT彩屏,流暢顯示所需的帶寬也有很大差距,應該根據單片機的性能來選型。開發

編程嘛,鍵盤總要有的。最理想的狀況固然是用USB口外接鍵盤,對於沒有USB的單片機,也得提供一個矩陣鍵盤。

 

選擇還挺多哈。考慮到我如今的水平,通過一週的深思熟慮,我將這個項目分爲兩個階段:第一階段在上述選項中都選擇了較簡單的,是如今就能動手的項目;第二階段更爲完整,但須要更多的學習。

第一階段:

製做GUI開發板,板載1.3寸128*64 OLED屏;

爲開發板編寫硬件驅動庫;

(如下內容須作到平臺無關,即對於其餘型號的單片機,只要有接口相同的硬件驅動庫就能使用)

設計一個文檔編輯器用於編程;

設計一種虛擬機上運行的彙編語言,要能調用庫函數;

編寫能運行這種彙編語言的虛擬機;

編寫彙編器,將彙編代碼轉換成字節碼;

用軟件實現內存分頁,以解決大量數據的問題。

第1.5階段:

若是AVR單片機的性能帶不起虛擬機,就經過開發板的擴展接口鏈接STM32F103開發板;

原來的單片機做硬件驅動與圖形加速用;

用Cortex-M3足矣,再強就是下一階段的事了;

製做幾個外接模塊,如電容觸摸、SD卡+揚聲器等,以豐富功能。

第二階段:

使用STM32F405VGT6單片機,168MHz Cortex-M4無所畏懼;

板載2.8寸240*320 TFT全綵觸摸屏,掛在FSMC上;

USB接口外接鍵盤,最好是機械鍵盤,聲音響亮蓋過物理老師的激情;

類C語言編程,編譯成ARM的機器語言,在單片機上直接執行,用MPU來保護系統;

若是讓機器直接執行太危險,讓虛擬機執行字節碼也行;

……

這個規劃過於遙遠,先構想到這裏。相比於前一版這個版本更像是手機而不是計算器。

 

預計今年年末以前完成第一階段,時間充足的話第1.5階段也能完成。至於第二階段,想一想都以爲難,先掛着吧。

最後強調一句,造輪子階段,能夠借鑑方案但毫不抄代碼。

相關文章
相關標籤/搜索