Here are some notes to keep in mind future generations.
Well this was non-trivial but I think it should work. You need to get the xilinx edition of qemu or hardware will not be supprted properly. (the directories are off in the following)
git clone https://github.com/Xilinx/qemu git checkout xilinx-master ./configure --target-list="arm-softmmu,microblazeel-softmmu" --enable-fdt --disable-kvm make ./qemu-xilinx/arm-softmmu/qemu-system-arm -M xilinx-zynq-a9 -m 1024 -serial null -serial mon:stdio -dtb resources.qemu/qemu.dtb -kernel resources.qemu/zImage -initrd resources.qemu/ramdisk.img -nographic
Pay close attention to the last line.
Now you probably want gdb right? Well here goes:
# gdb setup here
You also want to see some host files from qemu so you may load modules and stuff.
Building thinklcdml is a bit weird. I know I should mount and everything but here is my workflow:
Compile thinklcdml with make
Then put the module in ramdisk:
cp ~/Projects/ThinkLCDML/thinklcdml.ko /homes/cperivol/Sandbox/xilinx-zynq-bootstrap/fs/lib/modules/3.6.0-xilinx/thinklcdml.ko && date >> /homes/cperivol/Sandbox/xilinx-zynq-bootstrap/fs/last_touch && rm resources/uramdisk.img.gz && ./bootstrap.sh --only ramdisk && cp resources/ramdisk.img resources.qemu/ramdisk.img
Looks like fb_memsize is 0 when it should have been something else.
modprobe thinklcdml fb_memsize=1920000
Here is what we will need:
DONE | Filename as downloaded | Filename on SD card | Description | Vendor |
---|---|---|---|---|
BOOT_FMC.BIN & BOOT_HDMI.BIN | BOOT.BIN | Created using the EDK bootgen tool - contains the FSBL (First Stage Boot Loader), the FPGA bit-stream, and the U-Boot bootloader | Xylon | |
x | zImage | zImage | The Linux kernel | iVeia |
x | devicetree_fmc.dtb & devicetree_hdmi.dtb | devicetree.dtb | The Device Tree Blob | iVeia |
kinda | ramdisk8M.image.gz | ramdisk8M.image.gz | The Linux ramdisk, modified from the Xilinx’s ZC702 release to run startup.sh on boot | Xylon (with modifications by iVeia) |
kinda | startup.sh | startup.sh | A script run at the end of boot (used to start Android) | iVeia |
x | root.img | root.img | The Android Root Filesystem | iVeia |
Check the android xilinx wiki for more details
I already have directfb compiling for arm with our very own hardware.
Integrated.
Compiles fine with the new kernel. I will need to test it with dfb.
Directfb throws some weird ioctls that my driver cannot handle, I will need to investigate that.
Drivers are loaded in a quite dumb (static) way. Override that one and make a new one. The real problem with this is that for every change on a driver one has to load it to the sd card. what we need here is to move all logic from the sd card to nfs. rcS should do the bare basics as it does and then give control to a script on nfs (not another script on the sd)