Another problem: OS4 for Pegasos2 was implemented (or at least released) after the Pegasos2 wasn't produced anymore, only very few used ones were available for using AmigaOS 4.x on it, and next to no OS4 developer had a Pegasos2, while nearly all developers and beta testers had an AmigaOne and/or Sam4x0 and could help debugging problems on those systems. The Pegasos2 is very likely the least used AmigaOS 4.x system, even classic Amiga should have more users (and that before WinUAE got PPC support), there are very likely much more users using AmigaOS 4.x with an QEmu emulated Pegasos2 already than AmigaOS 4.x users with a real Pegasos2.
After reading @sailor's excellent article about AmigaOne XE I realised that it's basically the same machine as pegasos1 which is the same as pegasos2, even the memory layout is very similar so it would not be too difficult to emulate it as well because except the Articia-S everything else is already there (at least more or less as there are missing parts in the VIA stuff but it was shown enough to run AmigaOS). So I did an experiment to see how much work would it be.
The problem is that there's no technical info available on the net about these machines other than marketing text these seem to be completely vanished or was never publicly available. I could not even find a Linux or AmigaOS boot log or anything like that which were still available for PegasosII. The firmware is downloadable from Hyperion but the source is not there (this may be a GPL violation, I've tried writing them but the address in the README is not working any more either). Anyway it was once upstream in U-Boot so found the commit that removed it which conveniently lists all changes related to AmigaOne that has at least some info. I still had to guess most of the Articia stuff from U-Boot and Linux sources so maybe I did not get that right and surely a lot is missing but I managed to write an emulation that boots to the firmware but then does not seem to find IDE to boot from (also I don't have AmigaOne version of AmigaOS so I would not be able to try anyway). The firmware pathces to U-Boot had comments about IDE not working so I'm not sure it ever worked on real machine, I've found info that due to to some early problems they used a SiliconImage IDE card instead (but not the SII3112 that QEMU already has for sam460ex so not sure it would work with that). So for now it just a proof of concept and up for interested people to experiment and find out how to make it a more complete emulation that could boot something but it's your chance to prove that there is more expertise around for AmigaOne than Pegasos2. As these mostly share the same components improving any of the two would also help the other so hopefully this will let more people to join and have fun.
So those with a real AmigaOne could try what works and what doesn't and give us more info about how it works on real machine as this is all I could find out and there seem to be no more info found by search engines.
balaton wrote:Before you reply to previous post, maybe it would need a new thread.
Seems like they should open a new thread for it. And I have to order the next version of AmigaOs4.1, this time for AmigaOne. I also used the SiliconImage IDE card because there were problems with Articia S and udma. But it's really been a long time. There was a fix for this board later, but I didn't have it done.
@all
Or would the AmigaOne 500/Sam460 AmigaOs4.1 be enough for this ? I know this board only as AmigaOnXe what I had myself many years ago.
Edit: I've found it. A1XE/SE/MA1 version of AmigaOs4.1 would be necessary then.
@Balaton
I'm not sure, but what would be the advantages of emulating an AmIgaOne over Pegasos 2?
Wouldn't we have the same problems as with the Pegasos 2 emulation 16 bit windows low resolutions because we don't have a suitable driver at our disposal?
Edited by Maijestro on 2023/7/28 16:05:33 Edited by Maijestro on 2023/7/28 16:06:23 Edited by Maijestro on 2023/7/28 17:44:35
I can help with boot logs from all machines from my signature. Debian 8 I have installed both on Pegasos 2 and AmigaOne XE. Hypex@forum.hyperion-entertainment.com is expert on AmigaOne XE linux, he made custom installer.
Mentioned AmigaOne IDE problems - it is DMA problem. IDE DMA should be turned off, or mitigated by hardware DMA-fix, or by using SATA SiI 3x1x controller.
I can also test something on real hardware, but I have very few time now. In Ocrober it will be much better
AmigaOS3: Amiga 1200 AmigaOS4: Micro A1-C, AmigaOne XE, Pegasos II, Sam440ep, Sam440ep-flex, AmigaOne X1000 MorphOS: Efika 5200b, Pegasos I, Pegasos II, Powerbook, Mac Mini, iMac, Powermac Quad
I'm not sure, but what would be the advantages of emulating an AmIgaOne over Pegasos 2?
Wouldn't we have the same problems as with the Pegasos 2 emulation 16 bit windows low resolutions because we don't have a suitable driver at our disposal?
Sure it would have the same problems with only sm501 emulated as pegasos2 or sam460ex plus maybe some more due to not emulating amigaone hardware correctly yet. I did not have time to write more about it but currently only a single pci bus is emulated, the bridge does nothing and most of the articia functions are also missing but this may not be a problem if AmigaOS does not change or use them then it's enough to emulate it the way the firmware puts it for AmigaOS to be able to boot. Later this can be enhanced if necessary,
What is the advantage then? More people could use it and you won't need 3 versions of AmigaOS but if you have either Pegasos2, Sam460ex or AmigaOne version then it should be usable. If there were really more AmigaOne users than the others then maybe more people have the CD laying around so they could do something with it now. Also having different firmware we can cross check if a problem is found if it happens with one machine or both so we can know if it's something with the emulation or only one machine behaves differently. Also gfx cards are known to work with AmigaOne so if they can be made working with pass through then we know the pegasos2 version may be different. It just adds more options to allow more people to use it and since the code is mostly shared between pegasos2 and amigaone it's not too difficult to support both. Only the system controller is different Marvell Discovery vs. Mai Articia but the via chips are very similar and already share a lot of code in QEMU so there's not much to write to add support for amigaone as well.
Before somebody comes up with the idea, not X1000 and X5000 won't be emulated (unless somebody wants to do the work but I don't plan to) becuase those have very different hardware so other than PPC emulation probably not much could be reused so it would be too much work unlike adding amigaone based on existing code.
Of course in emulation we would not have any of the problems with hardware bugs so even if it was problematic on real hardware it could still work with QEMU. For the ide problem I think I know what it is, the firmware seems to try to use the IDE controller in VIA chip in legacy mode but that's not emulated in QEMU because everything else seems to use PCI mode with BARs so only that's emulated. The device should start with BARs mapped to legacy ports but looks like nothing is enabling the device so it does not show up. I'll try to fix this and see if that works and we can think of emulating legacy mode later. This was considered before but the problem is that legacy mode is using ISA and ISA emulation in QEMU is very old code so it's either ISA or PCI but switching between the two like the VIA chip allows is not easy to implement and I did not want to rewrite the ISA code for that. Maybe there were some chnages for this since then when I've looked at it for pegasos2 a few years ago so eventually this can be fixed or hacked around somehow if only legacy mode is needed for amigaone.
Also I'm not sure what I should see so maybe I'll need to search for some videos showing how real AmgiaOne behaved on booting. I just wanted to make sure that the on board IDE worked at all and I don't get anything recognised because of not emulating it correctly before I try to debug something that's supposed to be broken even on real hardware.
After reading @sailor's excellent article about AmigaOne XE I realised that it's basically the same machine as pegasos1 which is the same as pegasos2,
Main difference is that the AmigaOne SE/XE/µA1 is a PReP system (PowerPC Reference Platform) while the Pegasos2 is using the newer CHRP standard (Common Hardware Reference Platform).
Quote:
The firmware is downloadable from Hyperion but the source is not there (this may be a GPL violation,)
The last binary is older than 2 years, therefore no GPL violation possible. But the AmigaOne SE/XE/µA1 U-Boot sources were available on sourceforge, and IIRC even in the Denx U-Boot repository.
Quote:
The firmware pathces to U-Boot had comments about IDE not working so I'm not sure it ever worked on real machine,
That's the Artcia-S DMA bug: Using IDE DMA, ethernet DMA and USB DMA at the same time doesn't work. But using IDE in PIO mode always worked.
Quote:
I've found info that due to to some early problems they used a SiliconImage IDE card instead (but not the SII3112 that QEMU already has for sam460ex so not sure it would work with that).
AmigaOS 4.x has drivers for SII3112, 3114 and 3512, but IIRC the AmigaOne XE U-Boot only supported one or 2 of them, the newer Sam4x0 and X5000 U-Boot versions may support more. The onboard IDE (a1ide.device on AmigaOS, old versions available on http://os4depot.net/?function=showfil ... torage/ide_driverpack.zip) is part of the VIA 82C686B southbridge. AmigaOne SE/XE/µA1 and Pegasos2 use a similar, but not 100% compatible, VIA southbridge.
@joerg I guess that would be 3 years instead of 2 for GPL but it's older than that too. Anyway Does somebody have AmigaOne firmware images that are known to work and maybe the source for them too? I think @sailor wrote about newer versions than the 1.1.1 that's available officially. I can try to rebuild it from older U-Boot releases but I'd rather start from something known to work on real machine first. I guess for now I have the next issue to solve is the ide emulation but if somebody wants to try if any of the network cards work with the firmware and it could netboot or if the USB emulatoin works with USB storge those could be tested. I won't have time to try those any time soon.
I'll join the AmigaOne emulation and try to help with testing, but I can't do that with real hardware. And of course I have to buy an AmigaOne A1 XE, A1SE license first. It will take 4-5 days for the shipment to be completed.
The Pegasos 2 had a CPU clock of about 1 Ghz, the AmigaOneXe 800 Mhz shouldn't affect the speed of the emulation, or does it not matter?
Can you please open a new thread and ask if there is any interest in such an emulation. It would be good to know before we start this further project.
The Pegasos 2 had a CPU clock of about 1 Ghz, the AmigaOneXe 800 Mhz shouldn't affect the speed of the emulation, or does it not matter?
AmigaOne SE/XE/µA1: Depends on the CPU module installed, the original ones (both G3 750 and G4 74xy) may have been using 800 MHz only, but there were replacement CPU modules using at least 1.1 GHz (without overclocking). But it's only relevant for real hardware, on emulation it doesn't make any difference, an emulated 2 GHz PowerPC CPU isn't any faster than an emulated 100 MHz PowerPC CPU.
joerg wrote:@Maijestro AmigaOne SE/XE/µA1: Depends on the CPU module installed, the original ones (both G3 750 and G4 74xy) may have been using 800 MHz only, but there were replacement CPU modules using at least 1.1 GHz (without overclocking). But it's only relevant for real hardware, on emulation it doesn't make any difference, an emulated 2 GHz PowerPC CPU isn't any faster than an emulated 100 MHz PowerPC CPU.
Ok I see, that wasn't my time anymore, but I probably wouldn't have used a 1.1 Ghz CPU module either, because I would have been afraid of breaking the hardware. It's really amazing how much knowledge you have, thanks for the information.
walkero wrote:This has messages from "Pegasos2 with RadeonHD/RX via bridge"
Thanks for opening this thread.
Balaton briefly announced in another thread that if we all work together as an Amiga community, this new project could start in parallel with the Qemu Pegasos 2 emulation.
I'm definitely in and can roughly test the emulation, but that won't be enough...it takes people with real hardware and a lot of information about it to make this emulation possible. As Balaton already wrote, anything that could be helpful for the AmigaOne emulation would also be helpful for the Pegasos 2 emulation.
Since there are many capable AmigaOs4.1 developers and also people with a lot of knowledge, this central location (amigans) would be perfect for it. I'm curious where this will lead...
I've finxed the IDE ports (not final only a hack now but gets around the problem at least for the firmware) so now if somebody have an AmigaOS CD for AmigaOne it might even try to boot. I'm not sure it would also work but unless somebody tries I'll never know so this is all I could do for now. To try it clone the repo from above, checkout amigaone branch, build --target-list=ppc-softmmu config as usual then try qemu-system-ppc -M amigaone and you also need -device VGA,romfile=VGABIOS-lgpl-latest.bin to avoid the bios emulator in u-boot to crash and get picture but for AmigaOS you'd need to do the same as for pegasos2 and add siliconmotion502.driver and also add -device sm501. You can use this guide for that: http://zero.eik.bme.hu/~balaton/qemu/amiga/aos_pegasos2.html to prepare a boot disk. This now depends on you to test and tell me what it does then I can try to improve it but can't test it in detail myself and also would like to encourage others to at least share info on how to make this better. If you want to see all th emissing stuff add -d unimp,guest_errors which lists a lot of things and of those I don't even know what should most be. (I know port 0x80 which is for debugging only so should not be an issue and the access to the nvram at the beginning at something 0xed... which is not yet emulated for any of these machines). If you know the rest you can help to share knowledge or implement it and send patches. If this does something and seem to be at least minimally working I'll clean it up and may try to submit for QEMU 8.2 but we have time for that. I maybe try a Linux image sometimes and if at least that boots then there's a chance it can get upstream sometimes in the future but would need cleanup of the via ide stuff.
The problem is that there's no technical info available on the net about these machines other than marketing text these seem to be completely vanished or was never publicly available.
I have an AmigaOne-XE/G4 and all the material that came with it, including Articia S brochure PDFs, Mai Logic AmigaOne-XE Motherboard User Manual PDF, and three A1 Linux iso images. Would those be useful to you?
jap wrote:@balaton I have an AmigaOne-XE/G4 and all the material that came with it, including Articia S brochure PDFs, Mai Logic AmigaOne-XE Motherboard User Manual PDF, and three A1 Linux iso images. Would those be useful to you?
Is there a possibility to download Linux for AmigaOne XE as distributions?
Ok thanks, the installation runs over the network?
Edit:I found the /debian-installer/A1 Linux Installer.iso thanks. With the Uboot Firmware 1.1.1 it should be possible to install these distributions on AmigaOneXE, or does something have to be adjusted?
Edit:Briefly tested with the Qemu AmigaOne emulation and A1 Linux, the firmware does not boot the IMG.
/Users/reneengel/qemu/build/qemu-system-ppc -M amigaone -L /Users/reneengel/qemu/pc-bios -device VGA,romfile=/Users/reneengel/qemu/pc-bios/VGABIOS-lgpl-latest.bin -cdrom /Users/reneengel/Downloads/A1\ Linux\ Installer.iso -display cocoa -serial stdio -d unimp,guest_errors
via_superio_cfg: unimplemented register 0xe0
via_superio_cfg: unimplemented register 0xe2
via_superio_cfg: unimplemented register 0xe3
via_superio_cfg: unimplemented register 0xe6
via_superio_cfg: unimplemented register 0xe7
via_superio_cfg: unimplemented register 0xe8
Invalid read at addr 0xFFEFE740, size 4, region '(null)', reason: rejected
invalid/unsupported opcode: 00 - 00 - 00 - 00 (00000000) ffefe740
Invalid write at addr 0xFFFFFFE8, size 4, region '(null)', reason: rejected
Invalid write at addr 0xFFFFFFF0, size 4, region '(null)', reason: rejected
Invalid write at addr 0xFFFFFFF4, size 4, region '(null)', reason: rejected
Invalid write at addr 0xFFFFFFF8, size 4, region '(null)', reason: rejected
Invalid write at addr 0xFFFFFFFC, size 4, region '(null)', reason: rejected
Invalid read at addr 0xFFEFE490, size 4, region '(null)', reason: rejected
invalid/unsupported opcode: 00 - 00 - 00 - 00 (00000000) ffefe490
Invalid write at addr 0xFFFFFFD0, size 4, region '(null)', reason: rejected
Invalid write at addr 0xFFFFFFD8, size 4, region '(null)', reason: rejected
Invalid write at addr 0xFFFFFFDC, size 4, region '(null)', reason: rejected
Invalid write at addr 0xFFFFFFE0, size 4, region '(null)', reason: rejected
Invalid write at addr 0xFFFFFFE4, size 4, region '(null)', reason: rejected
Invalid write at addr 0xFFFFFFEC, size 4, region '(null)', reason: rejected
Invalid read at addr 0xFFEFE490, size 4, region '(null)', reason: rejected
invalid/unsupported opcode: 00 - 00 - 00 - 00 (00000000) ffefe490
Invalid write at addr 0xFFFFFFB8, size 4, region '(null)', reason: rejected
Invalid write at addr 0xFFFFFFC0, size 4, region '(null)', reason: rejected
Invalid write at addr 0xFFFFFFC4, size 4, region '(null)', reason: rejected
Invalid write at addr 0xFFFFFFC8, size 4, reg?
@jap No those are downloadable but don't contain the low level info I'd need. What would help is developer docs for the Articia S chip with register documentation or some knowledge about how it maps memory spaces as currenlty I see sofware trying to access memory at random locations where things don't appear but I think maybe programming Artivia regs could map these there but I don't know how that works so don't know what to emulate. I've figured that PCI host config reg 0x56 should map nvram but we don't emulate that but the cdrom driver pokes this reg a lot that generates logs that makes debugging more difficult so I have to filter these out.
So what would help are docs on Articia (already have docs for VIA chips so don't need those) and the u-boot source of an actual version that matches a binary known to work on the real machine. (If we can't find that I'll have to replace it with the sam460ex version adding the now removed AmigaOne pieces from upstream U-boot so I can get around this but it would be helpful to test with a firmware that was working on the real machine to ensure it's correctly emulated. We'll need some firmware source to include the firmware in QEMU eventually as GPL binaries withohut source cannot be distributed.)