today we have managed to build and run Csound on bare metal e\.g\. without an OS on two different platforms:
the Daisy Seed and an arm processor on a Xylinx FPGA board. This work was carried out by Aman Jagwani,
and we have been updating the Csound develop branch for this so that the build can be reproduced by others.
Here is a very simple video demo showing Csound running on the Daisy Board
Once we have a bit more done in terms of integration IO such as MIDI and voltage sources on the Daisy, we hope to put together
a set of documents to guide any interested users. We are also hoping to integrate Csound and the FPGA to provide acceleration that is a more long term plan, which is part of Aman’s PhD research.
Awesome. Congratulations. Can’t wait to play “Trapped” and the Trapped MIDI collection on there - and Iain’s Haiku and “everything” from the Csound Manual. The next frontier. Awesome work. So exciting.
This is great news indeed. When the time comes, and with your permission, I’ll update the forked source for “diet csound” with the under-development build code.
The code on develop now will build for the STM32H7 with the toolchain from Bela.
We just need to push the cross compile file for cmake so anyone can have a go.
There’s a strange issue with csoundReadScore() that we still need to diagnose, but
everything else seems to work OK.
Wow. Can’t wait to see how the fpga stuff works out. I’ve been wanting to get my Zedboard accelerating Csound for years ever since the old extended Csound work by Barry Vercoe based on DSP Sharc devices from Analog Devices…
Victor – curious how csound reads “files” if there is no OS – what is the “file” concept? Also, devices, etc.
And how does one interact with the process? Is there a “shell”?
I’ve never really worked with bare metal, so I imagine this is a thing where you build on another host and push a self-executing image over a USB or serial port…but I’ve worked with Beal, and there’s a basic Linux OS there.
No files - only memory. So we supply Csound code as strings. Daisy has a way of accessing files in an SD card so that
could be used to load code.
Currently you have to write a program using the Csound API and it runs on the board. All IO then has to be handled
by that program (dispatching MIDI to Csound, GPIOs etc), we’ll be working on that now that we have sound.
One thing is not working: csoundReadScore(), so there’s no score sorting services available (yet) but otherwise
everything else seems to be good. I have not yet identified why it doesn’t work but I hope to get to the bottom of
this soon.
I’ve followed this listserv for several years. I haven’t had time to work with C Sound for the past 5 years, but I love getting reminders. Over the past few years, I’ve done many microcontroller projects in school. I would love to get back to C Sound and try to implement it on a board running an ARM microprocessor.
I am trying to reproduce this on Daisy Pod right now.. I managed to build libcsound.a (its only 3mb?) and have to see where to go from there. Any hints are very much appreciated