|
Forum Index : Microcontroller and PC projects : CMM2 V6.00.00 betas
| Author | Message | ||||
| phil99 Guru Joined: 11/02/2018 Location: AustraliaPosts: 2837 |
It should be here https://geoffg.net/maximite.html under 'Other Downloads' or on FoTS. |
||||
| disco4now Guru Joined: 18/12/2014 Location: AustraliaPosts: 1060 |
I was wondering where this post went. I was preparing it elsewhere and could not find it anywhere when I wanted to work on it. It was posted by accident but now has the Beta 6 attached. Once I have the documentation updated the intention is to push the Betas to Geoff's CMM2 web page and provide a link to that. V6.00.00b6 CMM2 V6.00.00 Beta6 Update AUTOSAVE N filename for fast loading with no echo. TURTLE command updated to Peters new enhanced version SORT command has an addition option. Note: The previous intermittent failure to attach the USBKeyboard seems to be still there. After updating the firmware you may need several power resets until the keyboard is connected. The red message below indicates when it successfully connects. This is a strange fault which will need some more playing with. 480MHz Colour Maximite 2 G2 MMBasic Version 6.00.00b6 Copyright 2011-2025 Geoff Graham Copyright 2016-2025 Peter Mather > USB Keyboard Connected OK CMM2V6.00.00b6.zip Any feedback on whether is works or is completely broken welcome. Gerry F4 H7FotSF4xGT |
||||
| matherp Guru Joined: 11/12/2012 Location: United KingdomPosts: 10646 |
Gerry If you contact Geoff he may give you access to upload to his site the betas as you develop. |
||||
| disco4now Guru Joined: 18/12/2014 Location: AustraliaPosts: 1060 |
Peter, Thanks,Geoff has given me the details. Just want to update the manual a bit for the first one on Geoff's site. Gerry F4 H7FotSF4xGT |
||||
| homa Guru Joined: 05/11/2021 Location: GermanyPosts: 498 |
Hello Gerry, Thanks for the b6. Unfortunately, the USB keyboard is still causing problems. After a longer break (a few minutes) of the CMM2, I need between 3-5 resets to get the keyboard working. If I use the on/off switch, I need more like 8-10 attempts. If I only need one reset, it can work immediately, but unfortunately this is not always the case :-( I NEVER had this problem with the last official release version V5.07.01. It only started with the betas. A second issue is that after a few minutes of play, the game Knightmare throws this error: ‘Error in Music.inc line 67: A hard error occurred in the low Level disk I/O layer’. The line number varies, regardless of the firmware version. LeoNicolas thinks it's not a problem with the programme, but rather a problem with the firmware?!? Matthias |
||||
| matherp Guru Joined: 11/12/2012 Location: United KingdomPosts: 10646 |
Gerry, you could try squishing the image up to fit in blocks 0-6 again and see if it makes a difference, My very bog standard Lenovo KU-0225 always connects perfectly with b4 but won't connect at all with b6. I ran Knightmare on b4 and it didn't stop in the few minutes I was playing it. |
||||
| LeoNicolas Guru Joined: 07/10/2020 Location: CanadaPosts: 542 |
I'll update my CMM2 with the beta firmware and test it with my games. Peter, is the command to swap which buffer will be displayed on the screen available on the MMB4W? |
||||
| matherp Guru Joined: 11/12/2012 Location: United KingdomPosts: 10646 |
Can't remember, but I should never have implemented it on the CMM2 - much too easy to get confused and unnecessary given how fast framebuffer copies happen |
||||
| disco4now Guru Joined: 18/12/2014 Location: AustraliaPosts: 1060 |
V6.00.00b7 CMM2 V6.00.00 Beta7 Update Recompiling for size seems to fix the keyboard connection issue. CMM2V6.00.00b7.zip F4 H7FotSF4xGT |
||||
| homa Guru Joined: 05/11/2021 Location: GermanyPosts: 498 |
Yes, it truly does! Thank you.The only thing left is the crash with music effects (Could it be due to dynamic path assignment? Because Files goes haywire when you try to switch to a subfolder (just try it 2-3 times) ... you can see it in the status bar!). I actually wanted to use my graphics grabber for this, but it's currently bricked due to a firmware update. I'll try it with my mobile phone. But just start the game, set the difficulty to Easy and Stage 1. I can't reach the final boss. The game crashes shortly before that with this screen. Restarting is not possible. The only thing that helps is resetting the CMM2. The new b7 is really helpful for this, the keyboard is there immediately :-) ![]() Matthias *updated Edited 2025-11-19 08:18 by homa |
||||
| matherp Guru Joined: 11/12/2012 Location: United KingdomPosts: 10646 |
Gerry, Thinking about this overnight, I can see three things to try. First, individually set the HAL routines to compile Os but compile the rest O2. This would test whether there is a compilation issue with the USB HOST issues. My guess is that this won't be the problem but who knows? The second is to modify the load file to set up a separate psect in flash area 7. Then allocate specific routines to the psect (e.g. all the maths routines). This would reduce pressure on areas 0-6 allowing many more files to be compiled O2. Finally, would be to try different versions of the GCC compiler. I think the problems may have really started at a compiler change with an update to the CubeIDE version but can't prove this. Moreover, I don't know in CubeIde how to use a different compiler. I don't have a version of the current code that compiles. The version I copied from Dropbox gives multiple errors but that may be me not integrating it into my workspace properly. I can though have a play with b4 and see if I can make any progress with that |
||||
| disco4now Guru Joined: 18/12/2014 Location: AustraliaPosts: 1060 |
Peter, I have been trying a few of those things. I will try a few more. The Beta7 I published seems to be OK for the keyboard. It actually extends into flash area 7, not sure if its code or just the load file stuff. The compile does give about 15 warnings on the REGEX stuff. I will update dropbox with the beta7. Gerry F4 H7FotSF4xGT |
||||
| matherp Guru Joined: 11/12/2012 Location: United KingdomPosts: 10646 |
I've made good progress. First I let the IDE update to V2.0 In the project properties I have set the compiler to ISO C99 + extensions The project properties are optimisation Os This is my load file /* ***************************************************************************** ** ** File : LinkerScript.ld ** ** Abstract : Linker script for STM32H743ZITx Device with ** 2048KByte FLASH, 128KByte RAM ** ** Set heap size, stack size and stack location according ** to application requirements. ** ** Set memory bank area and size if external memory is used. ** ** Target : STMicroelectronics STM32 ** ** ** Distribution: The file is distributed as is, without any warranty ** of any kind. ** ** (c)Copyright Ac6. ** You may use this file as-is or modify it according to the needs of your ** project. Distribution of this file (unmodified or modified) is not ** permitted. Ac6 permit registered System Workbench for MCU users the ** rights to distribute the assembled, compiled & linked contents of this ** file as part of an application binary file, provided that it is built ** using the System Workbench for MCU toolchain. ** ***************************************************************************** */ /* Entry Point */ ENTRY(Reset_Handler) /* Highest address of the user mode stack */ _estack = 0x20020000-0x10; /* end of RAM */ /* Generate a link error if heap and stack don't fit into RAM */ _Min_Heap_Size = 0x100; /* required amount of heap */ _Min_Stack_Size = 0x4800; /* required amount of stack */ /* Specify the memory areas */ MEMORY { DTCMRAM (rw) : ORIGIN = 0x20000000, LENGTH = 128K AXIRAM (rw) : ORIGIN = 0x24000000, LENGTH = 512K RAM_D2 (rw) : ORIGIN = 0x30000000, LENGTH = 288K RAM_D3 (rw) : ORIGIN = 0x38000000, LENGTH = 64K ITCMRAM (xrw) : ORIGIN = 0x00000000, LENGTH = 64K FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 896K FLASH7 (rx) : ORIGIN = 0x080E0000, LENGTH = 128K FLASH2 (r) : ORIGIN = 0x08100000, LENGTH = 1024K /*RAM_D5 (rw) : ORIGIN = 0x38800000, LENGTH = 4K*/ } /* Define output sections */ SECTIONS { /* The startup code goes first into FLASH */ .isr_vector : { . = ALIGN(4); KEEP(*(.isr_vector)) /* Startup code */ . = ALIGN(4); } >ITCMRAM AT> FLASH /* used by the startup to initialize data */ _siDTCMData = LOADADDR(.DTCMData); .DTCMData : { . = ALIGN(4); _sDTCMData = .; /* create a global symbol at DTCMData start */ . = ALIGN(4); *stm32h7xx_it.o (.data .data*) _eDTCMData = .; /* create a global symbol at DTCMData end */ } >DTCMRAM AT> FLASH /* Uninitialized DTCM data section */ . = ALIGN(4); .DTCMbss : { . = ALIGN(4); _sDTCMbss = .; /* create a global symbol at DTCMbss start */ . = ALIGN(4); _eDTCMbss = .; /* create a global symbol at DTCMbss end */ } >DTCMRAM /* used by the startup to initialize data */ _siITCM = LOADADDR(.ITCMSection); /* The program code and other data goes into FLASH */ .text : { . = ALIGN(4); *(.cspace) *(.text) /* .text sections (code) */ *(.text*) /* .text* sections (code) */ *(.glue_7) /* glue arm to thumb code */ *(.glue_7t) /* glue thumb to arm code */ *(.eh_frame) KEEP (*(.init)) KEEP (*(.fini)) . = ALIGN(4); _etext = .; /* define a global symbols at end of code */ } >FLASH .extra : { . = ALIGN(4); KEEP(*(.extra)) /* <-- explicitly pull in .extra */ . = ALIGN(4); _etext7 = .; } >FLASH7 .ITCMSection : { . = ALIGN(4); _sITCM = .; /* create a global symbol at ITCM start */ *stm32h7xx_it.o (.text .text*) *stm32h7xx_it.o (.rodata .rodata*) *Timers.o (.text .text*) *Timers.o (.rodata .rodata*) *stm32h7xx_hal_ltdc.o (.text .text*) *stm32h7xx_hal_hcd.o (.text .text*) _eITCM = .; /* create a global symbol at ITCM end */ } >ITCMRAM AT> FLASH /* Constant data goes into FLASH */ .rodata : { . = ALIGN(4); *(.rodata) /* .rodata sections (constants, strings, etc.) */ *(.rodata*) /* .rodata* sections (constants, strings, etc.) */ . = ALIGN(4); } >FLASH .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } >FLASH .ARM : { __exidx_start = .; *(.ARM.exidx*) __exidx_end = .; } >FLASH .preinit_array : { PROVIDE_HIDDEN (__preinit_array_start = .); KEEP (*(.preinit_array*)) PROVIDE_HIDDEN (__preinit_array_end = .); } >FLASH .init_array : { PROVIDE_HIDDEN (__init_array_start = .); KEEP (*(SORT(.init_array.*))) KEEP (*(.init_array*)) PROVIDE_HIDDEN (__init_array_end = .); } >FLASH .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(SORT(.fini_array.*))) KEEP (*(.fini_array*)) PROVIDE_HIDDEN (__fini_array_end = .); } >FLASH /* used by the startup to initialize data */ _sidata = LOADADDR(.data); /* Initialized data sections goes into RAM, load LMA copy after code */ .data : { . = ALIGN(4); _sdata = .; /* create a global symbol at data start */ *(.data) /* .data sections */ *(.data*) /* .data* sections */ . = ALIGN(4); _edata = .; /* define a global symbol at data end */ } >DTCMRAM AT> FLASH .my_section (NOLOAD): { . = ALIGN(4); _s_my_section = .; *(.my_section) . = ALIGN(4) ; _e_my_section = .; } > DTCMRAM /* Uninitialized data section */ . = ALIGN(4); .bss : { /* This is used by the startup in order to initialize the .bss secion */ _sbss = .; /* define a global symbol at bss start */ __bss_start__ = _sbss; *(.bss) *(.bss*) *(COMMON) . = ALIGN(4); _ebss = .; /* define a global symbol at bss end */ __bss_end__ = _ebss; } >DTCMRAM /* User_heap_stack section, used to check that there is enough RAM left */ ._user_heap_stack : { . = ALIGN(8); PROVIDE ( end = . ); PROVIDE ( _end = . ); . = . + _Min_Heap_Size; . = . + _Min_Stack_Size; . = ALIGN(8); _e_endheap = .; } >DTCMRAM /* .backup (NOLOAD): { . = ALIGN(4); _s_backup = .; *(.backup) . = ALIGN(4) ; _e_backup = .; } > RAM_D5*/ /* Remove information from the standard libraries */ /DISCARD/ : { libc.a ( * ) libm.a ( * ) libgcc.a ( * ) } .ARM.attributes 0 : { *(.ARM.attributes) } } Note the .extra psect and the extra FLASH2 section I then set all the functions in OtherDisplays.c and Maths.c to use the new psect e.g. void __attribute__((section(".extra"))) DrawBitmap8(int x1, int y1, int width, int height, int scale, int fc, int bc, unsigned char *bitmap){ This makes loads of space available in .text Then set individually the key MMbasic files to O2. I set: MMbasic, commands, functions, operators, mm_misc, memory, timer, OtherDisplays, MATHS, Draw You can probably add more Doing this I get full performance and completely reliable USB keyboard. Hope this helps Edited 2025-11-19 21:58 by matherp |
||||
| ville56 Senior Member Joined: 08/06/2022 Location: AustriaPosts: 292 |
Peter, 2 questions: 1) would it be possible to have in the editor a funtion key to jump to a linenumber? E.g. F6 and enter linenumber. I think this would be helpful in lager programs when there is need to jump around in the code while debugging as MMCC and other editors display linenumbers. 2) Is it possible to decouple the namespaces (and probably the memory) for variables and constants. I usually define, whatever needs to be defined, in constants (Yes, I come from the compiler frontline). I already ran out of space with a RP2040, so I had to upgrade to a RP2350. Decoupling could double the available objects. If the effort is too much, just forget it .... Gerald 73 de OE1HGA, Gerald |
||||
| matherp Guru Joined: 11/12/2012 Location: United KingdomPosts: 10646 |
Try this version of b7. This is fully up-to-date with Gerry's changes and has my memory frig to re-optimise performance. Gerry, I've updated my dropbox share to you. I believe the configuration by file is in .cproject.org CMM2V7.00.00b7.zip Edited 2025-11-20 01:12 by matherp |
||||
| homa Guru Joined: 05/11/2021 Location: GermanyPosts: 498 |
I did that. The keyboard also works immediately. No improvement when playing the game. After the crash, "files" can no longer be accessed; the only solution is to reset the device. |
||||
| matherp Guru Joined: 11/12/2012 Location: United KingdomPosts: 10646 |
Sounds like an application issue assuming someone else can replicate. Nothing really Gerry or I can look at unless someone can re-create it with a simple test program. |
||||
| homa Guru Joined: 05/11/2021 Location: GermanyPosts: 498 |
As requested, here is a small test program. Run it for about 3–4 minutes and the bug will appear. testsound.zip ![]() Edited 2025-11-20 07:13 by homa |
||||
| matherp Guru Joined: 11/12/2012 Location: United KingdomPosts: 10646 |
Running at the moment 15 minutes and no issues (my b7). Will leave it running overnight but I suspect the issue is in your environment SD card or PSU |
||||
| disco4now Guru Joined: 18/12/2014 Location: AustraliaPosts: 1060 |
Ran for 2hr 15min until I stopped it with CNTRL+C. B7 built with Peter's new arrangements. F4 H7FotSF4xGT |
||||
| The Back Shed's forum code is written, and hosted, in Australia. | © JAQ Software 2025 |