AtomMMC Confusion
- TheCorfiot
- Posts: 731
- Joined: Mon Jan 08, 2007 5:22 pm
- Contact:
AtomMMC Confusion
Firstly apologies if i have overlooked the obvious but i have tried searching for a good while.
i have 2 Atoms one tricked out with Primes ROM/RAM board the other just a basic 12K plus 12K system.
both have AtomMMC2 interfaces which are quite a few years old and running on fw 2.9
The One Atom uses E000 MMC firmware via Phil's board the other uses A000 MMC Firmware which boots very irregular
Having just obtained a yarrb mini for the Basic Atom im looking to compile a ROM for it so the MMC2 can also be used by E000 firmware and i thought whilst im at it lets update the fw to the latest.
And this is where my confusion begins, i will admit i have been away from the atom scene for 3-4 years but, im seeing reference to AtomMMC2, AtomMMC3 and AtomMMC4 all with fw offerings thanks to the brilliant hoglet.
What i dont understand is the compatibility of this firmware over these differering versions.
I tried to download a manual for the interface, couldnt find one, I cant even find steps on how to update the firmware.
If memory serves i know there is a *CFG option setting, cant find details on that either.
Documentation or some sort of wiki seems to be very scarce...
Is anyone kind enough willing to clarify what firmware goes with what, how to update it, link to a manual maybe ?
Thank you very much
i have 2 Atoms one tricked out with Primes ROM/RAM board the other just a basic 12K plus 12K system.
both have AtomMMC2 interfaces which are quite a few years old and running on fw 2.9
The One Atom uses E000 MMC firmware via Phil's board the other uses A000 MMC Firmware which boots very irregular
Having just obtained a yarrb mini for the Basic Atom im looking to compile a ROM for it so the MMC2 can also be used by E000 firmware and i thought whilst im at it lets update the fw to the latest.
And this is where my confusion begins, i will admit i have been away from the atom scene for 3-4 years but, im seeing reference to AtomMMC2, AtomMMC3 and AtomMMC4 all with fw offerings thanks to the brilliant hoglet.
What i dont understand is the compatibility of this firmware over these differering versions.
I tried to download a manual for the interface, couldnt find one, I cant even find steps on how to update the firmware.
If memory serves i know there is a *CFG option setting, cant find details on that either.
Documentation or some sort of wiki seems to be very scarce...
Is anyone kind enough willing to clarify what firmware goes with what, how to update it, link to a manual maybe ?
Thank you very much
Re: AtomMMC Confusion
There is not a quick answer to this, because AtoMMC has evolved through several generations of hardware, and several different people have been involved. It's particularly confusing because the AtoMMC ROM, the AtoMMC PCB and the PIC firmware have overlapping version numbers which don't really match up.
So in this post I'll go through each of these areas (ROM, PCB and Firmware), give some history, and make a few comments re: upgrading.
The short answer is:
- the AtoMMC ROM is generally backwards compatible, so the latest version 3.02 should work against any hardware/firmware combination
- the firmware on the AtoMMC v2 PCB (from SirMorris) can be updated to version 2D if you want to use the newer AtoMMC ROM features that depend on firmware additions (e.g. Random Access Files, *MKDIR, *RMDIR, *RENAME).
- the firmware on the AtoMMC v3 (from SirMorris) already supports the latest features, so there is no need to update
- the firmware on the AtoMMC v4 (from Roland) already supports the latest features, so there is no need to update
- in general, firmware the v2, the v3 and the v4 boards is not compatible. You are unlikely to brick the AtomMMC, but it won't work
- the manual is is here: https://github.com/charlierobson/atommc ... ine-Manual
For the long answer, continue reading....
AtoMMC ROM Versions:
As far as the AtoMMC ROM is concerned, the latest version is version 3.02 which can be found here:
https://github.com/hoglet67/AtoMMC2/releases
This version is backwards compatible with all PCB versions and with all Firmware versions.
If you try to use a new AtoMMC ROM feature (Random Access Files, *MKDIR, *RMDIR, *RENAME) that's not supported by your existing firmware, you'll just get an error,
For the AtoMMC version history: see this post by Kees.
AtoMMC Hardware Versions:
There have been four generations of AtoMMC hardware:
AtoMMC (2008)
This is SirMorris's first version, which connected to the PL6/7 expansion port and used the the 6522 to bit-bang the SD card. It was supported by the SDDOS file system ROM.
As far as I understand, this was only ever a vero-board prototype.
Links:
- https://arduinonut.blogspot.com/2008/09/lash-up.html
- https://arduinonut.blogspot.com/2008/07 ... again.html
AtoMMC2 (2009)
This is SirMorris's second version, which connected to the PL8 port and used a PIC18F4520/PIC18F4525 and the FatFS library which allowed the SD Card to use a standard FAT file system.
A PCB was produced for this version, and was sold by SirMorris for many years.
This is the most common version.
The first link below is a manual.
Links:
- https://github.com/charlierobson/atommc ... ine-Manual
- https://github.com/charlierobson/atommc2-vitamins
- https://arduinonut.blogspot.com/2009/06 ... m-rev.html
- https://groups.google.com/g/bbmmc
AtoMMC v3 (2020)
SirMorris's started work on this in 2019, and the goal was just to make minor changes to AtoMMC2 to reduce the cost of the board and make it more manufacturable.
At some during the development a couple of PIC pin assignment changed were made:
- swap the PIC pins used for MISO and MOSI on the SD Card, so the firmware can use the PIC's SPI hardware
- the PIC pin used for IRQ changed from RC6 (pin 25) to RA4 (pin 6)
The schematics in the github repository include both of these changes.
Unfortunately, it seems some prototype boards exist that include the first change, but not the second. These are hard to identify because the board has no silk screen / version information.
KenLowe managed to buy one of these in November 2019 (photo above) . This came with a modified version of the 2C firmware to support the MISO/MOSI pin swap. When Ken tried to update to the 2D it, not surprisingly, stopped working! Hoglet produces a version 2E to help Ken out.
Because of the PIC pin changes, it's not recommended to update the firmware on these board unless you really need to.
Towards the end of 2020 SirMorris decided to open source the design because he had too many other projects on the go.
Links:
- https://github.com/charlierobson/atommc-v3
- viewtopic.php?p=362281#p362281
AtoMMC v4 (2021)
Roland created this version based on the latest v3 schematic from SirMorris.
Specifically:
- MISO uses PIC pin RC4 (pin 23)
- MOSI uses PIC pin RC5 (pin 24)
- IRQ uses PIC pin RA4 (pin 6)
Because of the PIC pin changes, it's not recommended to update the firmware on this board.
Links:
- viewtopic.php?t=20836
KenLowe's Combined AtoMMC/Econet board
Ken has recently (2022) designed a board that integrates AtoMMC and Econet onto one board, that attaches to PL8.
This is based on the SirMorris's final AtoMMC V3 schematics (IRQ on pin 6, MISO on pin 23, MOSI on pin 24), which is the configuration same as Roland's V4 PCB.
Links:
- viewtopic.php?p=360674#p360674
Roland's Atom2K14/15
This is a design for a modern Atom replacement, that includes a V2 compatible AtoMMC on the main PCB.
The only difference from V2 is that the IRQ line is not connected to the PIC, so the #A000 AtoMMC ROM cannot be initialized. This is not a problem, as it's better anyway to use the #E000 AtoMMC.
Links:
- Designing a new Atom main board
- Building Rolands new Atom design...
AtoMMC PIC Firmware:
Here's a summary of the PIC Firmware versions, with notes on compatability:
- 29 - for AtoMMC v2 PCB, original version (SirMorris)
- 2A - for AtoMMC v2 PCB, 19th Oct 2014, adds support for random access files (hoglet)
- 2B - for AtoMMC v2 PCB, 8th Feb 2016, bug fixes (hoglet)
- 2C - for AtoMMC v2 PCB, 27rd Aug 2016, adds support for MKDIR, RMDIR and RENAME commands, fixed some SDDOS issues (hoglet)
- 2D - for AtoMMC v2 PCB, 20th May 2020, fixes #A000 IRQ startup race condition(SirMorris)
- 2E - for AtoMMC v3 PCB, 19th June 2022, includes PIC MISO/MOSI pin swap (hoglet)
- 30 - for AtoMMC v4 PCB, 19th June 2022, includes PIC MISO/MOSI pin swap and IRQ pin change (hoglet)
So in this post I'll go through each of these areas (ROM, PCB and Firmware), give some history, and make a few comments re: upgrading.
The short answer is:
- the AtoMMC ROM is generally backwards compatible, so the latest version 3.02 should work against any hardware/firmware combination
- the firmware on the AtoMMC v2 PCB (from SirMorris) can be updated to version 2D if you want to use the newer AtoMMC ROM features that depend on firmware additions (e.g. Random Access Files, *MKDIR, *RMDIR, *RENAME).
- the firmware on the AtoMMC v3 (from SirMorris) already supports the latest features, so there is no need to update
- the firmware on the AtoMMC v4 (from Roland) already supports the latest features, so there is no need to update
- in general, firmware the v2, the v3 and the v4 boards is not compatible. You are unlikely to brick the AtomMMC, but it won't work
- the manual is is here: https://github.com/charlierobson/atommc ... ine-Manual
For the long answer, continue reading....
AtoMMC ROM Versions:
As far as the AtoMMC ROM is concerned, the latest version is version 3.02 which can be found here:
https://github.com/hoglet67/AtoMMC2/releases
This version is backwards compatible with all PCB versions and with all Firmware versions.
If you try to use a new AtoMMC ROM feature (Random Access Files, *MKDIR, *RMDIR, *RENAME) that's not supported by your existing firmware, you'll just get an error,
For the AtoMMC version history: see this post by Kees.
AtoMMC Hardware Versions:
There have been four generations of AtoMMC hardware:
AtoMMC (2008)
This is SirMorris's first version, which connected to the PL6/7 expansion port and used the the 6522 to bit-bang the SD card. It was supported by the SDDOS file system ROM.
As far as I understand, this was only ever a vero-board prototype.
Links:
- https://arduinonut.blogspot.com/2008/09/lash-up.html
- https://arduinonut.blogspot.com/2008/07 ... again.html
AtoMMC2 (2009)
This is SirMorris's second version, which connected to the PL8 port and used a PIC18F4520/PIC18F4525 and the FatFS library which allowed the SD Card to use a standard FAT file system.
A PCB was produced for this version, and was sold by SirMorris for many years.
This is the most common version.
The first link below is a manual.
Links:
- https://github.com/charlierobson/atommc ... ine-Manual
- https://github.com/charlierobson/atommc2-vitamins
- https://arduinonut.blogspot.com/2009/06 ... m-rev.html
- https://groups.google.com/g/bbmmc
AtoMMC v3 (2020)
SirMorris's started work on this in 2019, and the goal was just to make minor changes to AtoMMC2 to reduce the cost of the board and make it more manufacturable.
At some during the development a couple of PIC pin assignment changed were made:
- swap the PIC pins used for MISO and MOSI on the SD Card, so the firmware can use the PIC's SPI hardware
- the PIC pin used for IRQ changed from RC6 (pin 25) to RA4 (pin 6)
The schematics in the github repository include both of these changes.
Unfortunately, it seems some prototype boards exist that include the first change, but not the second. These are hard to identify because the board has no silk screen / version information.
KenLowe managed to buy one of these in November 2019 (photo above) . This came with a modified version of the 2C firmware to support the MISO/MOSI pin swap. When Ken tried to update to the 2D it, not surprisingly, stopped working! Hoglet produces a version 2E to help Ken out.
Because of the PIC pin changes, it's not recommended to update the firmware on these board unless you really need to.
Towards the end of 2020 SirMorris decided to open source the design because he had too many other projects on the go.
Links:
- https://github.com/charlierobson/atommc-v3
- viewtopic.php?p=362281#p362281
AtoMMC v4 (2021)
Roland created this version based on the latest v3 schematic from SirMorris.
Specifically:
- MISO uses PIC pin RC4 (pin 23)
- MOSI uses PIC pin RC5 (pin 24)
- IRQ uses PIC pin RA4 (pin 6)
Because of the PIC pin changes, it's not recommended to update the firmware on this board.
Links:
- viewtopic.php?t=20836
KenLowe's Combined AtoMMC/Econet board
Ken has recently (2022) designed a board that integrates AtoMMC and Econet onto one board, that attaches to PL8.
This is based on the SirMorris's final AtoMMC V3 schematics (IRQ on pin 6, MISO on pin 23, MOSI on pin 24), which is the configuration same as Roland's V4 PCB.
Links:
- viewtopic.php?p=360674#p360674
Roland's Atom2K14/15
This is a design for a modern Atom replacement, that includes a V2 compatible AtoMMC on the main PCB.
The only difference from V2 is that the IRQ line is not connected to the PIC, so the #A000 AtoMMC ROM cannot be initialized. This is not a problem, as it's better anyway to use the #E000 AtoMMC.
Links:
- Designing a new Atom main board
- Building Rolands new Atom design...
AtoMMC PIC Firmware:
Here's a summary of the PIC Firmware versions, with notes on compatability:
- 29 - for AtoMMC v2 PCB, original version (SirMorris)
- 2A - for AtoMMC v2 PCB, 19th Oct 2014, adds support for random access files (hoglet)
- 2B - for AtoMMC v2 PCB, 8th Feb 2016, bug fixes (hoglet)
- 2C - for AtoMMC v2 PCB, 27rd Aug 2016, adds support for MKDIR, RMDIR and RENAME commands, fixed some SDDOS issues (hoglet)
- 2D - for AtoMMC v2 PCB, 20th May 2020, fixes #A000 IRQ startup race condition(SirMorris)
- 2E - for AtoMMC v3 PCB, 19th June 2022, includes PIC MISO/MOSI pin swap (hoglet)
- 30 - for AtoMMC v4 PCB, 19th June 2022, includes PIC MISO/MOSI pin swap and IRQ pin change (hoglet)
Last edited by hoglet on Mon Dec 19, 2022 4:39 pm, edited 6 times in total.
- TheCorfiot
- Posts: 731
- Joined: Mon Jan 08, 2007 5:22 pm
- Contact:
Re: AtomMMC Confusion
Thank you so much
Everything is crystal clear now and I have a way forward
I'm sure this will help many other folk too.
You are a true Gentleman
Everything is crystal clear now and I have a way forward
I'm sure this will help many other folk too.
You are a true Gentleman
- TheCorfiot
- Posts: 731
- Joined: Mon Jan 08, 2007 5:22 pm
- Contact:
Re: AtomMMC Confusion
I take it the AtomMMC implementation on Roland's 2k15 atom boards is classed as V2
Re: AtomMMC Confusion
Yes.TheCorfiot wrote: ↑Sun Dec 18, 2022 12:16 am I take it the AtomMMC implementation on Roland's 2k15 atom boards is classed as V2
The only difference is the PIC is not connected to the 6502 IRQ line, so if you did want to use the #A000 version of AtoMMC it wouldn't auto-initialize on BREAK.
As everyone uses the #E000 version, this is not a problem.
Dave
Re: AtomMMC Confusion
Great summary. Although not available to the wider public (yet!), it might be worth mentioning my Combined Econet AtoMMC board in your summary. It works with the '3plus' firmware you built for me, which I think is the same as the 30 firmware you mention:
- TheCorfiot
- Posts: 731
- Joined: Mon Jan 08, 2007 5:22 pm
- Contact:
Re: AtomMMC Confusion
Where can we obtain the actual firmware for updating the MMC2 itself please.
As your recomendation i would like to update it to V2D
Thanks
As your recomendation i would like to update it to V2D
Thanks
Re: AtomMMC Confusion
https://github.com/hoglet67/AtoMMC2Firm ... irmware/2DTheCorfiot wrote: ↑Sun Dec 18, 2022 12:03 pm Where can we obtain the actual firmware for updating the MMC2 itself please.
As your recomendation i would like to update it to V2D
The AtoMMC boot loader is a bit fussy about SD cards. Try to find a old (<1GB) SD card and format it with FAT16.
Then copy over the atommc25.bin file, put it in the AtoMMC, and hit BREAK.
The LED will start flashing to indicate an update is inprogress. It only takes about 20 seconds.
If the LED doesn't start flashing, try just hitting BREAK again.
Dave
- TheCorfiot
- Posts: 731
- Joined: Mon Jan 08, 2007 5:22 pm
- Contact:
Re: AtomMMC Confusion
Thank you very much
Re: AtomMMC Confusion
I've added a section for this, and for Roland's Atom2K14/15 (is it 14 or 15?????)KenLowe wrote: ↑Sun Dec 18, 2022 10:47 am Great summary. Although not available to the wider public (yet!), it might be worth mentioning my Combined Econet AtoMMC board in your summary.
Re: AtomMMC Confusion
It's both. The first one was developed in 2014 but had some mistakes on the board. Those were corrected in the 2k15 version. The 2k14 with the patches is the same as 2k15 so you can consider them as identical hardware.
FPGAtom: 512 KB RAM, Real Time Clock and 64 colours
MAN WOMAN
MAN WOMAN
Re: AtomMMC Confusion
Gosh. This is confusing.hoglet wrote: ↑Sat Dec 17, 2022 2:12 pm AtoMMC2 (2009)
This is SirMorris's second version, which connected to the PL8 port and used a PIC18F4520/PIC18F4525 and the FatFS library which allowed the SD Card to use a standard FAT file system.
A PCB was produced for this version, and was sold by SirMorris for many years.
This is the most common version.
The first link below is a manual.
Links:
- https://github.com/charlierobson/atommc ... ine-Manual
- https://github.com/charlierobson/atommc2-vitamins
- https://arduinonut.blogspot.com/2009/06 ... m-rev.html
- https://groups.google.com/g/bbmmc
AtoMMC v3 (2020)
SirMorris's started work on this in 2019, and the goal was just to make minor changes to AtoMMC2 to reduce the cost of the board and make it more manufacturable.
At some during the development a couple of PIC pin assignment changed were made:
- swap the PIC pins used for MISO and MOSI on the SD Card, so the firmware can use the PIC's SPI hardware
- the PIC pin used for IRQ changed from RC6 (pin 25) to RA4 (pin 6)
The schematics in the github repository include both of these changes.
Unfortunately, it seems some prototype boards exist that include the first change, but not the second. These are hard to identify because the board has no silk screen / version information.
KenLowe managed to buy one of these in November 2019 (photo above) . This came with a modified version of the 2C firmware to support the MISO/MOSI pin swap. When Ken tried to update to the 2D it, not surprisingly, stopped working! Hoglet produces a version 2E to help Ken out.
Because of the PIC pin changes, it's not recommended to update the firmware on these board unless you really need to.
Towards the end of 2020 SirMorris decided to open source the design because he had too many other projects on the go.
Links:
- https://github.com/charlierobson/atommc-v3
- viewtopic.php?p=362281#p362281
AtoMMC2 (v2?) is detailed in this site:
https://www.acornatom.nl/sites/atomrevi ... mmmc2.html
However, the schematic (which is dated 2010), has MISO on pin 23 and MOSI on pin 24. We had previously thought this was done at or around v3!
https://www.acornatom.nl/sites/atomrevi ... schema.pdf
In fact, I can't find any schematics where MISO is on pin 24 and MOSI is on pin 23?
I also wonder if it's worth updating this firmware version section to include the versions I created here:hoglet wrote: ↑Sat Dec 17, 2022 2:12 pm AtoMMC PIC Firmware:
Here's a summary of the PIC Firmware versions, with notes on compatability:
- 29 - for AtoMMC v2 PCB, original version (SirMorris)
- 2A - for AtoMMC v2 PCB, 19th Oct 2014, adds support for random access files (hoglet)
- 2B - for AtoMMC v2 PCB, 8th Feb 2016, bug fixes (hoglet)
- 2C - for AtoMMC v2 PCB, 27rd Aug 2016, adds support for MKDIR, RMDIR and RENAME commands, fixed some SDDOS issues (hoglet)
- 2D - for AtoMMC v2 PCB, 20th May 2020, fixes #A000 IRQ startup race condition(SirMorris)
- 2E - for AtoMMC v3 PCB, 19th June 2022, includes PIC MISO/MOSI pin swap (hoglet)
- 30 - for AtoMMC v4 PCB, 19th June 2022, includes PIC MISO/MOSI pin swap and IRQ pin change (hoglet)
viewtopic.php?p=382586#p382586
Although, I now wonder how relevant those are, given that the V2 hardware had the MOSI / MISO changes implemented some time ago.
Confused .
Re: AtomMMC Confusion
I've just beeped out the connections on the AtoMMC 2.0 PCB that I bought from Charlie in ~2013:
- PIC pin 24 (SDO/RC5) connects to IDC connector pin 5 which connects to SD Card Pin 7 (DO)
- PIC pin 23 (SDI/RC4) connects to IDC connector pin 7 which connects to SD Card Pin 2 (DI) via a 1K8/3K3 voltage divider which acts as a level shifter.
This wiring is sub-optimal and prevents the use of the SPI hardware on the PIC.
All of the Version 2.x firmware use bit banging use RC4/5 as follows:
- PIC pin 24 (RC5) configured as an input (i.e. MISO)
- PIC pin 23 (RC4) configured at an output (i.e. MOSI)
Roland's Atom 2015, which uses a compatible PIC, also has this wiring, and also runs the 2.x firmware:
https://diy.acornatom.nl/download/atom2015.pdf
So the schematic you linked to doesn't accurately reflect the black AtoMMC 2.0 PCBs in circulation (dated 2010). There is a footnote on it saying saying SPI pin swap.
I don't believe that PCBs with that change were sold until ~2020.
Confusing indeed!
Dave
Re: AtomMMC Confusion
See also this post from Charlie circa 2014:
viewtopic.php?p=101309#p101309sirmorris wrote: ↑Thu Dec 18, 2014 9:56 pm Oh and I think I should confess at this point - when I designed the PCB I made 2 mistakes. One was a pin to the latch. Another was that I swapped the MISO/MOSI lines So the SPI transfer is actually being done in software. I think you could improve the performance of AtoMMC on your board by reinstating the hardware SPI. It would be a small change to the firmware. And you could undo the 'fix' to your board. Sorry - I should have spoken up before.
Re: AtomMMC Confusion
Thanks Dave. I was trying to help out Prime in this post, and was getting very confused about the different board versions. What really threw me was the schematic on the V2 site and the date of it.
What you've established makes a lot more sense. The schematic that I linked to earlier is clearly the 'fixed V2', which is in effect the V3, and although dated 2010, it would appear that boards with this fix didn't actually appear until 2019ish.
Other than the Atom 2015, I don't think I've ever seen any standalone V2 schematics, with PIC 23 wired through to SD card 7 and PIC 24 wired through to SD card 2 (via potential divider), which is probably the most common board revision out there! But... the board layout drawing on the V2 site does match what you have belled out, so at least that's correct!
What you've established makes a lot more sense. The schematic that I linked to earlier is clearly the 'fixed V2', which is in effect the V3, and although dated 2010, it would appear that boards with this fix didn't actually appear until 2019ish.
Yeah, I looked at that schematic earlier, and that just added to my confusion. It's labelled as MOSI on 24 and MISO on 23 the same as the other V3 schematics, which threw me. However, I now notice that pin 24 is wired to SD card pin 7 and pin 23 is wired to SD card pin 2 (via potential divider), which is opposite to the V3 schematics.hoglet wrote: ↑Fri Apr 26, 2024 10:28 pm All of the Version 2.x firmware use bit banging use RC4/5 as follows:
- PIC pin 24 (RC5) configured as an input (i.e. MISO)
- PIC pin 23 (RC4) configured at an output (i.e. MOSI)
Roland's Atom 2015, which uses a compatible PIC, also has this wiring, and also runs the 2.x firmware:
https://diy.acornatom.nl/download/atom2015.pdf
Other than the Atom 2015, I don't think I've ever seen any standalone V2 schematics, with PIC 23 wired through to SD card 7 and PIC 24 wired through to SD card 2 (via potential divider), which is probably the most common board revision out there! But... the board layout drawing on the V2 site does match what you have belled out, so at least that's correct!