%DASHBOARD{ section="dashboard_start" }% %DASHBOARD{ section="banner" image="%PUBURLPATH%/MecrispCube/BoardSupportPackageWB5M/wb55-discovery-header.jpg" title="Mecrisp-Cube for the !STM32WB5MM-DK Discovery Board" titlestyle="color:#F00000;" }% %DASHBOARD{ section="box_start" title="Intro" width="485" height="300"}% The !STM32WB5MM-DK Discovery Board is not as cheep as the Nucleo Board but it has plenty of peripherals on board: OLED display 128x64 pixel, 128-Mbit Quad-SPI NOR Flash Memory, temperature sensor, accelerometer/gyroscope sensor, Time‑of‑Flight and gesture‑detection sensor, digital microphone, RGB LED, infrared LED, and touch sensor. Instant real-time programming with Forth. Sources on [[https://github.com/spyren/Mecrisp-Cube/tree/WB5M][GitHub]] (!WB5M branch on Mecrisp-Cube) %IMAGE{"%PUBURLPATH%/MecrispCube/BoardSupportPackageWB5M/wb55-discovery-clip.jpg" type="thumb" caption=""}% * Other !STM32WB [[MecrispCubeWB#STM32WB_Development_Boards][Development Boards]] * [[MecrispCubeWB#Flash_Mecrisp_Cube_to_the_Target][Flash]] Mecrisp-Cube application and Stack/FUS to the target %DASHBOARD{ section="box_end" }% %DASHBOARD{ section="box_start" title="Contents" width="460" height="300"}% %TOC% %DASHBOARD{ section="box_end" }% %DASHBOARD{ section="box_start" width="992" height="400" }% ---+ Features The standard [[WebHome#Already_done][Mecrisp-Cube features]] like RTOS, Filesystem, USB, etc. * 63 !KiB RAM dictionary * 384 !KiB Flash dictionary * [[MicroSdBlocks#STM32WB5MM_Discovery_Kit_SPI_S25][On board Serial Flash]] drive 0:, 1 !MiB * microSD drive 1: (needs [[MicroSdBlocks#SD_Drive][external adapter]]) * OLED display 128x64 pixel * RGB LED Not supported yet: * temperature sensor * accelerometer/gyroscope sensor * Time-of-Flight and gesture/detection sensor * digital microphone * infrared LED * touch sensor For more BSP details see BoardSupportPackageWB5M. %DASHBOARD{ section="box_end" }% %DASHBOARD{ section="box_start" width="992" height="600" }% ---+ Getting Started These instructions will get you a copy of the project up and running on your local machine (!STM32WB5MM-DK Dscovery Kit) for development and testing purposes. ---++ Prerequisites * [[https://www.st.com/en/evaluation-tools/stm32wb5mm-dk.html][STM32WB5MM-DK Dscovery Kit]] with !STM32W5MMG module, !STM32WB55 MCU (Cortex ARM M4) runs at a 32 MHz (the Bluetooth stack runs on a Cortex ARM M0+ core). ST-Link debugger/programmer is integrated on board. * Terminal emulator application for PC, e.g.: * [[http://www.putty.org/][PuTTY]] - Windows and Linux * [[http://en.sourceforge.jp/projects/ttssh2/][Tera Term]] - Windows * [[http://realterm.sourceforge.net/][Realterm]] - Windows * minicom, microcom, screen - Linux * Use the built in Eclipse console (but no LF) Flash the Mecrisp-Cube [[https://github.com/spyren/Mecrisp-Cube/raw/WB5e/Release/MecrispCubeWB5M.bin][binary]] (=MecrispCubeWB5M.bin=) or the [[https://github.com/spyren/Mecrisp-Cube/raw/WB5M/sdcard/boot/MecrispCubeWB5MUtil.bin][util-binary]] (=MecrispCubeWB5MUtil.bin=) to the Discovery Board. 1. Connect the Discovery Board USB ST-LINK to the PC 2. Copy the binary (=MecrispCubeWB5M.bin= or =MecrispCubeWB5MUtil.bin=) to the USB mass storage DIS_WB5MMG Start the terminal emulator application on the PC. Check for the serial communication port (e.g. for Linux =/dev/ttyACM0=). I set the putty terminal configuration to * Implicit CR in every LF * Local echo: Auto * Local line editing: Auto * Keyboard Backspace: Control-H * Keyboard Function: Keys VT100 * Remote character set: CP850 <pre> Mecrisp-Stellaris RA 2.5.4 by Matthias Koch. Mecrisp-Cube 1.4.5 for STM32WB Discovery, 63/384 KiB RAM/FLASH dictionary (C) 2022 peter@spyr.ch * Firmware Package STM32Cube FW_WB V1.11.0, USB-CDC, BLE Stack 5.3 (C) 2022 STMicroelectronics * CMSIS-RTOS V2 FreeRTOS wrapper, FreeRTOS Kernel V10.3.1 (C) 2020 Amazon.com * FatFs for internal flash and microSD - Generic FAT fs module R0.12c (C) 2017 ChaN * tiny vi - part of BusyBox (C) 2000, 2001 Sterling Huxley include 0:/etc/rc.local <b>23 5 / .[CR]</b> 4 ok. <b>: hello ." World" ;[CR]</b> ok. <b>hello[CR]</b> World ok. </pre> ---++ Special Functions on Startup [[TerminalIO#USB_CDC_Serial_Communication_API][USB-CDC]] is the default console. $ *Button 1*: [[TerminalIO#BLE_Cable_Replacement_Serial_Com][CRS]] (Bluetooth Cable Replacement Service) is standard console $ *Button 2*: [[TerminalIO#UART_Serial_Communication_API][UART]] is standard console ---++ RGB LED as Status Indicator The RGB LED displays the status $ *dimmed Green*: USB enumeration successfull $ *dimmed Blue*: BLE connected $ *flashing Red*: "disk" (serial flash or SD) write operation $ *flashing Yellow*: "disk" (serial flash or SD) read operation ---++ Additional Tools and Local Filesystem Populate a microSD with the contents of [[https://github.com/spyren/Mecrisp-Cube/tree/WB5M/sdcard][sdcard]]. Put the microSD into the uSD Card slot and reset or power cycle the board. The directory should look like this: <pre> <b>ls -l 1:[CR]</b> drw- 0 2021-04-18T18:12:38 boot drw- 0 2021-03-21T18:47:52 etc drw- 0 2021-03-21T18:47:54 fsr drw- 0 2021-03-21T18:47:54 home drw- 0 2021-03-21T18:47:56 man -rwa 7219 2021-01-08T19:42:36 README.md ok. </pre> You can use the local CLI commands like =mkfs=, =mkdir= and =cp= to create a filesystem on the serial flash and fill it with files and folders. But this is tedious job because I haven't yet implemented a recursive copy for !MecrispCube. But there is prepared disk image (for details see MicroSdBlocks#Serial_Flash) on microSD and the tool =dd=. You can copy the disk image to the drive 0: (this takes about 8 Minutes): <pre> <b>dd 1:/boot/fd-1MiB.img 0:[CR]</b> ok. <b>mount 0:[CR]</b> ok. <b>ls 0:[CR]</b> man fsr README.md boot etc home ok. </pre> The Mecrisp have some tools bundled in its distribution e.g. assembler, disassembler, dump, float. I put those tools and some more into the folder =/fsr=. With the "init.fs script" I compile my favorite ones into the flash directory (if you use the [[https://github.com/spyren/Mecrisp-Cube/raw/WB5M/sdcard/boot/MecrispCubeWB5MUtil.bin][util-binary]] binary, these tools are already compiled in): <pre> <b>compiletoflash[CR]</b> ok. <b>include /etc/init.fs[CR]</b> init.fs Loading started RAM Dictionary: 392991 KiB utils.fs loading ... conditional.fs loading ... dump.fs loading ... disassembler-m3.fs loading ... float.fs loading ... threads.fs loading ... RAM Dictionary: 392981 KiB init.fs finished ok. </pre> For example, the word disassember is available now: <pre> <b>see dump[CR]</b> 080405F0: B500 push { lr } 080405F2: F7C2 bl 08002A3E --> cr 080405F4: FA24 080405F6: CF08 ldmia r7 { r3 } 080405F8: F013 ands r2 r3 #F 080405FA: 020F 080405FC: F847 str r3 [ r7 #-4 ]! 080405FE: 3D04 08040600: 2A00 cmp r2 #0 08040602: D000 beq 08040606 08040604: 3610 adds r6 #10 08040606: CF08 ldmia r7 { r3 } 08040608: F847 str r6 [ r7 #-4 ]! </pre> %DASHBOARD{ section="box_end" }% %DASHBOARD{ section="box_start" width="992" height="600" }% ---+ Installing Development Environment A step by step series of examples that tell you how to get a development env running Install the IDE [[https://www.st.com/en/development-tools/stm32cubeide.html][STM32CubeIDE]], it is Eclipse and GCC based. [[https://www.st.com/en/development-tools/stm32cubemx.html][STM32CubeMX]] is included in the IDE, you need a stand alone installation only if you do not want to use the !STM32CubeIDE. Get the sources from github: <pre> psi@homer:~> <b>git clone --branch WB5M https://github.com/spyren/Mecrisp-Cube</b> Klone nach 'Mecrisp-Cube' ... remote: Enumerating objects: 1157, done. remote: Counting objects: 100% (1157/1157), done. remote: Compressing objects: 100% (620/620), done. remote: Total 3183 (delta 720), reused 934 (delta 525), pack-reused 2026 Empfange Objekte: 100% (3183/3183), 41.60 MiB | 6.96 MiB/s, Fertig. Löse Unterschiede auf: 100% (2100/2100), Fertig. </pre> Import the project into the IDE: <pre> File -> Import -> General -> Existing Projects into Workspace -> Select root directory Copy project into workspace Browse to Mecrisp-Cube directory </pre> Generate code from the !STM32CubeMX =MecrispCubeWB5M.ioc= file: <pre> Project -> Generate Code </pre> Restore changed source files <pre> $ git status {list of changed files} $ git restore {files to restore} </pre> Select the Build Configuration (Debug if you want to debug the project) and Build the project: <pre> Project -> Build Configurations -> Set Active -> Debug/Release Project -> Build Project </pre> %DASHBOARD{ section="box_end" }% %DASHBOARD{ section="dashboard_end" }% -- %USERSIG{PeterSchmid - 2021-07-01}% <a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by-sa/4.0/88x31.png" /></a><br />This work by <a xmlns:cc="http://creativecommons.org/ns#" href="http://spyr.ch" property="cc:attributionName" rel="cc:attributionURL">Peter Schmid</a> is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/">Creative Commons Attribution-ShareAlike 4.0 International License</a>.
Attachments
Attachments
Topic attachments
I
Attachment
History
Action
Size
Date
Who
Comment
jpg
wbfeather.jpg
r1
manage
697.5 K
2021-07-01 - 20:38
PeterSchmid
This topic: MecrispCube
>
WebHome
>
MecrispCubeWB5M
Topic revision: r10 - 2022-10-10 - PeterSchmid
Copyright © 2008-2025 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki?
Send feedback