Genode onto i.mx53 qsb

Stefan Kalkowski stefan.kalkowski at ...1...
Wed Sep 17 08:55:57 CEST 2014


Hi Joseph,

within the 'tz_vmm' run example Genode's framebuffer driver for i.MX53
isn't used at all. It is a very simple example used for testing the
TrustZone world-switch regulary. It only starts the simple TrustZone
VMM, which boots Linux. Linux thereby uses the devices (that are
configured in the kernel) directly without interaction with the secure side.

Given your last mail, I was assuming you want Linux to use the
framebuffer directly too. In that case, I forgot to mention that you'll
have to mark the appropriated devices like I2C and GPIO controller, as
well as the IPU as unsecure devices, which is hardcoded in the
constructor of the central security unit of that platform:

  repos/base-hw/src/core/include/spec/imx53/trustzone/csu.h

However, if you want Linux (the unsecure world) to share the framebuffer
with the secure Genode world, then you'll have to incorporate at least
the framebuffer driver (maybe a graphical system and some other
applications) into the run-script. A good starting point are our
run-scripts for graphical systems e.g.: repos/os/run/demo.run

Moreover, the simple VMM example in the current mainline Genode
repository doesn't include the handling of the para-virtualized
framebuffer device that is used in the TrustZone-specific Linux version
we use. Whenever Linux is using another memory range as framebuffer,
this is propagated to the VMM via a hypercall, have a look here:


https://github.com/skalk/linux/blob/bc1707a23a9770cf080a1b87b4f553a2a39ac636/drivers/video/mxc/mxc_ipuv3_fb.c

On the secure, the VMM has to use the information to either copy
regularyly the content of the Linux framebuffer to some window, or it
uses the special overlay functionality of the i.MX53 IPU to let the
hardware copy the content. Both approaches are used in the graphical
demo for the i.MX53 SABRE tablet. The corresponding code of the VMM of
that example can be found here:


https://github.com/skalk/genode/tree/i.MX53_tablet_demo/os/src/server/vmm/imx53

You might use it as a starting point to turn the 'tz_vmm' scenario into
a graphical one.

Regards
Stefan

On 09/16/2014 06:33 PM, Joseph Lee wrote:
> Hi Stefan,
> 
> Thank you again for you reply
> 
> I just noticed that the i.MX53 framebuffer driver doesn't detect the
> lvds display configuration automatically.
> I tried to change the default LCD display configuration (resolution) in
> the driver code.
> 
> https://github.com/genodelabs/genode/blob/master/repos/os/src/drivers/framebuffer/imx53/driver.h
> 
> 
> So i changed the values of qsb_width and qsb_height to the corresponding
> lvds values(1024 x 768).
> But still i don't see anything on the screen.
> 
> Could you please let me know if there is any other configuration? thank
> you in advance for your answers.
> 
> best regards,
> Joseph
> 
> On Tue, Sep 16, 2014 at 8:04 AM, Stefan Kalkowski
> <stefan.kalkowski at ...1...
> <mailto:stefan.kalkowski at ...1...>> wrote:
> 
>     Hi Joseph,
> 
>     On 09/15/2014 05:20 PM, Joseph Lee wrote:
>     > Thank you Stefan for your valuable feedback
>     >
>     > I think it is working now. But i have another issue. There is nothing
>     > displayed on the screen (LVDS Display kit)
>     > I already configured the u-boot environment variable bootargs_base.
>     >
>     >          bootargs_base=set bootargs console=ttymxc0,115200 gpu_nommu ${lvds}
>     >
>     > And it is working with the per-installed Linux operating system. I am
>     > using u-boot 2009.08 version.
>     >
>     > Herewith, i have attached the output on serial console.
>     >
>     > What is still missing? thank you in advance
> 
>     The u-boot variable you mentioned is used when u-boot starts the Linux
>     kernel. Then the bootloader provides the corresponding arguments to the
>     kernel. In our small test scenario, a Genode application called tz_vmm
>     fulfills the role of the bootloader for the Linux instance running in
>     TrustZone's "normal world". Therefore, the tz_vmm has to provide the
>     arguments to the Linux kernel. They are hardcoded in the application,
>     have a look at:
> 
> 
>     https://github.com/genodelabs/genode/blob/master/repos/os/src/server/tz_vmm/imx53/main.cc
> 
>     In line 36 you see the command line for the Linux kernel.
> 
>     Regards
>     Stefan
> 
>     >
>     > regards,
>     > Joseph
>     >
>     > On Mon, Sep 15, 2014 at 8:44 AM, Stefan Kalkowski
>     > <stefan.kalkowski at ...1...
>     <mailto:stefan.kalkowski at ...1...>
>     > <mailto:stefan.kalkowski at ...1...
>     <mailto:stefan.kalkowski at ...1...>>> wrote:
>     >
>     >     Hi Joseph,
>     >
>     >     what u-boot version do you use? I recently run into a similar
>     problem
>     >     when using a recent u-boot version. It had to do with a more
>     strict
>     >     checking before unzipping. To test out whether it is the same
>     problem
>     >     try to run the image without compressing it. Therefore, you
>     might build
>     >     your uImage by hand:
>     >
>     >       /usr/local/genode-gcc/bin/genode-arm-objcopy -O binary \
>     >       var/run/tz_vmm/image.elf var/run/tz_vmm/image.bin
>     >
>     >     and:
>     >
>     >       mkimage -A arm -O linux -T kernel -C none -a 0x70010000 \
>     >       -e 0x70010000 -d var/run/tz_vmm/image.bin var/run/tz_vmm/uImage
>     >
>     >     If that works for you it's probably the same issue.
>     >
>     >     Regards
>     >     Stefan
>     >
>     >     On 09/14/2014 06:47 AM, Joseph Lee wrote:
>     >     > Hello,
>     >     >
>     >     > I'm trying to port genode onto i.mx53 quick start board. I
>     followed the
>     >     > building steps in this thread.
>     >     >
>     http://sourceforge.net/p/genode/mailman/genode-main/thread/9167aa55bacd5e3f00e64168280aef3e%40lcc.uma.es/#msg31683911
>     >     >
>     >     > Now i get /uImage/ in in the building
>     directory(var/run/tz_vmm) with
>     >     > other two files (/boot_modules.s/ and /image.elf/). The size of
>     >     /uImage/
>     >     > is 7.5MB
>     >     >
>     >     > I loaded the /uImage/ to memory address 0x70800000. When I tried
>     >     to boot
>     >     > with the same memory address (bootm 0x70800000), i get the
>     following error.
>     >     >
>     >     > ## Booting kernel from Legacy Image at 70800000 ...
>     >     >    Image Name:
>     >     >    Image Type:   ARM Linux Kernel Image (gzip compressed)
>     >     >    Data Size:    7858693 Bytes =  7.5 MB
>     >     >    Load Address: 70010000
>     >     >    Entry Point:  70010000
>     >     >    Verifying Checksum ... OK
>     >     >    Uncompressing Kernel Image ... Error: inflate() returned -5
>     >     > GUNZIP: uncompress, out-of-mem or overwrite error - must
>     RESET board to
>     >     > recover
>     >     > resetting ...
>     >     >
>     >     > I tried again with another memory address (0x78000000) if
>     there was
>     >     > overlap. Still I get the same result.
>     >     >
>     >     > I also checked if there is overlap with the physical address
>     ranges used
>     >     > by u-boot bootloader using /readelf/.
>     >     >
>     >     > Here is the output
>     >     >
>     >     > Elf file type is EXEC (Executable file)
>     >     > Entry point 0x70010000
>     >     > There are 3 program headers, starting at offset 52
>     >     >
>     >     > Program Headers:
>     >     >   Type                  Offset   VirtAddr   PhysAddr 
>      FileSiz MemSiz
>     >     > Flg Align
>     >     >   EXIDX          0x077138 0x7007f138 0x7007f138 0x02578
>     0x02578 R   0x4
>     >     >   LOAD           0x008000 0x70010000 0x70010000 0x6ac64
>     0x6ac64 R E 0x8000
>     >     >   LOAD           0x073000 0x7007b000 0x7007b000 0x0b03c
>     0xd3ed5 RW  0x8000
>     >     >
>     >     > What is missing? thanks in advance
>     >     >
>     >     > best regards,
>     >     > Joseph,
>     >     >
>     >     >
>     >     >
>     >     >
>     >   
>      ------------------------------------------------------------------------------
>     >     > Want excitement?
>     >     > Manually upgrade your production database.
>     >     > When you want reliability, choose Perforce
>     >     > Perforce version control. Predictably reliable.
>     >     >
>     >   
>      http://pubads.g.doubleclick.net/gampad/clk?id=157508191&iu=/4140/ostg.clktrk
>     >     >
>     >     >
>     >     >
>     >     > _______________________________________________
>     >     > genode-main mailing list
>     >     > genode-main at lists.sourceforge.net
>     <mailto:genode-main at lists.sourceforge.net>
>     >     <mailto:genode-main at lists.sourceforge.net
>     <mailto:genode-main at lists.sourceforge.net>>
>     >     > https://lists.sourceforge.net/lists/listinfo/genode-main
>     >     >
>     >
>     >     --
>     >     Stefan Kalkowski
>     >     Genode Labs
>     >
>     >     http://www.genode-labs.com/ · http://genode.org/
>     >
>     >     ------------------------------------------------------------------------------
>     >     Want excitement?
>     >     Manually upgrade your production database.
>     >     When you want reliability, choose Perforce
>     >     Perforce version control. Predictably reliable.
>     >     http://pubads.g.doubleclick.net/gampad/clk?id=157508191&iu=/4140/ostg.clktrk
>     >     _______________________________________________
>     >     genode-main mailing list
>     >     genode-main at lists.sourceforge.net
>     <mailto:genode-main at lists.sourceforge.net>
>     >     <mailto:genode-main at lists.sourceforge.net
>     <mailto:genode-main at lists.sourceforge.net>>
>     >     https://lists.sourceforge.net/lists/listinfo/genode-main
>     >
>     >
>     >
>     >
>     > ------------------------------------------------------------------------------
>     > Want excitement?
>     > Manually upgrade your production database.
>     > When you want reliability, choose Perforce
>     > Perforce version control. Predictably reliable.
>     > http://pubads.g.doubleclick.net/gampad/clk?id=157508191&iu=/4140/ostg.clktrk
>     >
>     >
>     >
>     > _______________________________________________
>     > genode-main mailing list
>     > genode-main at lists.sourceforge.net
>     <mailto:genode-main at lists.sourceforge.net>
>     > https://lists.sourceforge.net/lists/listinfo/genode-main
>     >
> 
>     --
>     Stefan Kalkowski
>     Genode Labs
> 
>     http://www.genode-labs.com/ · http://genode.org/
> 
>     ------------------------------------------------------------------------------
>     Want excitement?
>     Manually upgrade your production database.
>     When you want reliability, choose Perforce.
>     Perforce version control. Predictably reliable.
>     http://pubads.g.doubleclick.net/gampad/clk?id=157508191&iu=/4140/ostg.clktrk
>     _______________________________________________
>     genode-main mailing list
>     genode-main at lists.sourceforge.net
>     <mailto:genode-main at lists.sourceforge.net>
>     https://lists.sourceforge.net/lists/listinfo/genode-main
> 
> 
> 
> 
> ------------------------------------------------------------------------------
> Want excitement?
> Manually upgrade your production database.
> When you want reliability, choose Perforce.
> Perforce version control. Predictably reliable.
> http://pubads.g.doubleclick.net/gampad/clk?id=157508191&iu=/4140/ostg.clktrk
> 
> 
> 
> _______________________________________________
> genode-main mailing list
> genode-main at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/genode-main
> 

-- 
Stefan Kalkowski
Genode Labs

http://www.genode-labs.com/ · http://genode.org/




More information about the users mailing list