Just a quick note about custom firmware efforts. I have been making some small steps toward decoding it. The firmware flash memory is 512kb in size, split into 2 banks of 256kb. When you update the firmware via sysex, it writes to the bank that is currently not in use and switches banks on reboot. The good news is that the current BC2000 firmware only uses 68-72kb of the 256kb available for a firmware, so there is quite a lot of room for custom code in there. There seems to be a boot-loader in the first 4kb of each bank that never changes. Based on their FAQ, I suspect that this boot-loader is capable of accepting a sysex firmware update via the MIDI-In port even if the main firmware and USB code is corrupted. This means it should be possible to experiment with writing a custom firmware without completely bricking your BC2000. My first short term goal is to decompile the 4kb boot-loader and figure out how it decodes midi firmware update packets. I am currently writing my own windows ARM disassembler for this purpose. Once I figure out the sysex firmware encoding, I will make my disassembler and a sysex decoder available so others can work on the firmware as well. I have several ideas that could improve the BC2000 UI significantly once we get deeper into the firmware: 1) A new LED display driver that uses Bit-Angle modulation to add 2 or 4-bits of brightness per LED would be nice: http://www.artisticlicence.com/app%20notes/appnote011.pdf 2) Add more display modes for the lower encoder rings 3) Make the Encoder Group buttons apply to more controls than just the top 8 encoders. 4) New LED ring display modes that can show information from 2 controllers, like filter frequency(dot position) and resonance (dot width) or the way some of the Nordlead LED rings work (showing default/current values). -Dan G.
Message
Re: Firmware decoding
2008-02-25 by Dan Gendreau
Attachments
- No local attachments were found for this message.