Line: 1 to 1 | ||||||||
---|---|---|---|---|---|---|---|---|
%DASHBOARD{ section="banner" | ||||||||
Line: 7 to 7 | ||||||||
titlestyle="color:#F00000;"
}%
Intro
| ||||||||
Changed: | ||||||||
< < | Move to MecrispCube | |||||||
> > | Moved to MecrispCube | |||||||
Line: 1 to 1 | ||||||||
---|---|---|---|---|---|---|---|---|
%DASHBOARD{ section="banner" | ||||||||
Line: 7 to 7 | ||||||||
titlestyle="color:#F00000;"
}%
Intro
| ||||||||
Changed: | ||||||||
< < | Mecrisp-Stellaris Forth for the STM32 Cube ecosystem. | |||||||
> > | Move to MecrispCube | |||||||
Deleted: | ||||||||
< < | Forth is an interactive and extensible language, with built-in lexical analysis (tokenizer, parser) and compiler, needs less than 20 KiB Flash and 4 KiB RAM, unbelievable for a self-contained (self-hosted) system. | |||||||
Deleted: | ||||||||
< < | Forth is perfect for embedded systems where some sort of user interactivity like CLI and extensibility (at runtime) are needed. C & Forth in the 21st Century. C and Forth are both about 50 years old. To combine the strength of this two worlds results in powerful system that outperforms other much newer systems like Python. | |||||||
Contents
| ||||||||
Deleted: | ||||||||
< < |
Getting StartedThese instructions will get you a copy of the project up and running on your local machine (STM32 Nucleo board) for development and testing purposes.Prerequisites
![]()
/dev/ttyACM0 )
and set the speed to 115200 baud.
I set the putty terminal configuration to
Mecrisp-Stellaris 2.5.2 for STM32WB55 by Matthias Koch 23 5 / .[CR] 4 ok. : hello ." World" ;[CR] ok. hello[CR] World ok. InstallingA step by step series of examples that tell you how to get a development env running Install the IDE STM32CubeIDE![]() ![]() psi@homer:~> git clone https://github.com/spyren/Mecrisp-Cube Klone nach 'Mecrisp-Cube' ... remote: Enumerating objects: 106, done. remote: Counting objects: 100% (106/106), done. remote: Compressing objects: 100% (71/71), done. remote: Total 106 (delta 33), reused 106 (delta 33), pack-reused 0 Empfange Objekte: 100% (106/106), 938.96 KiB | 2.39 MiB/s, Fertig. Löse Unterschiede auf: 100% (33/33), Fertig.Import the project into the IDE: File -> Import -> General -> Existing Projects into Workspace -> Select root directory Copy project into workspace Browse to Mecrisp-Cube directoryGenerate code from the STM32CubeMX minimal.ioc file:
Project -> Generate CodeSelect the Build Configuration (Debug if you want to debug the project) and Build the project: Project -> Build Configurations -> Set Active -> Debug/Reelease Project -> Build Project Built With
Flash Mecrisp-Cube to the TargetAlternate ways to flash Mecrisp-Cube to the target.Nucleo BoardConnect Nucleo's ST-LINK USB to you PC. Erase the flash e.g. by openOCD, we use 768 KiB![]() $ telnet localhost 4444 Trying ::1... telnet: connect to address ::1: Connection refused Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. Open On-Chip Debugger > reset init Unable to match requested speed 500 kHz, using 480 kHz Unable to match requested speed 500 kHz, using 480 kHz target halted due to debug-request, current mode: Thread xPSR: 0x01000000 pc: 0x08003aae msp: 0x20000430 > flash erase_sector 0 0 192 erased sectors 0 through 192 on flash bank 0 in 4.583453s > flash write_image mecrisp-stellaris-stm32wb55.hex device idcode = 0x20016495 (STM32WB5x - Rev: 2.1) flash size = 1024kbytes flash mode : single-bank Padding 4 bytes to keep 8-byte write size block write succeeded wrote 15404 bytes from file mecrisp-stellaris-stm32wb55.hex in 0.329747s (45.620 KiB/s) > shutdown shutdown command invoked Connection closed by foreign host. USB DongleThe USB Dongle does not have a ST-Link interface, but the STM32WB has a built-in boot-loader. This bootloader works over USB. As programmer I use the CLI from the STM32CubeProg![]() $ alias cubepgmcli='/opt/STMicroelectronics/STM32Cube/STM32CubeProgrammer/bin/STM32_Programmer_CLI' $ cubepgmcli -c port=USB1 -ob displBTW you can flash the Nucleo Board in the same way. Update BLE StackYou can find the BLE Stack and FUS in STM32CubeWB![]() Projects/STM32WB_Copro_Wireless_Binaries .
Using USB_USER and the built-in bootloader (activate with jumper between CN7.5 and CN7.7)
$ alias cubepgmcli='/opt/STMicroelectronics/STM32Cube/STM32CubeProgrammer/bin/STM32_Programmer_CLI' STM32Cube_FW_WB_V1.4.0/Projects/STM32WB_Copro_Wireless_Binaries> cubepgmcli -c port=USB1 -fwdelete STM32Cube_FW_WB_V1.4.0/Projects/STM32WB_Copro_Wireless_Binaries> cubepgmcli -c port=USB1 -fwupgrade stm32wb5x_FUS_fw.bin 0x080EC000 firstinstall=0 STM32Cube_FW_WB_V1.4.0/Projects/STM32WB_Copro_Wireless_Binaries> cubepgmcli -c port=USB1 -fwupgrade stm32wb5x_BLE_Stack_fw.bin 0x080CB000 firstinstall=1Using ST-LINK (here to show the option bytes, SBRV : 0x32C00 means start address 4 * SBRV + 0x08000000 = 0x080CB000, 3D000 means there is no stack):
psi@homer:~/Dropbox/wbForth/CubeWB> cubepgmcli -c port=SWD -ob displ ------------------------------------------------------------------- STM32CubeProgrammer v2.3.0 ------------------------------------------------------------------- ST-LINK SN : 066BFF313335415043141250 ST-LINK FW : V2J35M26 Voltage : 3,21V SWD freq : 4000 KHz Connect mode: Normal Reset mode : Software reset Device ID : 0x495 Device name : STM32WBxx Flash size : 1 MBytes Device type : MCU Device CPU : Cortex-M0+/M4 UPLOADING OPTION BYTES DATA ... Bank : 0x00 Address : 0x58004020 Size : 104 Bytes [==================================================] 100% OPTION BYTES BANK: 0 Read Out Protection: RDP : 0xAA (Level 0, no protection) BOR Level: BOR_LEV : 0x0 (BOR Level 0 reset level threshold is around 1.7 V) User Configuration: nBOOT0 : 0x1 (nBOOT0=1 Boot from main Flash) nBOOT1 : 0x1 (Boot from code area if BOOT0=0 otherwise system Flash) nSWBOOT0 : 0x1 (BOOT0 taken from PH3/BOOT0 pin) SRAM2RST : 0x0 (SRAM2 erased when a system reset occurs) SRAM2PE : 0x1 (SRAM2 parity check disable) nRST_STOP : 0x1 (No reset generated when entering the Stop mode) nRST_STDBY : 0x1 (No reset generated when entering the Standby mode) nRSTSHDW : 0x1 (No reset generated when entering the Shutdown mode) WWDGSW : 0x1 (Software window watchdog) IWGDSTDBY : 0x1 (Independent watchdog counter running in Standby mode) IWDGSTOP : 0x1 (Independent watchdog counter running in Stop mode) IWDGSW : 0x1 (Software independent watchdog) IPCCDBA : 0x0 (0x0) Security Configuration Option bytes: ESE : 0x1 (Security enabled) SFSA : 0xCB (0xCB) FSD : 0x0 (System and Flash secure) DDS : 0x1 (CPU2 debug access disabled) C2OPT : 0x1 (SBRV will address Flash) NBRSD : 0x0 (SRAM2b is secure) SNBRSA : 0xF (0xF) BRSD : 0x0 (SRAM2a is secure) SBRSA : 0xA (0xA) SBRV : 0x32C00 (0x32C00) PCROP Protection: PCROP1A_STRT : 0x1FF (0x8000FF8) PCROP1A_END : 0x0 (0x8000008) PCROP_RDP : 0x1 (PCROP zone is erased when RDP is decreased) PCROP1B_STRT : 0x1FF (0x8000FF8) PCROP1B_END : 0x0 (0x8000008) Write Protection: WRP1A_STRT : 0xFF (0x807F800) WRP1A_END : 0x0 (0x8000000) WRP1B_STRT : 0xFF (0x807F800) WRP1B_END : 0x0 (0x8000000) | |||||||
Deleted: | ||||||||
< < | USB, BLE and other MiddlewaresSTM32WB Forth without BLE, USB, Filesystems, RTOS etc. is not complete, to build this by myself from the scratch overwhelms me. I would like to go the reverse way and use the STM tools like CubeIDE, HAL, CubeMX and integrate the Mecrips Forth into it. Forth as an interactive extension for the STM ecosystem. Mecrisp Forth running as a CMSIS-RTOS thread. | |||||||
Deleted: | ||||||||
< < | Already done
21st Century Forthhttp://www.forth.org/svfig/21st.html![]() What's good about Forth
What's bad about Forth
What 21st Century Forth should be
What Forth needs
21st Century Forth desires and vision
CopyrightAuthors
LicenseThis project Mecrsip-Cube is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Mecrsip-Cube is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Mecrsip-Cube. If not, see http://www.gnu.org/licenses/![]() Acknowledgments
| |||||||
Line: 1 to 1 | ||||||||
---|---|---|---|---|---|---|---|---|
%DASHBOARD{ section="banner" | ||||||||
Line: 9 to 9 | ||||||||
Intro
Mecrisp-Stellaris Forth for the STM32 Cube ecosystem. | ||||||||
Changed: | ||||||||
< < | Forth is an interactive and extensible language, with built-in lexical analysis (tokenizer, parser) and compiler, needs less than 20 KiB Flash and 4 KiB RAM, unbelievable for a self-contained system. | |||||||
> > | Forth is an interactive and extensible language, with built-in lexical analysis (tokenizer, parser) and compiler, needs less than 20 KiB Flash and 4 KiB RAM, unbelievable for a self-contained (self-hosted) system. | |||||||
Forth is perfect for embedded systems where some sort of user interactivity like CLI and extensibility (at runtime) are needed. |
Line: 1 to 1 | ||||||||
---|---|---|---|---|---|---|---|---|
%DASHBOARD{ section="banner" | ||||||||
Line: 279 to 279 | ||||||||
STM32WB Forth without BLE, USB, Filesystems, RTOS etc. is not complete, to build this by myself from the scratch overwhelms me. I would like to go the reverse way and use the STM tools like CubeIDE, HAL, CubeMX and integrate the Mecrips Forth into it. Forth as an interactive extension for the STM ecosystem. Mecrisp Forth running as a CMSIS-RTOS thread. | ||||||||
Added: | ||||||||
> > | Already done
| |||||||
| ||||||||
Added: | ||||||||
> > |
| |||||||
| ||||||||
Changed: | ||||||||
< < |
| |||||||
> > |
| |||||||
| ||||||||
Changed: | ||||||||
< < |
| |||||||
> > |
| |||||||
| ||||||||
Added: | ||||||||
> > |
| |||||||
| ||||||||
Added: | ||||||||
> > |
| |||||||
Line: 1 to 1 | ||||||||
---|---|---|---|---|---|---|---|---|
%DASHBOARD{ section="banner" | ||||||||
Line: 112 to 112 | ||||||||
Added: | ||||||||
> > | ||||||||
Line: 1 to 1 | ||||||||
---|---|---|---|---|---|---|---|---|
%DASHBOARD{ section="banner" | ||||||||
Line: 11 to 11 | ||||||||
Forth is an interactive and extensible language, with built-in lexical analysis (tokenizer, parser) and compiler, needs less than 20 KiB Flash and 4 KiB RAM, unbelievable for a self-contained system. | ||||||||
Changed: | ||||||||
< < | Forth is perfect for embedded systems where some sort of user interactivity like CLI and extensibility are needed. | |||||||
> > | Forth is perfect for embedded systems where some sort of user interactivity like CLI and extensibility (at runtime) are needed. | |||||||
C & Forth in the 21st Century. C and Forth are both about 50 years old. To combine the strength of this two worlds results in powerful system that outperforms other much newer systems like Python. |
Line: 1 to 1 | ||||||||
---|---|---|---|---|---|---|---|---|
%DASHBOARD{ section="banner" | ||||||||
Line: 13 to 13 | ||||||||
Forth is perfect for embedded systems where some sort of user interactivity like CLI and extensibility are needed. | ||||||||
Changed: | ||||||||
< < | C & Forth in the 21st Century. C and Forth are both about 50 years old. To combine the strength of this two worlds results in powerful system that outperforms other much newer systems like Python. | |||||||
> > | C & Forth in the 21st Century. C and Forth are both about 50 years old. To combine the strength of this two worlds results in powerful system that outperforms other much newer systems like Python. | |||||||
Contents
| ||||||||
Line: 292 to 292 | ||||||||
| ||||||||
Added: | ||||||||
> > | 21st Century Forthhttp://www.forth.org/svfig/21st.html![]() What's good about Forth
What's bad about Forth
What 21st Century Forth should be
What Forth needs
21st Century Forth desires and vision
| |||||||
CopyrightAuthors |
Line: 1 to 1 | ||||||||
---|---|---|---|---|---|---|---|---|
%DASHBOARD{ section="banner" | ||||||||
Line: 273 to 273 | ||||||||
| ||||||||
Changed: | ||||||||
< < | BLE and other Middlewares | |||||||
> > | USB, BLE and other Middlewares | |||||||
STM32WB Forth without BLE, USB, Filesystems, RTOS etc. is not complete, to build this by myself from the scratch overwhelms me. I would like to go the reverse way and use the STM tools like CubeIDE, HAL, CubeMX and integrate the Mecrips Forth into it. Forth as an interactive extension for the STM ecosystem. Mecrisp Forth running as a CMSIS-RTOS thread. | ||||||||
Changed: | ||||||||
< < |
| |||||||
> > |
| |||||||
| ||||||||
Changed: | ||||||||
< < |
| |||||||
> > |
| |||||||
|
Line: 1 to 1 | ||||||||
---|---|---|---|---|---|---|---|---|
Added: | ||||||||
> > |
Mecrisp-Cube, Forth for the STM32 Ecosystem
Intro
Mecrisp-Stellaris Forth for the STM32 Cube ecosystem.
Forth is an interactive and extensible language, with built-in lexical analysis (tokenizer, parser) and compiler, needs less than 20 KiB Flash and 4 KiB RAM, unbelievable for a self-contained system.
Forth is perfect for embedded systems where some sort of user interactivity like CLI and extensibility are needed.
C & Forth in the 21st Century. C and Forth are both about 50 years old. To combine the strength of this two worlds results in powerful system that outperforms other much newer systems like Python.
Contents
Getting StartedThese instructions will get you a copy of the project up and running on your local machine (STM32 Nucleo board) for development and testing purposes.Prerequisites
![]()
/dev/ttyACM0 )
and set the speed to 115200 baud.
I set the putty terminal configuration to
Mecrisp-Stellaris 2.5.2 for STM32WB55 by Matthias Koch 23 5 / .[CR] 4 ok. : hello ." World" ;[CR] ok. hello[CR] World ok. InstallingA step by step series of examples that tell you how to get a development env running Install the IDE STM32CubeIDE![]() ![]() psi@homer:~> git clone https://github.com/spyren/Mecrisp-Cube Klone nach 'Mecrisp-Cube' ... remote: Enumerating objects: 106, done. remote: Counting objects: 100% (106/106), done. remote: Compressing objects: 100% (71/71), done. remote: Total 106 (delta 33), reused 106 (delta 33), pack-reused 0 Empfange Objekte: 100% (106/106), 938.96 KiB | 2.39 MiB/s, Fertig. Löse Unterschiede auf: 100% (33/33), Fertig.Import the project into the IDE: File -> Import -> General -> Existing Projects into Workspace -> Select root directory Copy project into workspace Browse to Mecrisp-Cube directoryGenerate code from the STM32CubeMX minimal.ioc file:
Project -> Generate CodeSelect the Build Configuration (Debug if you want to debug the project) and Build the project: Project -> Build Configurations -> Set Active -> Debug/Reelease Project -> Build Project Built With
Flash Mecrisp-Cube to the TargetAlternate ways to flash Mecrisp-Cube to the target.Nucleo BoardConnect Nucleo's ST-LINK USB to you PC. Erase the flash e.g. by openOCD, we use 768 KiB![]() $ telnet localhost 4444 Trying ::1... telnet: connect to address ::1: Connection refused Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. Open On-Chip Debugger > reset init Unable to match requested speed 500 kHz, using 480 kHz Unable to match requested speed 500 kHz, using 480 kHz target halted due to debug-request, current mode: Thread xPSR: 0x01000000 pc: 0x08003aae msp: 0x20000430 > flash erase_sector 0 0 192 erased sectors 0 through 192 on flash bank 0 in 4.583453s > flash write_image mecrisp-stellaris-stm32wb55.hex device idcode = 0x20016495 (STM32WB5x - Rev: 2.1) flash size = 1024kbytes flash mode : single-bank Padding 4 bytes to keep 8-byte write size block write succeeded wrote 15404 bytes from file mecrisp-stellaris-stm32wb55.hex in 0.329747s (45.620 KiB/s) > shutdown shutdown command invoked Connection closed by foreign host. USB DongleThe USB Dongle does not have a ST-Link interface, but the STM32WB has a built-in boot-loader. This bootloader works over USB. As programmer I use the CLI from the STM32CubeProg![]() $ alias cubepgmcli='/opt/STMicroelectronics/STM32Cube/STM32CubeProgrammer/bin/STM32_Programmer_CLI' $ cubepgmcli -c port=USB1 -ob displBTW you can flash the Nucleo Board in the same way. Update BLE StackYou can find the BLE Stack and FUS in STM32CubeWB![]() Projects/STM32WB_Copro_Wireless_Binaries .
Using USB_USER and the built-in bootloader (activate with jumper between CN7.5 and CN7.7)
$ alias cubepgmcli='/opt/STMicroelectronics/STM32Cube/STM32CubeProgrammer/bin/STM32_Programmer_CLI' STM32Cube_FW_WB_V1.4.0/Projects/STM32WB_Copro_Wireless_Binaries> cubepgmcli -c port=USB1 -fwdelete STM32Cube_FW_WB_V1.4.0/Projects/STM32WB_Copro_Wireless_Binaries> cubepgmcli -c port=USB1 -fwupgrade stm32wb5x_FUS_fw.bin 0x080EC000 firstinstall=0 STM32Cube_FW_WB_V1.4.0/Projects/STM32WB_Copro_Wireless_Binaries> cubepgmcli -c port=USB1 -fwupgrade stm32wb5x_BLE_Stack_fw.bin 0x080CB000 firstinstall=1Using ST-LINK (here to show the option bytes, SBRV : 0x32C00 means start address 4 * SBRV + 0x08000000 = 0x080CB000, 3D000 means there is no stack):
psi@homer:~/Dropbox/wbForth/CubeWB> cubepgmcli -c port=SWD -ob displ ------------------------------------------------------------------- STM32CubeProgrammer v2.3.0 ------------------------------------------------------------------- ST-LINK SN : 066BFF313335415043141250 ST-LINK FW : V2J35M26 Voltage : 3,21V SWD freq : 4000 KHz Connect mode: Normal Reset mode : Software reset Device ID : 0x495 Device name : STM32WBxx Flash size : 1 MBytes Device type : MCU Device CPU : Cortex-M0+/M4 UPLOADING OPTION BYTES DATA ... Bank : 0x00 Address : 0x58004020 Size : 104 Bytes [==================================================] 100% OPTION BYTES BANK: 0 Read Out Protection: RDP : 0xAA (Level 0, no protection) BOR Level: BOR_LEV : 0x0 (BOR Level 0 reset level threshold is around 1.7 V) User Configuration: nBOOT0 : 0x1 (nBOOT0=1 Boot from main Flash) nBOOT1 : 0x1 (Boot from code area if BOOT0=0 otherwise system Flash) nSWBOOT0 : 0x1 (BOOT0 taken from PH3/BOOT0 pin) SRAM2RST : 0x0 (SRAM2 erased when a system reset occurs) SRAM2PE : 0x1 (SRAM2 parity check disable) nRST_STOP : 0x1 (No reset generated when entering the Stop mode) nRST_STDBY : 0x1 (No reset generated when entering the Standby mode) nRSTSHDW : 0x1 (No reset generated when entering the Shutdown mode) WWDGSW : 0x1 (Software window watchdog) IWGDSTDBY : 0x1 (Independent watchdog counter running in Standby mode) IWDGSTOP : 0x1 (Independent watchdog counter running in Stop mode) IWDGSW : 0x1 (Software independent watchdog) IPCCDBA : 0x0 (0x0) Security Configuration Option bytes: ESE : 0x1 (Security enabled) SFSA : 0xCB (0xCB) FSD : 0x0 (System and Flash secure) DDS : 0x1 (CPU2 debug access disabled) C2OPT : 0x1 (SBRV will address Flash) NBRSD : 0x0 (SRAM2b is secure) SNBRSA : 0xF (0xF) BRSD : 0x0 (SRAM2a is secure) SBRSA : 0xA (0xA) SBRV : 0x32C00 (0x32C00) PCROP Protection: PCROP1A_STRT : 0x1FF (0x8000FF8) PCROP1A_END : 0x0 (0x8000008) PCROP_RDP : 0x1 (PCROP zone is erased when RDP is decreased) PCROP1B_STRT : 0x1FF (0x8000FF8) PCROP1B_END : 0x0 (0x8000008) Write Protection: WRP1A_STRT : 0xFF (0x807F800) WRP1A_END : 0x0 (0x8000000) WRP1B_STRT : 0xFF (0x807F800) WRP1B_END : 0x0 (0x8000000) BLE and other MiddlewaresSTM32WB Forth without BLE, USB, Filesystems, RTOS etc. is not complete, to build this by myself from the scratch overwhelms me. I would like to go the reverse way and use the STM tools like CubeIDE, HAL, CubeMX and integrate the Mecrips Forth into it. Forth as an interactive extension for the STM ecosystem. Mecrisp Forth running as a CMSIS-RTOS thread.
CopyrightAuthors
LicenseThis project Mecrsip-Cube is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Mecrsip-Cube is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Mecrsip-Cube. If not, see http://www.gnu.org/licenses/![]() Acknowledgments
![]() |