1

I'm putting together a new university-level assembly language/systems course.

  • I'm keen to use ARM32, since ARM is extremely relevant, and there are many boards to choose from
  • I want to give all the students their own board to hack on (budget ~$30 each) since in my experience having something that's yours gives you ownership and buy-in to the course
  • getting a dev environment set up (including hardware debugging) should be pretty painless, and ideally cross-platform so that they can muck around on their own laptops without needing dual-boot/VMs
  • I want a pony (yep, I realise some of these goals are at odds with each other and tradeoffs must be made)

I don't need lots of on-board functionality (or compatibility with daughterboards, etc) since I just want to teach the basics.

Some options in the mix (although they don't all play nicely together) are:

I know that most folks don't write bare asm for these boards these days, but since the purpose is to teach the basics with a real-world flavour it seems like it'd be a nice way to go.

Anyway, sorry for the long & open-ended question, any comments and suggestions are welcome.

Ben
  • 843
  • 8
  • 21
  • When you say "cross platform", do you mean something like per-process ARM emulation, so you don't need a whole VM, just emulation for one ARM binary? That works ([see my walk-through of setting up qemu-user on a Linux system](http://stackoverflow.com/a/39504457/224132), but I found it wasn't totally seamless for gdb. There were some weird error messages, but I could still single-step and basically use cross-gdb running on the host to debug the guest process. – Peter Cordes Nov 15 '16 at 07:47
  • This idea of having your own hardware seems interesting, but there seem to be huge potential downsides. (e.g. hardware failure, damage, or loss). I think it would be a really good idea to make sure that the course-work *can* be completed using an ARM emulator running under the student's choice of host OS. But then maybe some students will get less out of the course if they opt for that to save 30$ on what's essentially a lab-equipment fee, unless you're proposing to provide these boards to students. – Peter Cordes Nov 15 '16 at 07:53
  • 32-bit ARM sounds like a good choice of ISA. It has real-life relevance, and is a pretty standard RISC ISA in a lot of ways. I learned m68k, then x86, because that's what ran natively on my desktop hardware (and I thought it was cool that my hardware was running machine code I'd created pretty directly. I even hooked up some LEDs to the parallel port just to see them light up after running a program that used the Linux `iopl()` system call to request permission to execute an `OUT` instruction.) – Peter Cordes Nov 15 '16 at 07:57
  • Hi Peter, thanks for your comments. By "cross platform" I mean that I want them to be able to develop on their own machines (lowering barriers to tinkering and all that). Re: own hardware, this is motivated by a colleague's experience with another course - once the students had their *own* hardware they were more engaged. But having an emulation option (e.g. qemu) *as well* would be great. – Ben Nov 17 '16 at 03:11

1 Answers1

0

For those who were interested about how this story turns out...

We ended up going with the STM32 L476G Discovery board and the open-source System Workbench for STM32 editor.

Ben
  • 843
  • 8
  • 21