I actually solved this, it looks like the image is to big after adding the binaries. So the solution was setting the bootload to load the image to a higher address:before - ext2load mmc 0:1 0x70200000 uImage; bootm 0x70200000after - ext2load mmc 0:1 0x70400000 uImage; bootm 0x70400000But although this is solved it looks like the example still cannot run. This is the output:## Booting kernel from Legacy Image at 70400000 ...Image Name:Image Type: ARM Linux Kernel Image (gzip compressed)Data Size: 8523403 Bytes = 8.1 MiBLoad Address: 70010000Entry Point: 70010000Verifying Checksum ... OKUncompressing Kernel Image ... OKStarting kernel ...kernel initializedGenode 16.02int main(): --- create local services ---int main(): --- start init ---int main(): transferred 241 MB to initint main(): --- init created, waiting for exit condition ---[init] parent provides[init] service "ROM"[init] service "RAM"[init] service "IRQ"[init] service "IO_MEM"[init] service "IO_PORT"[init] service "CAP"[init] service "PD"[init] service "RM"[init] service "CPU"[init] service "LOG"[init] service "SIGNAL"[init] service "VM"[init] child "tz_vmm"[init] RAM quota: 10203136[init] ELF binary: tz_vmm[init] priority: 0[init -> tz_vmm] Could not open ROM session for module "config"[init -> tz_vmm] Could not obtain config file[init -> tz_vmm] Could not open ROM session for module "libm.lib.so"[init -> tz_vmm] abort called - thread: 'main'[init] virtual void Genode::Child_policy::exit(int): child "tz_vmm" exited with exit value 1It looks like the output mentions libm, do I need math lib in order to run libpng?I don't see libm inside $(GENODE_DIR)/repos/libports/portsThanks, Tiago2016-06-01 12:50 GMT+01:00 Tiago Brito <tb.genode@...9...>:2016-06-01 12:31 GMT+01:00 Stefan Kalkowski <stefan.kalkowski@...1...>:Hello Tiago,
You missed to add the dynamic linker itself to the files to be loaded.
On 06/01/2016 01:07 PM, Tiago Brito wrote:
> Hi, I've been trying to use libpng inside the secure world of i.MX53 QSB
> TrustZone aware TZ_VMM example.
>
> I want to receive an image from the normal world (running Linux) and do
> some process the image in some way inside the secure world.
>
> I understand the flow of genode and tz_vmm in particular and there are some
> examples on how to communicate data between the normal and secure world, so
> that's not my problem right now. My problem is that I cannot run tz_vmm
> after adding libpng as a lib.
>
> In order to use libpng inside tz_vmm I did the following:
> 1) in $(BUILDDIR)/etc/build.conf uncommented this line
> REPOSITORIES += $(GENODE_DIR)/repos/libports
>
> 2) inside $(GENODE_DIR)/repos/libports I did:
> make prepare PKG="libc zlib libpng"
>
> 3) inside $(BUILDDIR)/repos/os/src/server/tz_vmm/spec/imx53 I added the
> following to target.inc
> LIBS += libc
> LIBS += zlib
> LIBS += libpng
>
> 4) then I added #include <png.h> inside main.cc
>
> 5) finally inside $(BUILDDIR) I did
> make run/tz_vmm
>
> All these steps compiled fine, but when I run this on my board the
> following message comes up:
>
> ## Booting kernel from Legacy Image at 70200000 ...
> Image Name:
> Image Type: ARM Linux Kernel Image (gzip compressed)
> Data Size: 7888432 Bytes = 7.5 MiB
> Load Address: 70010000
> Entry Point: 70010000
> Verifying Checksum ... OK
> Uncompressing Kernel Image ... OK
>
> Starting kernel ...
>
> kernel initialized
> Genode 16.02
> int main(): --- create local services ---
> int main(): --- start init ---
> int main(): transferred 242 MB to init
> int main(): --- init created, waiting for exit condition ---
> [init] Could not open ROM session for module "ld.lib.so"
> [init] parent provides
> [init] service "ROM"
> [init] service "RAM"
> [init] service "IRQ"
> [init] service "IO_MEM"
> [init] service "IO_PORT"
> [init] service "CAP"
> [init] service "PD"
> [init] service "RM"
> [init] service "CPU"
> [init] service "LOG"
> [init] service "SIGNAL"
> [init] service "VM"
> [init] Dynamically linked file found, but no dynamic linker binary present
> [init] unknown exception?
> [init] child "tz_vmm"
> [init] RAM quota: 10203136
> [init] ELF binary: tz_vmm
> [init] priority: 0
>
> What have I done wrong? It seems I need to add a binary somewhere, but I
> don't know where. Do I need to compile anything else in order to libpng to
> be usable inside genode?
>
> Thanks in advance!
It is called ld.lib.so and can be found in your build-directory under
bin/. PLease also add all other *.lib.so files to your bootloader
configuration resp. the run-script.Thanks Stefan, I did what you say and it compiled without any problem, but I still cannot run the example.I changed the tz_vmm run script like so:It now fails even before launching Genode. This is the output:## Booting kernel from Legacy Image at 70200000 ...Image Name:Image Type: ARM Linux Kernel Image (gzip compressed)Data Size: 8523403 Bytes = 8.1 MiBLoad Address: 70010000Entry Point: 70010000Verifying Checksum ... OKUncompressing Kernel Image ... Error: inflate() returned -3gzip compressed: uncompress error -1Must RESET board to recoverresetting ...Does this mean the image is corrupted in any way and thus it cannot be uncompressed?Thanks, Tiago
Regards
Stefan