Discussion:
[IPU] - Framebuffer Driver on the i.MX53 QSB
Tiago Brito
2016-05-27 14:59:06 UTC
Permalink
Hi, I want to build a system based on the TZ_VMM example where a user space
Linux application can trigger a SMC. This SMC will tell the secure world to
display an image (and then return to the normal world after some time or
after the user explicitly triggers another world switch).

For now I want to start by using Linux on the Normal World, but I want to
eventually run Android in the Normal World.

The question which made me come to the mailing list is the following: in
your article regarding TrustZone [1], section "Additional device drivers",
you write that in order to run Android at almost-native performance in the
normal world you used hardware overlays and that you invested significant
development time into enabling this feature on the QSB.

Does this mean you have a working framebuffer driver for the i.MX53 QSB as
well as a working example on how to use hardware overlays on this platform?

If so I would like to know where can I get the mentioned framebuffer driver
as well as the hardware overlay example.

Thanks, Tiago

[1] - An Exploration of ARM TrustZone Technology (
http://genode.org/documentation/articles/trustzone)
Martin Vahi
2016-05-28 17:50:37 UTC
Permalink
I was wondering about 2 things:

observation_1)

It takes a "big" market to drive down
the unit cost of anything that requires
development, specially hardware. The
more people buy a microchip, the more
the cost of its development can be spread
across the end users of the microchip.

observation_2)

The more universal a piece of equipment
is, the greater its potential market.

observation_3)

The WiFi chipsets and GPU-s
are ridiculously cheap compared to
the effort that went in to designing
them. Semiconductor Foundries that
service multiple vendors, produce
totally different chips, are a stellar
example, how gigantic investment can be
diluted to the point that people
consider their products cheap commodities.


The question, "The Q", is:
if drivers for WiFi cards, GPU-s, USB pheripherals,
etc. are such an issue, then why isn't there
an economic incentive to just produce
loads-and-loads of FPGA-fabric and make
every OS just read in, how the fabric
has been connected in the current hardware,
re-compile VHDL and load its own code
to the FPGA-fabric, ELIMINATING THE NEEDS
FOR HARDWARE VENDORS TO INVEST TO DRIVER
DEVELOPMENT and INCREASING THE POTENTIAL MARKET
FOR THE HARDWARE, FOR THE PRODUCTS OF
THE HARDWARE PRODUCESRS?

What am I missing?

The economics is there,
technology is there, a RELATIVELY RECENT precedent
of introducing new types of computers
to the market is there, in the form of
Android phones and touchschreen based readers.
There's even a competitor to the ARM:
http://riscv.org/

Basically, the first, if not the very first, then
at least the second, FPGA-vendor, who creates a
proper set of open tools wins the market and
buries the Intel and AMD and ARM alive. The
various FPGA-patents should also be outdated by now.
A prototype might be made by loading a
closed source FPGA with a VHDL-design that
implements the open source FPGA. Even that
has been done: "Flavia: the Free Logic Array"

https://www.element14.com/community/groups/fpga-group/blog/2014/07/21/flavia-the-free-logic-array


I admit, I do not imagine that any classical
Venture Capitalist would ever invest to that
project, but, hell, most of them did not invest
even in Google and Facebook.


Thank You for reading my letter and I hope
to receive critisism that explains, why
the idea described in this letter is hopeless
or otherwise dumb or stupid.

Thank Your. :-)

Somewhat esoteric,
***@softf1.com
Stefan Kalkowski
2016-05-31 09:44:07 UTC
Permalink
Hello Tiago,
Post by Tiago Brito
Hi, I want to build a system based on the TZ_VMM example where a user space
Linux application can trigger a SMC. This SMC will tell the secure world to
display an image (and then return to the normal world after some time or
after the user explicitly triggers another world switch).
For now I want to start by using Linux on the Normal World, but I want to
eventually run Android in the Normal World.
The question which made me come to the mailing list is the following: in
your article regarding TrustZone [1], section "Additional device drivers",
you write that in order to run Android at almost-native performance in the
normal world you used hardware overlays and that you invested significant
development time into enabling this feature on the QSB.
Does this mean you have a working framebuffer driver for the i.MX53 QSB as
well as a working example on how to use hardware overlays on this platform?
If so I would like to know where can I get the mentioned framebuffer driver
as well as the hardware overlay example.
The framebuffer driver is part of the Genode OS framework and can be
found at repos/os/src/drivers/framebuffer/spec/imx53/*

It is automatically build when compiling drivers/framebuffer for the
corresponding build target, e.g., hw_imx53_qsb. Be aware of the fact
that it currently hardcodes to use the tablet's touchscreen display when
using the SABRE tablet, and to use the LCD board extension when using
i.MX53 QSB. It won't work with VGA connected to the i.MX53 QSB in the
current state.
Moreover, the mentioned overlay mechanism although also present in the
driver is only tested using the SABRE tablet settings.

Regards
Stefan
Post by Tiago Brito
Thanks, Tiago
[1] - An Exploration of ARM TrustZone Technology (
http://genode.org/documentation/articles/trustzone)
------------------------------------------------------------------------------
What NetFlow Analyzer can do for you? Monitors network bandwidth and traffic
patterns at an interface-level. Reveals which users, apps, and protocols are
consuming the most bandwidth. Provides multi-vendor support for NetFlow,
J-Flow, sFlow and other flows. Make informed decisions using capacity
planning reports. https://ad.doubleclick.net/ddm/clk/305295220;132659582;e
_______________________________________________
genode-main mailing list
https://lists.sourceforge.net/lists/listinfo/genode-main
--
Stefan Kalkowski
Genode Labs

http://www.genode-labs.com/ · http://genode.org/
Tiago Brito
2016-05-31 10:37:24 UTC
Permalink
Post by Stefan Kalkowski
Hello Tiago,
Hi Stefan, thanks for your response.
Post by Stefan Kalkowski
Post by Tiago Brito
Hi, I want to build a system based on the TZ_VMM example where a user space
Linux application can trigger a SMC. This SMC will tell the secure world to
display an image (and then return to the normal world after some time or
after the user explicitly triggers another world switch).
For now I want to start by using Linux on the Normal World, but I want to
eventually run Android in the Normal World.
The question which made me come to the mailing list is the following: in
your article regarding TrustZone [1], section "Additional device drivers",
you write that in order to run Android at almost-native performance in the
normal world you used hardware overlays and that you invested significant
development time into enabling this feature on the QSB.
Does this mean you have a working framebuffer driver for the i.MX53 QSB as
well as a working example on how to use hardware overlays on this platform?
If so I would like to know where can I get the mentioned framebuffer driver
as well as the hardware overlay example.
The framebuffer driver is part of the Genode OS framework and can be
found at repos/os/src/drivers/framebuffer/spec/imx53/*
It is automatically build when compiling drivers/framebuffer for the
corresponding build target, e.g., hw_imx53_qsb. Be aware of the fact
that it currently hardcodes to use the tablet's touchscreen display when
using the SABRE tablet, and to use the LCD board extension when using
i.MX53 QSB. It won't work with VGA connected to the i.MX53 QSB in the
current state.
What changes am I expected to do in order to make the framebuffer driver
work with the VGA connected to the i.MX53 QSB?

What I want to do with this is to have a simple command line application
running on linux (Normal World).
I want to keep the interaction between user and Linux as is (serial
connection - tz_vmm example).
This application calls some kernel module function which in turn triggers
an SMC.
Then the secure world (tz_vmm) detects the SMC from the application and
displays an image to the user (for now it could just fill the screen with
some color).
Post by Stefan Kalkowski
Moreover, the mentioned overlay mechanism although also present in the
driver is only tested using the SABRE tablet settings.
In the past I have adapted an On-board Diagnostics Suite from Freescale to
display images using my bare metal program.
I stripped the OBDS down to the standalone IPU and I sent the bits to the
configured MMIO for the framebuffer.
This wasn't that hard to do, but it's not really flexible. I had no user
interface, just plain BITMAP imagens which were displayed for some time.

I'm wondering if it's easier to modify your framebuffer driver in order to
support VGA (which would be a much flexible solution since I could then use
other components from Genode, like nitpicker - right?) or should I just try
to adapt the OBDS code to work inside Genode?
Post by Stefan Kalkowski
Regards
Stefan
Thanks again!!

Best Regards, Tiago



2016-05-31 10:44 GMT+01:00 Stefan Kalkowski <
Post by Stefan Kalkowski
Hello Tiago,
Post by Tiago Brito
Hi, I want to build a system based on the TZ_VMM example where a user
space
Post by Tiago Brito
Linux application can trigger a SMC. This SMC will tell the secure world
to
Post by Tiago Brito
display an image (and then return to the normal world after some time or
after the user explicitly triggers another world switch).
For now I want to start by using Linux on the Normal World, but I want to
eventually run Android in the Normal World.
The question which made me come to the mailing list is the following: in
your article regarding TrustZone [1], section "Additional device
drivers",
Post by Tiago Brito
you write that in order to run Android at almost-native performance in
the
Post by Tiago Brito
normal world you used hardware overlays and that you invested significant
development time into enabling this feature on the QSB.
Does this mean you have a working framebuffer driver for the i.MX53 QSB
as
Post by Tiago Brito
well as a working example on how to use hardware overlays on this
platform?
Post by Tiago Brito
If so I would like to know where can I get the mentioned framebuffer
driver
Post by Tiago Brito
as well as the hardware overlay example.
The framebuffer driver is part of the Genode OS framework and can be
found at repos/os/src/drivers/framebuffer/spec/imx53/*
It is automatically build when compiling drivers/framebuffer for the
corresponding build target, e.g., hw_imx53_qsb. Be aware of the fact
that it currently hardcodes to use the tablet's touchscreen display when
using the SABRE tablet, and to use the LCD board extension when using
i.MX53 QSB. It won't work with VGA connected to the i.MX53 QSB in the
current state.
Moreover, the mentioned overlay mechanism although also present in the
driver is only tested using the SABRE tablet settings.
Regards
Stefan
Post by Tiago Brito
Thanks, Tiago
[1] - An Exploration of ARM TrustZone Technology (
http://genode.org/documentation/articles/trustzone)
------------------------------------------------------------------------------
Post by Tiago Brito
What NetFlow Analyzer can do for you? Monitors network bandwidth and
traffic
Post by Tiago Brito
patterns at an interface-level. Reveals which users, apps, and protocols
are
Post by Tiago Brito
consuming the most bandwidth. Provides multi-vendor support for NetFlow,
J-Flow, sFlow and other flows. Make informed decisions using capacity
planning reports.
https://ad.doubleclick.net/ddm/clk/305295220;132659582;e
Post by Tiago Brito
_______________________________________________
genode-main mailing list
https://lists.sourceforge.net/lists/listinfo/genode-main
--
Stefan Kalkowski
Genode Labs
http://www.genode-labs.com/ · http://genode.org/
------------------------------------------------------------------------------
What NetFlow Analyzer can do for you? Monitors network bandwidth and traffic
patterns at an interface-level. Reveals which users, apps, and protocols are
consuming the most bandwidth. Provides multi-vendor support for NetFlow,
J-Flow, sFlow and other flows. Make informed decisions using capacity
planning reports. https://ad.doubleclick.net/ddm/clk/305295220;132659582;e
_______________________________________________
genode-main mailing list
https://lists.sourceforge.net/lists/listinfo/genode-main
Stefan Kalkowski
2016-05-31 11:59:48 UTC
Permalink
Post by Tiago Brito
Post by Stefan Kalkowski
Hello Tiago,
Hi Stefan, thanks for your response.
Post by Stefan Kalkowski
Post by Tiago Brito
Hi, I want to build a system based on the TZ_VMM example where a user
space
Post by Stefan Kalkowski
Post by Tiago Brito
Linux application can trigger a SMC. This SMC will tell the secure
world to
Post by Stefan Kalkowski
Post by Tiago Brito
display an image (and then return to the normal world after some time or
after the user explicitly triggers another world switch).
For now I want to start by using Linux on the Normal World, but I want
to
Post by Stefan Kalkowski
Post by Tiago Brito
eventually run Android in the Normal World.
The question which made me come to the mailing list is the following: in
your article regarding TrustZone [1], section "Additional device
drivers",
Post by Stefan Kalkowski
Post by Tiago Brito
you write that in order to run Android at almost-native performance in
the
Post by Stefan Kalkowski
Post by Tiago Brito
normal world you used hardware overlays and that you invested
significant
Post by Stefan Kalkowski
Post by Tiago Brito
development time into enabling this feature on the QSB.
Does this mean you have a working framebuffer driver for the i.MX53 QSB
as
Post by Stefan Kalkowski
Post by Tiago Brito
well as a working example on how to use hardware overlays on this
platform?
Post by Stefan Kalkowski
Post by Tiago Brito
If so I would like to know where can I get the mentioned framebuffer
driver
Post by Stefan Kalkowski
Post by Tiago Brito
as well as the hardware overlay example.
The framebuffer driver is part of the Genode OS framework and can be
found at repos/os/src/drivers/framebuffer/spec/imx53/*
It is automatically build when compiling drivers/framebuffer for the
corresponding build target, e.g., hw_imx53_qsb. Be aware of the fact
that it currently hardcodes to use the tablet's touchscreen display when
using the SABRE tablet, and to use the LCD board extension when using
i.MX53 QSB. It won't work with VGA connected to the i.MX53 QSB in the
current state.
What changes am I expected to do in order to make the framebuffer driver
work with the VGA connected to the i.MX53 QSB?
Well, I do not know otherwise it would be available as an option within
the driver already. You might study the quite voluminous documentation
of the IPU of Freescale, or trace I/O register accesses of a working
example, e.g., from the Linux kernel, or you combine both techniques.
Post by Tiago Brito
What I want to do with this is to have a simple command line application
running on linux (Normal World).
I want to keep the interaction between user and Linux as is (serial
connection - tz_vmm example).
This application calls some kernel module function which in turn triggers
an SMC.
Then the secure world (tz_vmm) detects the SMC from the application and
displays an image to the user (for now it could just fill the screen with
some color).
Post by Stefan Kalkowski
Moreover, the mentioned overlay mechanism although also present in the
driver is only tested using the SABRE tablet settings.
In the past I have adapted an On-board Diagnostics Suite from Freescale to
display images using my bare metal program.
I stripped the OBDS down to the standalone IPU and I sent the bits to the
configured MMIO for the framebuffer.
This wasn't that hard to do, but it's not really flexible. I had no user
interface, just plain BITMAP imagens which were displayed for some time.
I'm wondering if it's easier to modify your framebuffer driver in order to
support VGA (which would be a much flexible solution since I could then use
other components from Genode, like nitpicker - right?) or should I just try
to adapt the OBDS code to work inside Genode?
I really cannot answer that for you. I can only say that I had some
longstanding debug sessions when enabling the IPU together with the
SABRE tablet's display and the overlay mechanism. But maybe its less
complicated just to enable the VGA connector. And yes you are right that
you can use other Genode components then as well.

Regards
Stefan
Post by Tiago Brito
Post by Stefan Kalkowski
Regards
Stefan
Thanks again!!
Best Regards, Tiago
2016-05-31 10:44 GMT+01:00 Stefan Kalkowski <
Post by Stefan Kalkowski
Hello Tiago,
Post by Tiago Brito
Hi, I want to build a system based on the TZ_VMM example where a user
space
Post by Tiago Brito
Linux application can trigger a SMC. This SMC will tell the secure world
to
Post by Tiago Brito
display an image (and then return to the normal world after some time or
after the user explicitly triggers another world switch).
For now I want to start by using Linux on the Normal World, but I want to
eventually run Android in the Normal World.
The question which made me come to the mailing list is the following: in
your article regarding TrustZone [1], section "Additional device
drivers",
Post by Tiago Brito
you write that in order to run Android at almost-native performance in
the
Post by Tiago Brito
normal world you used hardware overlays and that you invested significant
development time into enabling this feature on the QSB.
Does this mean you have a working framebuffer driver for the i.MX53 QSB
as
Post by Tiago Brito
well as a working example on how to use hardware overlays on this
platform?
Post by Tiago Brito
If so I would like to know where can I get the mentioned framebuffer
driver
Post by Tiago Brito
as well as the hardware overlay example.
The framebuffer driver is part of the Genode OS framework and can be
found at repos/os/src/drivers/framebuffer/spec/imx53/*
It is automatically build when compiling drivers/framebuffer for the
corresponding build target, e.g., hw_imx53_qsb. Be aware of the fact
that it currently hardcodes to use the tablet's touchscreen display when
using the SABRE tablet, and to use the LCD board extension when using
i.MX53 QSB. It won't work with VGA connected to the i.MX53 QSB in the
current state.
Moreover, the mentioned overlay mechanism although also present in the
driver is only tested using the SABRE tablet settings.
Regards
Stefan
Post by Tiago Brito
Thanks, Tiago
[1] - An Exploration of ARM TrustZone Technology (
http://genode.org/documentation/articles/trustzone)
------------------------------------------------------------------------------
Post by Tiago Brito
What NetFlow Analyzer can do for you? Monitors network bandwidth and
traffic
Post by Tiago Brito
patterns at an interface-level. Reveals which users, apps, and protocols
are
Post by Tiago Brito
consuming the most bandwidth. Provides multi-vendor support for NetFlow,
J-Flow, sFlow and other flows. Make informed decisions using capacity
planning reports.
https://ad.doubleclick.net/ddm/clk/305295220;132659582;e
Post by Tiago Brito
_______________________________________________
genode-main mailing list
https://lists.sourceforge.net/lists/listinfo/genode-main
--
Stefan Kalkowski
Genode Labs
http://www.genode-labs.com/ · http://genode.org/
------------------------------------------------------------------------------
What NetFlow Analyzer can do for you? Monitors network bandwidth and traffic
patterns at an interface-level. Reveals which users, apps, and protocols are
consuming the most bandwidth. Provides multi-vendor support for NetFlow,
J-Flow, sFlow and other flows. Make informed decisions using capacity
planning reports. https://ad.doubleclick.net/ddm/clk/305295220;132659582;e
_______________________________________________
genode-main mailing list
https://lists.sourceforge.net/lists/listinfo/genode-main
------------------------------------------------------------------------------
What NetFlow Analyzer can do for you? Monitors network bandwidth and traffic
patterns at an interface-level. Reveals which users, apps, and protocols are
consuming the most bandwidth. Provides multi-vendor support for NetFlow,
J-Flow, sFlow and other flows. Make informed decisions using capacity
planning reports. https://ad.doubleclick.net/ddm/clk/305295220;132659582;e
_______________________________________________
genode-main mailing list
https://lists.sourceforge.net/lists/listinfo/genode-main
--
Stefan Kalkowski
Genode Labs

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