On 08/25/2015 02:13 AM, Don Mahurin wrote: > Hi all, > > We would like to submit our current work on the arm64 port of > ipipe/xenomai. We hope that this contribution will encourage further > development of arm64 support in ipipe/xenomai. >
arm64 support is definitely a high priority item. Thanks for tackling this. > This port was largely developed on ipipe-3.10 as a base, so it is likely to > be the most well tested there. Though recently, we have also ported these > changes to ipipe-3.14.44. ( We noticed that 3.10 is missing from rc7. Is > this intended, or will 3.10 support return? ) ipipe-core-3.10.32-arm-10.patch is still part of the distribution in -rc7. This said, the absence of a patch targeting a particular kernel release in a given Xenomai version does not mean the latter can't run over the former. This rather means that we did not check for it. Xenomai 3 over Cobalt requires a kernel release >= 3.10 though. > > At the end of this message are the relevant git repos and branches for the > arm64 port. Also included is a build script to build a minimal busybox > linux system which may be ran using qemu (arm64 virt). > > > Development status: > > The 3.14 port is missing the fast-syscall changes (in entry.S) from armv7, > and instead contains the 3.10 entry.S changes forward ported to 3.14. > > FPU support is incomplete. > > Smokey tests: > > 3.10/rc6 smokey tests all pass > 3.14/rc6 smokey tests all pass > 3.14/rc7 smokey tests sched-quota and sched-tp fail > This is likely because -rc7 has added checks to sched-* tests which have time-dependent results, so they may not match the expected value in a qemu-based execution. > > git repos: > > https://gitlab.mperpetuo.com/it/xenomai-3.git > https://gitlab.mperpetuo.com/it/ipipe.git > https://gitlab.mperpetuo.com/it/build-scripts.git > It looks like curl does not like the cypher used by this server. http is fine though. > ipipe/xenomai arm64 branches: > > ipipe-core-3.10.32-arm-10-arm64-2c, v3.0-rc6-arm64-1c > ipipe-core-3.14.44-arm-11-arm64-2, v3.0-rc6-arm64-1c > ipipe-core-3.14.44-arm-12-arm64-2, v3.0-rc7-arm64-1c > > > The system is built with the following commands. > git clone https://gitlab.mperpetuo.com/it/build-scripts.git > mkdir -p build > cd build > ../build-scripts/build_linux_emulator-arm64.sh > or > ../build-scripts/build_linux_emulator-arm64.sh --314-rc6 > or > ../build-scripts/build_linux_emulator-arm64.sh --314-rc7 > This went almost fine except the rsync step which assumes a native arm64 host for populating the rootfs, I have no such beast. But that's not a major issue, I can take another path for building it. > To run the resulting build: > sudo apt-get install qemu-system-arm > ( cd out/target/product/xenomai_arm64; ./run.sh ) > > > We look forward to any feedback or questions. Please let us know how we may > continue to contribute to move this arm64 port forward. > I only had a quick look to the code so far, but as a preliminary step, you may want to split cobalt/arch/arm (and the related include areas) from cobalt/arch/arm64 in the Xenomai tree, following the convention used in the mainline kernel. Having a moderate amount of duplicate code between arm and arm64 is acceptable, compared to dealing with cross-architecture headers sprinkled with #ifdefery. arm and arm64 are distinct enough. I believe we should target 3.14 for the first implementation, since the I-pipe bits in 3.10 are lagging slightly behind already, 3.14 contains the latest changes to the interrupt pipeline though. -- Philippe. _______________________________________________ Xenomai mailing list [email protected] http://xenomai.org/mailman/listinfo/xenomai
