Hello. I am using ARMv8 foundation model for my project. When configure foundation model with multi cores (cores=4) my code does not run. Can you lease help me solve this problem?
Hi Jayashreepasane,
Can you give more details ?
Model version, command you are using to start the model
and the application you are running ? Does it support smp ?
Regards,
Sudeep
Hello Sudeep,
Thank you Sudeep, for the reply. Currently i am able to run multi- core configuration. Problem of multi-core configuration is solved now.
I am using Foundation model version 9.6
The command used to run model is : ./Foundation_Platform --cores=4 --image OAL.axf
Yes the application which i am running supports SMP.
I am also interested to know whether Foundation model is able to generate hardware interrupts
As explanation given in the foundation model Dual timer SP804 can be implemented. But when timer elapses foundation model does not generates any interrupts
So that's why i have a question whether foundation model can support hardware interrupts
Jayashree P
Hi,
I have not tried SP804 timer, but Linux kernel used architected timer and interrupts must work
even for booting the kernel. So yes, foundation model does generate interrupts.
Yes. As u mentioned Foundation model does generates software interrupts in boot up time.
But i am not able to generate hardware interrupts. Can you please give me any example for generating hardware interrupts?
Thanks & Regards,
I just boot Linux kernel(v4.7-rc2) on the Foundation model(v9.6).
Here is the cat /proc/interrupts output which shows many interrupts are
working including architected timers.
I haven't check SP804 yet. But why do you need that when you have both
sysreg and memory mapped architected timers working.
Hi Sudeep,
I have successfully boot linux 4.4-rc4 on the Foundation_Model using boot-wrappers but fail to wrapper the latest kernel 4.8-rc2 as it warns "FATAL ERROR: Unable to parse input tree". How to correctly boot the latest linux kernel (from git.kernel.org not linaro's) on Foundation_Model? Could you share your procedures and some boot arguments? Thank you very much!
Could you share more details on the model version and logs where you get the error.
I just tried mainline kernel(v4.8-rc2 and the tip as of today), both works (not done any
extensive testing but boots fine)
Well, kernel codes cloned from here (git://git.kernel.org/pub/scm/linux/kernel/git/cmarinas/linux-aarch64.git) and boot-wrapper fetched from virtualopensystem (git://github.com/virtualopensystems/boot-wrapper.git) worked fine together. I could generate an axf file and boot it on Foundation Model embedded in DS-5 24.1. The foundation model here is build 9.6.43.
But after cross-compiling v4.8-rc2 codes, I wrap Image using boot-wrappers above mentioned, the output suggested a FATAL ERROR when parsing dts and I thought it was "dtc" executable that complained.
boot-wrapper git:(aarch64) âś— make -f ./Makefile ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- \
BOOTARGS='"root=/dev/vda ip=dhcp rw console=ttyAMA0 maxcpus=1"' \
FDT_SRC=foundation-v8.dts IMAGE=image-foundation_img.axf
( echo "/include/ \"foundation-v8.dts\"" ; echo "/ { chosen { bootargs = \""root=/dev/vda ip=dhcp rw console=ttyAMA0 maxcpus=1"\"; }; };" ) | ./dtc -O dtb -o fdt.dtb -
Error: foundation-v8.dts:7.1-2 syntax error
FATAL ERROR: Unable to parse input tree
Makefile:78: recipe for target 'fdt.dtb' failed
make: *** [fdt.dtb] Error 1
Yes, it's indeed dtc issue.
It could be more related to the path and how the files are included.
relative vs absolute paths ? Mainline kernel and boot-wrapper works out of box.
It could be some issue with that specific bootwrapper.
The bootwrapper now decompiles the one build in the kernel and modifies it.
( dtc -O dts -I dtb build/arch/arm64/boot/dts/arm/foundation-v8.dtb ; echo "/ { chosen { bootargs = \"root=/dev/vda1 rootwait consolelog=9 rw console=ttyAMA0; }; };" ) | dtc -O dtb -o fdt.dtb -
This specific wrapper deals with dts in almost the same way by using dts but dtb.
And FDT_SRC is assigned to foundation-v8.dts. So this specific wrapper seems to resemble the one you mentioned at least at this point. Actually I have adapted the common boot-wrapper to the new dts directory, still it failed and gave no error info.
I wonder if this booting method is rather old fashioned and out of favor, should I adopt Linaro's approach which could be found in Linaro's deliverables? Thank you so much!
Can you try with the latest bootwrapper @https://git.kernel.org/cgit/linux/kernel/git/mark/boot-wrapper-aarch64.git/log/ ?
git clone git.kernel.org/cgit/linux/kernel/git/mark/boot-wrapper-aarch64.git
autoreconf -i -f
./configure --host=$CROSS_COMPILE --with-kernel-dir=$KERNEL_BUILD --with-initrd=initramfs.cpio.gz --with-cpu-ids= 0x0,0x1,0x2,0x3 \
--with-cmdline="root=/dev/vda1 rootwait consolelog=9 rw console=ttyAMA0 earlycon=pl011,0x1c090000" --enable-gicv3 --with-dtb=foundation-v8-gicv3.dtb
This repo git.kernel.org/cgit/linux/kernel/git/mark/boot-wrapper-aarch64.git does not exist.
However cloning this url https://git.kernel.org/pub/scm/linux/kernel/git/mark/boot-wrapper-aarch64.git works.
By the way, this repo seems to make patches to Index of /pub/scm/linux/kernel/git/cmarinas/boot-wrapper-aarch64.git . and does not fix some minor errors.
Perhaps making initramfs would be a tough thing, and I have successfully booted deliverables 16.06 for fvp of which the kernel version is 4.7. Thank you all the same!
dotweiba wrote:This repo git.kernel.org/cgit/linux/kernel/git/mark/boot-wrapper-aarch64.git does not exist.However cloning this url https://git.kernel.org/pub/scm/linux/kernel/git/mark/boot-wrapper-aarch64.git works.By the way, this repo seems to make patches to Index of /pub/scm/linux/kernel/git/cmarinas/boot-wrapper-aarch64.git . and does not fix some minor errors.Perhaps making initramfs would be a tough thing, and I have successfully booted deliverables 16.06 for fvp of which the kernel version is 4.7. Thank you all the same!
dotweiba wrote:
Glad to hear it helped.
When I click on git.kernel.org/cgit/linux/kernel/git/mark/boot-wrapper-aarch64.git
as mentioned by you, i can see the repo. Not sure what you mean by doesn't exist ?
Feel sorry for my equivocalness. What I meant was that the command "git clone git.kernel.org/cgit/linux/kernel/git/mark/boot-wrapper-aarch64.git" failed due to the non-existent repo. However, a little change in url makes difference. This one — "git clone https://git.kernel.org/pub/scm/linux/kernel/git/mark/boot-wrapper-aarch64.git " — works. That is weird, I mean, both of the url refer to the same repo, at least the identical git log.
Unfortunately, both of them do not mend a flaw that seem to result from changes in linux kernel code structure.
No, you need to specify the protocol to use for git clone command.
E.g:
git clone https://git.kernel.org/pub/scm/linux/kernel/git/mark/boot-wrapper-aarch64.git
git clone git://git.kernel.org/pub/scm/linux/kernel/git/mark/boot-wrapper-aarch64.git
First uses secure http while second uses git protocol in above example.
So that's not weird, but expected