2011年8月20日 星期六

Flash Forth的運行原理

因為使用到PIC,於是看看有無Forth可用,於是找到Flash Forth。
另一個目標是找Cortex M3上的Forth,結果找到一個分散式的Forth,PC端是用TCL寫的,TCL很不熟,就先放著。

比較令我感興趣的是PIC18上的Flash Forth。
雖然丁陳老師的eForth有做在PIC17上。但無法做新加程式,因為無法將程式寫回Flash。
但Flash Forth在PIC18上可以將程式寫回Flash。
因為MCU上我比較少做這個動作,所以沒有想到其實可以寫回Flash,就可以Run完整的Forth。
看了一下,就把回寫的地方改為燒回Flash的函式。
雖然寫回Flash是很慢,但人的反應也不快,所以不會感覺到。
只要Run的夠快就好了。

有去比對其他Forth,MSP430上的CamelForth也有這樣的能力。
不過作者有發現一個問題,就是CREATE> 指令受到影響。
而改以另一個指令去取代。

還是比較希望有Flash Forth在Cortex M3上面。目前還沒有看到。
Bee是知道FIG Taiwan的Holi有ARM7 Forth。不過他的堆疊成長方向和Cortex M3相反,要移反而麻煩。
只能說是Holi選錯了方向,因為ARM7確實二個方向都可以。
不過Cortex M3因為要精簡,就變成單向。而且組合語言指令有16 bit及32 bit混合,不像ARM7固定在32 bit上。
這些改變都要去動Forth核心動作。重寫可能還比改寫快。


五週五顆MCU

新工作上先做一些支援性任務,結果上班五週,就遇到五顆MCU。
分別是PIC18、PIC33、STM32F103、STM32F207以及待寫的STM32F100。
後三個是ARM Cortex M3,理論上會比較好適應,不幸的是這三個是分開的在二個任務上。

現代MCU和以前的不同,I/O型態多,不好設定,花最多時間在讀規格及設定成需要的I/O。
以前是很喜歡去看不同的MCU及CPU資料,不過這五週還真的有點吃不消。
不過可以看到一個趨勢,Cortex M3真的很便宜,PIC完全不是對手。
所以新設計會採用ARM是無法避免的。
本來還想說不是還有Cortex M0,問題是M3不到1美元。那還用M0做什麼?

其實還有遇到第六個MCU,因為是全組合語言寫的,且是已停產的日系MCU。就說要適應要一個月。
所以就沒再去碰了。

在這裡可以見到使用C語言是必然的。
現在MCU便宜到不行,用組合語言會被特定MCU綁住,就無法升級。
程式也是一種資產,但沒有製造成本。
全組合語言的程式很難移植,最後只好用新產品去頂掉,程式就只好用C重寫一次。
變成不做也不行的事了。

另外還有一些PC上做出來的人工智慧的程式要移進MCU中。
在沒有作業系統的幫助下,在PC上開發程式的人吃了不少苦頭。
所以我又架了RTOS做為準備工作。
這次選了FreeRTOS。有去追一下核心,設計方式和uCOS-II並不同。
不過國內沒有什麼人在用FreeRTOS,所以也没有什麼中文資料。

充實的五週,不過還沒有結束。只能一件一件事解開來。