2014年10月25日 星期六

Forth語言在Swarm發展之可行性

1.  Forth語言之困境
    身為Forther是不會願意接受這件事,但此為現狀,Bee很早就認為,只是隨ARM MCU之流行,情況更加嚴重。
    Forth因為小而完整發揮MCU能力,確實在8/16位元MCU上一直有特色。
    但隨著時代推展,進入32位元MCU時代,小而完整之特質已無法凸顯其特色。
    32位元MCU時代的特性為:
    1.  豐富週邊
    2.  大量免費C函式庫
    3.  大量免費軟體工具
        RTOS, FAT File System, USB Driver, Ethernet Example, GUI Library, SD Card Driver...等等。
    以上特色,使得MCU以C發展可以快速得到成果,Forth則無廠商願意寫函式庫,變得跟不上時代。
    32位元MCU各大廠又以軟體元件為其發展重點,快速拼裝已成為特性,大大的拉開C語言及其他語言的距離。
    32位元MCU除了C外,其他語言完全變成非主流。
   
2.  Swarm Robot / Multi-Robot System發展之問題
    Robot一直是MCU實現的好目標。使用Forth發展是很方便的。但因MCU隨著32位元時代來臨,Forth被淡忘。
    實際上單一Robot發展並不是很方便,若非C語言在MCU上有大量的工具,使用C語言是一項沒有得選擇的發展。
    Bee曾認為Forth在Robot上的發展可能有一席之地。但32位元MCU推展過於快速,完全沒有給Forth有時間及機會去成長。
    在一個偶然的機會,Bee想到找群體機器人(Swarm)上的相關資料,發現以目前的Robot發展是困難的。
    主因為在於Swarm Robot除了實現Robot外,需要解決Robot之間溝通之問題。
    實現通信不難,但Robot之間溝通,實為發展社會語言,若非有電腦語言發展能力,此問題不易解決。
    一般實作Robot,多以電子為主,語言只是實現工具,故一般工程師無法有效解決此問題。
    常用工具C語言在此問題上,完全是缺乏應用之空間。故在此領域推展很慢。
   
3.  Forth如何解決Robot通信及Swarm程式發展之可能
    Forth寫Robot程式和C寫Robot有很大的不同。
    C語言寫Robot比較像是外科手術:
    1. Robot關閉;  麻醉
    2. 寫程式下載; 開刀
    3. Robot打開;  叫醒
    但此程序對於多機器人的程式發展及測試是不利的。
    因為有很多狀況是機器人已經面對和另一個機器人要做溝通協調,外科手術反而打斷取得狀況的方法。
    Forth寫Robot程式則是像老師教學生:
    學生接受老師的指令,一步步動作。有新狀況也可以回報,並加以修正。
    在Swarm的環境,所有的通信都變成廣播型式的指令。
    Forth原先只有一個對象,在此環境中,只要增加指定對象的指令、交換資料的指令,就可以開始使用。
    此時程式設計師成為教練,每一個機器都是學生、學生間可以交換資料,並下命令改變其他學生的工作。
    故Forth可以直接成為Swarm Robot的自然語言,人機一體語言在此環境是極為自然的溝通。
    在通信格式上,幾乎只要將Forth指令用通信封包包一下就可以直接使用。
   
結論:
    Bee認為Forth的衰退是時代的必然。但Forth要能使用下去必須找一個符合的環境。
    只是經過長久的觀察才找出可以有效利用Forth特性的使用場所。
    另一個說法是:C語言在MCU上已是霸主。
    Forth在單打獨鬥上是輸C不少,所以就不要單打,改打群體戰。
    在群體戰這個新領域Forth再利用其小而完美的特性重新站起來。

2014年10月18日 星期六

Cortex M7面世對其他MCU影響

日前ARM發表了Cortex-M7 MCU核心。就規格上來看並沒有多出Cortex-M4很多。
其實因為Cortex-M7和Cortex-A5已有部分市場重疊,所以並沒有一口氣做出很大的超越。
不過倒是另一家公司的產品可慘了: PIC32。
PIC32是一直向Bee推廣,但Bee認為MPIS核心已不會成為主流,所以一直在觀望。
觀望的原因在於PIC32在效能上確實較CM3/4來得強。
但CM4已內建浮點運算器,而PIC32仍遲遲未推出帶有浮點運算器的狀況下,已開始處於劣勢。
唯一只剩下主頻仍強於CM4。
如今最後一項優勢也消失了,CM7可以達到PIC32的同頻且具備浮點運算器。
這下PIC32已完全失去硬體優勢。
剩下的就是軟體環境了。
就軟體開發性來說STM32系列是相當不錯,完全Open Source。只差會不會拼裝。
Microchip也是不錯,大部分功能也都有,但在核心的部分和MPLab相連。
造成移植上不好弄,有支援到可以直接用,沒支援到要拼裝就麻煩了。

另外一個32位元的MCU是TI的DSP。這顆在浮點運算上沒有問題。
但在實際使用上,週邊輸了一截。
也許在運算上,TI的DSP是有贏。不過STM32則是利用其DMA直通週邊,將週邊管理時間省下來。
使用靈活度上是以STM32來得靈活。

但Bee也發現大部分工程師即使已知MCU輸人一截的狀況下,大部分仍不願換新廠商MCU。
主因是要閱讀的資料量過大,要能有效運用,真的要花一點時間。在專案的壓力下,通常不採用新MCU。

MCU現在入門,不管是那一顆其資料手冊都破千頁。這個才是推展上的最大問題。
所以一時三刻,不會有明顯改變,但長期來看,應是很明顯了。