Hello! I am considering buying the console because it is rather unique and amazing device. Although, as a rookie ARM hardware enthusiast, I have several questions, because I am not interested in making games, so you have all the rights to completely ignore my chatter.
Of course all the questions below belong to C language.
- The screen updates
I have read this and it looks like that you already use DMA for updating the screen. But: can you just make single buffer and automatically send the whole frame? Framerate will be capped but it would be easier for CPU (you just update the necessary things (bytes in the buffer) and leave the ones that must not change, and let the DMA do the rest automatically (circular buffer mode), even if half-updated frame is sent, you will understand why it is important for me).
- The RAM
You mentioned in the thread linked above that only 320 KiB of SRAM are available, does it mean that other 16 MiB are connected through SPI or some other relatively slow bus? The CPU (STM32F746) has some hardware support for memory, or this memory cannot be accessed by DMA? If these 16 MiB are somehow "external", how fast they are (1-byte reads/writes per second, for example)?
- The SDK
Can I completely stop all the FreeRTOS things when my app is running? I know that I would need to manually do the screen and other stuff but I want ALL the performance... I want to start it at my will, though, to e.g. write/read files, but then stop again for performance-critical parts.
- The overclock
The datasheet stays that this MCU can run at 216 MHz but your clock speed is lower. I understand it as you wanted to make battery life longer, am I right? Can I somehow crank it up when my app is running and then return back to default values? Which raises the next question...
- The low-level control
Can I completely bypass the SDK and make direct hardware register writes, directly program DMA channels and modes, timers, interrupts (with priority levels) etc.?
- The audio
I want direct access to audio buffer(s) for doing my own sound synth routines. Changing sample rate to arbitrary values would be nice addition but I am afraid you use some external DACs that would not allow that. I also hope you use some kind of DMA transfers to output the audio. I want to manually start and stop the audio playback at hardware level. Also recording some sounds from microphone would be a nice addition since you can sample on the fly.
- The controls
I hope you connected the buttons in such a way that I can use hardware interrupt when they are pressed. This is important because it allows to immediately stop the tight sound synth routine when the button is pressed which is quite convenient.
- The app execution
My theory is that the app is loaded into RAM entirely, so the 16 MiB are occupied by code and data. If no, how can I force this to happen?
- BUT WHY??
Because I want to write a tracker! The Flipper Zero one was fun but this console has much more RAM so I can play samples in addition to synth sounds, faster CPU means I can have more channels and more advanced synth (like 4-op FM synth yeah), and bigger display means I can organize the display in a more... meaningful way
I understand that the console is intended for games not for chiptune trackers, but how it can be retro without retro music? Pulp editor is too limited and is not a tracker which makes me sad. And also... maybe... I will make MOD/XM/IT player! But only if I have the idea about the questions I wrote... So... If you really want to answer to this pile of stupid questions, you sure are welcome!