[TZ_VMM] - libpng on the i.MX53 QSB
Tiago Brito
tb.genode at ...9...
Wed Jun 1 15:20:57 CEST 2016
Ok, so the problem was that I missed to link libm as well. I didn't noticed
libm was needed. Now it works and linux boots successfully.
But I still have some messages during the boot process which weren't there
before and is probably some to do with my configuration.
This is the output:
## Booting kernel from Legacy Image at 70400000 ...
Image Name:
Image Type: ARM Linux Kernel Image (gzip compressed)
Data Size: 8596638 Bytes = 8.2 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 241 MB to init
int 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] no VFS configured
[init -> tz_vmm] Start virtual machine ...
How do I configure VFS?
Thanks in advance! Tiago
2016-06-01 14:11 GMT+01:00 Tiago Brito <tb.genode at ...9...>:
> 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 0x70200000
> after - ext2load mmc 0:1 0x70400000 uImage; bootm 0x70400000
>
> But 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 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 241 MB to init
> int 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 1
>
> It 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/ports
>
> Thanks, Tiago
>
> 2016-06-01 12:50 GMT+01:00 Tiago Brito <tb.genode at ...9...>:
>
>>
>>
>> 2016-06-01 12:31 GMT+01:00 Stefan Kalkowski <
>> stefan.kalkowski at ...1...>:
>>
>>> Hello Tiago,
>>>
>>> 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!
>>>
>>> You missed to add the dynamic linker itself to the files to be loaded.
>>> 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:
>> set boot_modules { core init ld.lib.so libc.lib.so zlib.lib.so
>> libpng.lib.so tz_vmm linux }
>>
>> 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 MiB
>> Load Address: 70010000
>> Entry Point: 70010000
>> Verifying Checksum ... OK
>> Uncompressing Kernel Image ... Error: inflate() returned -3
>> gzip compressed: uncompress error -1
>> Must RESET board to recover
>> resetting ...
>>
>>
>> Does this mean the image is corrupted in any way and thus it cannot be
>> uncompressed?
>>
>> Thanks, Tiago
>>
>>
>>> Regards
>>> Stefan
>>>
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.genode.org/pipermail/users/attachments/20160601/b55db46a/attachment.html>
More information about the users
mailing list