ARM dev board recommendation

I’m looking for a recommendation on an ARM dev board. My end goal is to make a low-to-medium power handheld device that runs the Uxn virtual machine by @neauoire, writing an OS to manage multiple ROMs and provide misc. other basic services. The number of ARM dev boards and configurations out there is staggering and I think I’m a bit paralyzed from spending a few days pouring through all the options.

Goals:

  • Low power: I’m guessing that Cortex A stuff is just overkill; I’m not trying to run Android. The Playdate has a Cortex M7, which I think is roughly in line with the amount of computing power that is appropriate for this device.
  • Understandable: I’d like the entire codebase to be as easily understandable as possible by a single person, so I’d like to avoid dependencies whenever I can. I certainly don’t want to run Linux and I’d like to avoid FreeRTOS and the like if I can.
  • Self-contained: Writing all of the device drivers, memory management, etc. from scratch doesn’t scare me. I would also like to avoid any vendor-specific toolchains, huge libraries, and existing operating systems. Timeline is not an issue; this is about making a useful device for responsible computing, not taking it to market.

I will design the PCB for this, but I wanted to tackle the software with off-the-shelf parts first.

I have a Raspberry Pi 3 B on hand, and I tried running this bootloader (github.com/dwelch67/raspberrypi), which I could get to boot successfully, but there is some problem with minicom sending over binaries, etc. that I wasted two days on and couldn’t solve. So I figured that an official ARM dev board that was more ergonomic for loading and debugging would be a better direction.

I then started looking into STM32 Nucleo, TI Tiva, Adafruit Feather, etc. All Cortex M boards that I can find only have a few KB of SRAM on the CPU die. I will need at least a few MB of RAM for the occasional audio buffer, framebuffer, etc. The Playdate has 16MB according to Wikipedia. Even though the STM32 chips have a Flexible Static Memory Controller™, as I understand it, I can’t just hook up some external RAM on a breadboard because of the precise nature of matching the impedance across all of the data and clock lines.

So I guess the question boils down to: Can you recommend an ARM dev board, roughly in line with a Cortex M4 or M7, that ships with a few MB of RAM? Or is there a solution for adding extra RAM to such a board before diving into a custom PCB?

Any advice or directions welcome.

3 Likes

needing to have the ram on the core itself incredibly limits your options, but the good news is that there are a bunch of devboards that have ram already soldered on. Teensy is great if you want 2mb of onboard ram, but the bga pitch is pretty tough to deal with when you do go to you own pcb.

Daisy is a good option if you want the stm32h7.

i.MX RT1020 Evaluation Kit | NXP Semiconductors is another good one, it seems like they are targeting the audio market already.

Teensy 4.0 or 4.1?

T4:

  • ARM Cortex-M7 at 600 MHz
  • Float point math unit, 64 & 32 bits
  • 1984K Flash, 1024K RAM (512K tightly coupled), 1K EEPROM (emulated)

T4.1 adds

  • 7936K Flash, 1024K RAM (512K tightly coupled), 4K EEPROM (emulated)
  • QSPI memory expansion, locations for 2 extra RAM or Flash chips

And lots more pins, sd card reader, etc.

Teensy® 4.0
Teensy® 4.1

FWIW - dirtywave M8 Tracker runs on T4 and is very a capable synth/device.

1 Like

I don’t necessarily need the RAM on the core itself. I really don’t need any kind of crazy hot GDDR5X stuff. Do you know if there is some kind of lower-speed stuff to get me a few MB externally without a lot of precision in the impedance department?

Edit: Yeah looks like the Teensy can have one of these! Probably exactly what I’m looking for!

Thanks for the i.MX RT1020 recommendation.

Before investing in the Teensy ecosystem I’d recommend checking out how easy it is to setup a debugger. In my limited experience I couldn’t really figure it out (what I read requires modding the teensy) and thus I ended up buying an STM32 Nucleo dev board to start my explorations into embedded software.
Some would say that print-statement debugging is sufficient, or you might be able to do most your dev process on your computer. Regardless, for me, being new to C++, I really found having a normal break-point debugger to be crucial to my software writing process

1 Like

@philomates this is what I was hoping for, some real experience with the quirks of the system. Thanks for the link, that mod looks a little more than I’m interested in at the moment; I want a board with a good out of the box dev experience.

I wonder how hard it would be to add one of these PSRAM chips to a Nucleo board, even if it is breadboard-ugly. Are these types of chips super sensitive to impedance issues?

Are you looking to make your product out of the devboard, or using the devboard to develop it before you make your own boards? I only ask because there maybe manufacturer limitations around that - STM32 Discoveries, for instance, weren’t allowed to be put into anything. (I think the Nucleo licensing is much more friendly).

It does sound like you have some specific requirements; is there a reason you’re not interested in spinning your own board that does have, say, the right RAM on it?

1 Like

Just interested in developing the software first, no intention of dropping the dev board into a product.

I do plan on spinning my own board in the future once I’m past this exploration phase. I basically want a stock ARM chip, plus a few MB of extra RAM, no matter how it gets done (even if it’s just hanging off the breadboard).

I’m hoping someone could give some pointers regarding attaching one of these 8-pin PSRAM chips to a Nucleo board, for example. Will that work at all? Is there an easier way? @philomates’s warning against the Teensy’s debugging situation is helpful.

the type of memory you’re looking for is probably SDRAM. (substantially slower than SRAM but far larger capacity for cost.) unfortunately a lot of otherwise attractive prototyping platforms (like adafruit’s SAMD51 stuff) do not provide a lot of SDRAM.

this STM devboard includes a healthy memory component, and seems to me (at first glance) like a good fit for your requirements:
https://www.mouser.com/datasheet/2/389/32f429idiscovery-1848008.pdf

and the other thing that comes to mind is indeed an electrosmith daisy (particularly if high quality sound processing/generation is of interest):

both of these are easy to set up for SWD/JTAG debugging.

teensy is a great platform but maybe a little less friendly to get going with (at least if you’re trying to step outside of arduino)

maybe worth noting that although all of these are “bare metal” options, they all come with HAL layers that you will probably rely on to actually get anything done with your peripherals. you may well find that you prefer daisy’s HAL library to STM’s for example. (i know i do)

(i guess if you are seriously interested in programming all the peripherals yourself then you won’t care about HALs. but in that case, your absolute #1 concern is going to be the hardware programming model for the MCU you’re considering. e.g. you will be rolling your own SDRAM controller and you will be spending a lot of time with timing tables from e.g. table 104 in this stm32f4 datasheet. so the datasheets would probably be the place to look first, see what seems amenable to your needs / style.)

like, if you really are into a certain MCU, but there isn’t a perfect devboard for it, then you will probably want to get the closest devboard you can, and your first task will be designing a more appropriate HW prototyping environment for yourself.

7 Likes

@proswell linked the following on the norns study group discord.

seems to be in early development but looks promising.

dunno if it fits your RAM requirements though.

Kris Slyka, the developer of whateverdsp, was only able to make one run of prototypes of these so far because of part shortages, but I believe she may have some left. I have one coming just to experiment with.

I’ve also been messing w/ Daisy and as someone new to this side of things I find it to be very powerful + approachable.

1 Like

Thanks for the input everyone.

I was able to get my hands on an Nucleo STM32G491RE and some 8MB PSRAM chips. I’ll post any successes or failures here. :ghost:

4 Likes

I have done many designs starting with the Texas Instruments TM4C129x series, and they have a couple of LaunchPad boards. There are two daughterboard connector sets. I don’t know if they have RAM add-ons, but it would seem likely that there would be some. The LaunchPad have built-in JTAG emulators, so you don’t need a separate product to get started prototyping your firmware and single-stepping the processor as needed for debugging.

1 Like