Updating the ARMSID firmware
Release Year
Description
A replacement of the MOS6581 and MOS8580 used in the Commodore C64 and is an ideal solution to be used with the SID Soundchip Interface.
It determines (through supply voltages) which chip it replaces and starts the appropriate emulation however it can be re-configured using the ARMSID Config Utility available on SAM Revival #26.
Screenshots
Instructions
As the ARMSID is traditionally used in a Commodore the easiest and recommended way to apply firmware updates is to put the chip inside a Commodore and download the official update utility. But, if you do not have a Commodore or you do but do not want the hassle of taking it apart and swapping the SID chip then it is possible to do the update on a PC using an Arduino Uno and the open source project https://github.com/nobomi/Arduino-ARMSID-configurator.
To simplify this and so you do not have to read through the all the documentation and wiring schematics, here is a small guide you can follow instead.
DISCLAIMER: Follow these update instructions at your own risk. You are entirely responsible for ensuring the ARMSID is connected up correctly to minimise the possibility of damaging the ARMSID. Also, during the update the ARMSID is erased and re-programmed so again this is done at your own risk as a failed flash carries a small risk of "bricking" the chip. It is likely that running the update again will successfully recover it (as the ARMSID has a bootloader which cannot be overwritten by this update procedure) but this is not guaranteed. To clarify, this update procedure is done entirely at your own risk.
As you will need an Arduino Uno along with jumper cables and a breadboard to perform this I am going to assume you are comfortable with connecting it up, loading, compiling and uploading sketches to the Arduino Uno as there will be very little guidance on these areas.
First we shall deal with connecting it all up. You need to remove the ARMSID from the SID Sound Interface and place it in the breadboard. For firmware updates, you can connect it directly to the Arduino with no passive parts, no resistors, no capacitors, just connect the Arduino pins to the ARMSID as follows:
Arduino Uno Pin(s) | ARMSID Pin(s) |
---|---|
D13 | 5 |
D9 | 6 |
D8 | 7 |
A5 | 8 |
A0 | 9 |
A1 | 10 |
A2 | 11 |
A3 | 12 |
A4 | 13 |
GND (3 Pins) | 14 |
D10 | 15 |
D11 | 16 |
D2 | 17 |
D3 | 18 |
D4 | 19 |
D5 | 20 |
D6 | 21 |
D7 | 22 |
5V | 25 & 28 |
To be on the safe side, I connected all three ground pins on the Arduino Uno to ARMSID pin 14 but you can probably get away with just connecting a single ground.
Also, 5V from the Arduino Uno was connected to ARMSID pin 28 and then a jumper cable used between ARMSID pins 25 and 28.
The screenshots above show how it should be connected.
Final connection to make is to plug the USB lead from the Arduino Uno to a PC USB port.
Now onto the software side of things. Download the sketch ArduinoUpdater.ino, open the Arduino IDE, load, compile and upload the sketch to the Arduino. When it has successfully uploaded you can close the Arduino IDE.
There are a couple more files to download, ARMSIDupArduino.exe and the latest firmware file ARMSID_Arduino-updater_fwxyy.zip (where xyy is the version number x.yy).
Make sure to download the correct firmware, there is a v2 and a v3, it is the v2 firmware you need (v3 is for the ARM2SID). As of 21/10/2024 the firmware version is v2.16.
Unzip the firmware file and you should have a file called asidxyy.bin (where xyy is the version number x.yy). Make sure this file and the file ARMSIDupArduino.exe are in the same directory.
Although the firmware has a .bin extension it is not binary code for the STM32. The firmware is encrypted and requires an ARMSID bootloader for decryption and installation. The firmware here is exclusively for the ARMSID Arduino Updater and if you upload it directly to the STM32 using STM tools, you will brick your ARMSID - you have been warned!
To update the firmware, open a command window and change to the area where you have the ARMSIDupArduino.exe and asidxyy.bin files. Enter the following (where COMx is the COM port that the Arduino is connected to):
ARMSIDupArduino.exe COMx asidxyy.bin
The command window will fill with output similar to the following:
Opening serial port...OK
========================================
NOBOMI ARMSID UPDATE TO V2.16
========================================
NOBOMI ARMSID UPDATE TO V2.16
ARMSID FOUND IN ARDUINO
FW VERSION:2.15
EMULATED DEVICE:85XX
APP/BOOT:APREADY TO UPDATE?[Y/N]
Here it can be seen we are updating to firmware v2.16 and the current firmware version in the ARMSID is v2.15. If the output does not look similar to the above or it cannot find the ARMSID at all then double check all the connections and ensure the sketch was successfully uploaded to the Arduino Uno. You can verify that the sketch is uploaded successfully by removing the USB lead (so the Arduino powers down), wait a couple of seconds and reconnect the USB lead. There will be a yellow LED that briefly flashes a few times for the first couple of seconds before it remains permanently lit.
If you are happy then press Y to perform the update or N to abort.
The update will take a couple of minutes during which the command window will fill with output similar to the following:
SFX SWITCHING OFF .... DONE
========================================
NOBOMI ARMSID UPDATE TO V2.16
ARMSID FOUND IN ARDUINO
FW VERSION:2.15
EMULATED DEVICE:85XX
APP/BOOT:AP========================================
NOBOMI ARMSID UPDATE TO V2.16
ARMSID FOUND IN ARDUINO
FW VERSION:2.15
EMULATED DEVICE:85XX
APP/BOOT:APERASING APP HEADER ... DONE
RESETING ... DONE
========================================
NOBOMI ARMSID UPDATE TO V2.16
ARMSID FOUND IN ARDUINO
FW VERSION:2.15
EMULATED DEVICE:85XX
APP/BOOT:BLERASING APP ............ DONE
BLANK CHECK ... OK
PROGRAMMING ... DONE
RESETING ....DONE
========================================
NOBOMI ARMSID UPDATE TO V2.16
ARMSID FOUND IN ARDUINO
FW VERSION:2.16
EMULATED DEVICE:85XX
APP/BOOT:APUPDATE DONE
At this point it should have successfully updated so all you need to do is to remove the ARMSID from the breadboard (remember to disconnect the Arduino Uno from the PC so the ARMSID is not powered), place it back in the SID Sound Interface and then test it to make sure it still works as expected.