Schol-R-LEA wrote:
The forum does have an option for that, if you really mean this. If you set someone to 'foe' in their profile, you won't see their posts unless you choose to explicitly - there will be a placeholder for the post, and you can open the post if you choose, but by default the posts themselves will be hidden.
I know about that, but I don't use it. just not reading annoying/whiny stuff and that's all.
Now, then, at the risk of going off-topic...
zaval wrote:all my humble attempts of programming SBCs, I do on bare metal.
Wait, you don't use
any emulation or virtualization? That's got to make testing turn-around pretty painful - IIUC, you would need to burn each update to an SD card (or transfer it to the eMMC memory, depending) each time you update the kernel code. Do you really see that as acceptable?
I totally agree with you that "using an emulator would be an obvious way of simplifying the testing of new OS code" and I absolutely understand why people do so on x86. It's well reasonable there. But on arm SBCs, it's not as beneficial. ARM platforms aren't even closely as unified as x86, so messing around with emulators for arm, you will end up working for something like "spherical arm board in vacuum",
that won't let you get closer to the real targets even a bit, or working for ... rpi which is, I believe, good emulated. both options suck. Also, the hardware differences mitigate that burden you've mentioned for ARM/MIPS boards. For example rebooting an x86 rig 10-30 times a day is a little bit painful and can cause heartburn; but it's not so for a few watts consuming SBC, which is just fine with frequent rebooting. It's fast and painless. And yes, you understood correctly, I put new files everytime on an SD card or eMMC module. It's not that tiresome at these early stages. I don't even remove media, ftp helps here. So far my "installation" lives in a dedicated folder on the very same /boot volume (or just a folder in some cases), most linux "distros" come with. So I don't need to swap cards everytime in most cases. Just a boot into linux, flash and reboot cycle and break into uboot sequence when it's time to test new portions of the lameness of your own production.
Not to mention, that for the FW part, it's inevitable way of doing things. You really need to program this real SoC and not something imaginary. And take into account slight whims of every particular SoC (like for example Amlogic SoC lying about CPU frequences, it's just an example, I don't own Amlogic devices, Amlogic doesn't provide manuals. Just remembered it, since finally Odroid-N2 has been released with their new (not so) impressive S922X SoC). Or Allwinner a64 HDMI controller, the same thing as on NXP iMX6 SoC (that are documented) but with obfuscated register offsets... Or for example different versions of the same board having proper UHS-I support and not having it (because earlier versions didn't provide a dedicated voltage regulator for the SD host controller for making 1.8V switching possible, despite the SoC is all the same and UHS-I was there all the time, what the emulator could give you such an intimate view of so many SBCs and their variances?) So you need to agree, when it's about e.g. SDRAM initialization or stuff like mentioned, none emulation could help here. OS is more free of this platform specific stuff, but not fully free on ARM platforms. Yeah, there is platform independent code in the OS, a lot of it on a good architected OS, but still to run it, you need platform dependent parts as well (of course, for the beginning, you could limit yourself by only having SDRAM and UART). Either for some "virtual" arm thing, what's there on emulators or for real one. I told, that when all your OS is just a few files (loader, an OS delegate into FW, kernel executable, hal, system hive of registry (or device tree on early stages) and a couple of "drivers" (too raw), it's not so hard to flash it everytime. Especially, given all the platform independent code lives in the kernel executable, and we kinda agreed, that emulators are useless for platform dependent one. Basically, if you want your OS to run on real ARM SBCs, write on them. This is exactly what I want, I have zero interest in programming virtual rpi.
I get that you have an issue with the idea of virtualization as a part of regular OS operation - I am curious as to why, but that's a separate matter - but I would expect that using an emulator would be an obvious way of simplifying the testing of new OS code. Is there some specific reason you don't do this?
Yes, I hate it.
It's a wasteful pseudotechnology, parasitic thing eating up zillions of watts of energy
for nothing. The worst of them. I hate exactly that it is being used outside of its real scope, where it's useful and helpful - testing, developing, analyzing (malware for example).
I think, that Secure World devised by ARM is way more interesting, not to mention - useful, than HV. I am very eager to try it on my own, unfortunately, am not ready yet.
For an osdev, this feature opens a lot of challenges and fun. Unfortunately, not every vendor is ready to give it to you. I guess, Monitor Mode/EL3 availability on some platforms yet is a temporary goody, thanks to overlooking this by clumsy a little vendors like Allwinner, Rockchip etc. Eventually they will "grow up", get toothier and lock that down, not doing anything useful there by themselves and not letting anybody else. Just like TI does.