2024年2月4日 星期日

在 STM32F103 上執行 Mecrisp-Stellaris Forth

Forth,是一種宗教

1980 年代,黃大一 (1948-12-26 -- 2023-01-18) 所撰寫的《符式(FORTH) F83 入門 》(松崗出版社 1986) 是我接觸 Forth 的開始。黃大一對 Forth 如宗教般的推崇,也反應了許多人對 Forth 如宗教般的信仰。雖然如此,因為 Forth 的特性,在一般電腦上其實無法和其他語言競爭,其強項為兼具 interactive/compiling 和精簡的基本系統,很適合在嵌入式系統上使用。

因此,我雖然很早就接觸 Forth,但幾乎沒有實際派上用場。直到最近 (2024),一片獨立的 32位元單晶片系統,如 stm32f103,不到台幣 100元,最適合在上面執行 Forth 了。

Mecrisp-Stellaris Forth

下載版本 mecrisp-stellaris-2.6.5,使用 precompiled 目錄下的 mecrisp-stellaris-stm32f103-with-usb-terminal.bin。使用 ST-LINK 燒錄時,不用切換 BOOT0 的狀態。

連上之後,傳回的裝置為 

---------------------------------
[1217966.500259] usb 1-7.3.1: new full-speed USB device number 16 using xhci_hcd
[1217966.591866] usb 1-7.3.1: New USB device found, idVendor=0483, idProduct=5740, bcdDevice= 2.00
[1217966.591871] usb 1-7.3.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[1217966.591872] usb 1-7.3.1: Product: Forth Serial Port
[1217966.591873] usb 1-7.3.1: Manufacturer: Mecrisp (STM32F10x)
[1217966.591874] usb 1-7.3.1: SerialNumber: 0F775724
[1217966.600191] cdc_acm 1-7.3.1:1.0: ttyACM0: USB ACM device
--------------------------------

連接指令 "sudo minicom -b 115200  -D /dev/ttyACM0",要修改設定,加入在按 Enter 時,送出 CRLF。按鍵順序 Ctrl-A -> Z -> U,即可 "開啟加入換列字元" 或 "關閉加入換列字元"。

--------------------
STM32F103 的 USART I/O
USART1:PA9 - TX,PA10 - RX
USART2:PA2 - TX,PA3 - RX
USART3:PB10 - TX,PB11 - RX
--------------------

假如燒錄完成,連線之後,不斷出現 "Unhandled Interrupt 00000003 !",可能是因為 flash 中有其他先前存在的程式,可以將 flash 完整清除看看,參考 Bugs or Benefits ?

差別在於,stm32f103 的 memmap 定義如下

--------------------
MEMORY
{
   rom(RX)   : ORIGIN = 0x00000000, LENGTH = 0x4000
   ram(WAIL) : ORIGIN = 0x20000000, LENGTH = 0x4000
}
--------------------

stm32f103-ra 的 memmap 定義則為

--------------------
MEMORY
{
   rom(RX)   : ORIGIN = 0x00000000, LENGTH = 0x5000
   ram(WAIL) : ORIGIN = 0x20000000, LENGTH = 0x4000
}
--------------------

相關說明 RA Kernel,"Activate RA compiler optimisations by increasing the reserved core size to 0x5000 (up from the 0x4000 of the classic cores) and by adding an assembler switch"。


Forth 專用連工具 e4thcom - A Terminal for Embedded Forth Systems,方便下載程式。

連線指令 "sudo ./e4thcom -t mecrisp-st -d ttyUSB0 -b B115200 --idm"

ascii      ascii-xfr -dsv -l 200  










沒有留言:

張貼留言

網誌存檔