-
Notifications
You must be signed in to change notification settings - Fork 969
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Raspberry Pi port proof-of-concept #134
Raspberry Pi port proof-of-concept #134
Conversation
This allows checking out Git repositories besides U-Boot. Co-Authored-By: Benjamin Dauphin <benjamin.dauphin@live.fr> Co-Authored-By: Gilles Henaux <gill.henaux@gmail.com>
The current build system can't handle properly having more than one board family and more than one BSP, so we make up a way to select what to build and what to do based on the BSP_NAME variable which will become useful later on. This commit purposely breaks the Jenkins infrastructure as it exists now, so that the pain is felt only once. Co-Authored-By: Benjamin Dauphin <benjamin.dauphin@live.fr> Co-Authored-By: Gilles Henaux <gill.henaux@gmail.com>
Co-Authored-By: Benjamin Dauphin <benjamin.dauphin@live.fr> Co-Authored-By: Gilles Henaux <gill.henaux@gmail.com>
earm-wide defines don't play nice with multiple BSPs. Co-Authored-By: Benjamin Dauphin <benjamin.dauphin@live.fr> Co-Authored-By: Gilles Henaux <gill.henaux@gmail.com>
Co-Authored-By: Benjamin Dauphin <benjamin.dauphin@live.fr> Co-Authored-By: Gilles Henaux <gill.henaux@gmail.com>
Co-Authored-By: Benjamin Dauphin <benjamin.dauphin@live.fr> Co-Authored-By: Gilles Henaux <gill.henaux@gmail.com>
Co-Authored-By: Benjamin Dauphin <benjamin.dauphin@live.fr> Co-Authored-By: Gilles Henaux <gill.henaux@gmail.com>
Co-Authored-By: Benjamin Dauphin <benjamin.dauphin@live.fr> Co-Authored-By: Gilles Henaux <gill.henaux@gmail.com>
This timer is the one we're supposed to use all along, but QEMU doesn't support it for now, so we keep the ARM internal timers around if needed. These timers shouldn't be used since they aren't memory-mapped and thus unsuitable for MINIX 3 (for the user-mapped page).
I think I can speak for everyone that we would really love to merge this; on the other hand I'm a bit hesitant to merge code that's already known not to work right now. Is it okay with you if we defer merging this at least until after issue #104 has been fixed? For the moment there are no patches that conflict with this work, so I think the chance of it "rotting" in the meantime is quite small, but I'll keep an eye out anyway. As a sidenote, since this is collaborative (university?) work, I feel compelled to ask explicitly just to make sure: these are in fact BSD-licensed changes, right? Sometimes institutions have weird policies about this.. |
You'll have second thoughts once you take a look at the patches :-)
Come to think of it, now I can't even remember if this branch indeed doesn't work on the real hardware or not. I'll give it a try just to be sure.
No problem.
Short answer : it's BSD-licensed. Long answer : the subject was explicitly filed under the |
I.. hope not? Humm :(
Good enough for me, thanks for confirming! |
It's not that bad. The source code itself is reasonably clean for a first try, but there is some questionable stuff in there. I'm mostly thinking about the bootloader written entirely in assembly and especially what I did to make both ports co-exist in the same source tree. The second one is in my opinion quite nasty since I'm basically doing |
I just built this branch and gave it a try on my Raspberry Pi 2. It works. That's... odd. Looks like #104 doesn't prevent my port from working, at least. |
I have been working on #104, but trying to compile with clang instead of There I had the same issues until I realized that even in -O0 clang uses My hunch is that GCC does something similar, as on ARMv7-a, those AFAIK, on ARMv6 CPUs the FPU is optional, so maybe you got saved by that. Kind regards, Lionel On 29 June 2016 at 17:46, Jean-Baptiste Boric notifications@github.com
|
The port targets ARMv7 (the original Raspberry Pi isn't supported) and we're reusing the existing toolchain as-is. Just about the only thing worthy of note is that we're not using U-Boot, we're booting straight from bare metal with whatever's environment the firmware has set up for us. |
Yes, this pull request is superseded by nekoborov's work. It's been a long time, but I recall there are a couple of issues that prevents this work from being merged. I can't precisely recall what those issues are right now though, but it probably mostly revolves around the source tree having trouble handling more than one ARM port. Finding enough free time for large-scale projects has been an issue for me since I left university, which is why I haven't touched MINIX3 in a long time. I'll see what I can do, but it might need to wait until May. |
Thanks for your informative response boric! I didn't realize there was such a significant problem surrounding that fork. I can totally relate to not having time to projects due to work and real life. :( All things considered, waiting until May/summer isn't too big of a deal. I hope you're able to have enough free time to look into it around then. Thanks again! |
This is a proof-of-concept port of MINIX 3 to the Raspberry Pi 2 and 3. It provides tty, fb and gpio drivers.
Being a proof-of-concept, there are lots of stupid things that should be ironed out, such as :
BSP_NAME
hack merely direct each board family to its ownobj
directory, a side effect is that the toolchain isn't shared ;x86_ramdisk.sh
;Note that this will boot on QEMU but not on the real hardware, possibly due to issue #104. A version that works on real hardware is available at the
rpi3
branch in my repo (boricj/minix@2febd7e25).Since this is a group effort and trying to attribute only one author to each commit is not possible, I used the OpenStack convention of Co-Authored-By as there is no official guideline for MINIX in this matter.