SABRE tablet camera

Stefan Kalkowski stefan.kalkowski at ...1...
Tue Sep 13 13:27:14 CEST 2016


On 09/12/2016 06:35 PM, rijurekha at ...71... wrote:
> Currently, I am browsing the android source code folders, to find "camera
> device driver" related code. What is a more systematic way to understand
> what happens at the systems level between "pressing a camera button" --
> "pressing the capture button" -- "saving the picture" in an android
> phone/tablet?
> Can something like systrace 
> (, be
> used to see what kernel functions are invoked? Is such tracing supported
> on android 2.3.7, on which the demo is based? Did you use any such tool to
> understand the necessary code related to touchscreen/display/capacitive
> sensors, which you then moved to the secure world?

I don't know. I never used systrace before (only strace). When looking
at the behaviour of the Linux kernel drivers for IPU and touchscreen, I
simply traced all memory mapped I/O accesses by introducing
corresponding printks manually (__raw_read* and __raw_write* in io.h).
By studying the output, the documentation, and in case of doubts the
Linux kernel code, I implemented the corresponding IPU functionality.


> Thanks!
> Riju
>> I can run the SABRE tablet Genode demo:
>> The demo is on SD card, and the android is on e-mmc. According to
>>, I changed the
>> e-mmc android to imx-android-r10.4_bundle_BSP.tar.gz, so that it matches
>> the android kernel in the genode demo.
>> I can use the front camera of the SABRE tablet to take pictures, when
>> android is started directly from emmc (sw26 and sw28 reconfigured). But
>> when I boot the genode demo and then start android from within it,
>> pressing the camera icon says “Cannot connect to camera”.
>> Question 1: I understand that the genode demo needed the display,
>> touchscreen and capacitive sensors kernel code to be moved to secure
>> world. Did that screw up the camera functionality of the android in the
>> normal world? Maybe the camera needs the display for preview, which it
>> cannot get? Did your secure-world implementation of the
>> display/touchscreen/capacitive sensor drivers come with some APIs, that
>> the normal world should call to access forbidden resources? Are those APIs
>> part of the normal world kernel and uses the smc() functionality to
>> request forbidden resources? Does that mean that the camera is failing, as
>> it is not calling the proper API to request the display?
>> Question 2: My goal is to move the camera device driver to the secure
>> world. At, under the
>> section “Additional Device Driver”, you say that “The task of CREATING the
>> drivers…”. I understand that the android in e-mmc already supported the
>> display, touchscreen and capacitive sensors. So couldn’t you look at the
>> android source and see where these drivers are, instead of creating these
>> drivers using the documentation? Since I need to repeat the process of
>> moving the camera device drivers from the normal to the secure world, some
>> more details of how you approached the problem for
>> touchscreen/display/capacitive sensor will be super useful. For example,
>> looking at the source code of imx-android-r10.4_bundle_BSP.tar.gz, I can
>> see
>> $ls ~/myandroid/hardware/mx5x/libcamera/
>>     Camera_pmem.cpp  CaptureDeviceInterface.cpp
>> JpegEncoderInterface.h   PostProcessDeviceInterface.cpp  PP_ipulib.h
>>      V4l2CsiDevice.cpp
>> CameraHal.cpp  Camera_pmem.h    CaptureDeviceInterface.h
>> JpegEncoderSoftware.cpp  PostProcessDeviceInterface.h
>> V4l2CapDeviceBase.cpp  V4l2CsiDevice.h
>> CameraHal.h    Camera_utils.h   JpegEncoderInterface.cpp
>> JpegEncoderSoftware.h    PP_ipulib.cpp
>> V4l2CapDeviceBase.h    V4l2UVCDevice.h
>> Do some of those needed to be moved to the secure world kernel, or do we
>> need to write a camera device driver from scratch?
>> Thanks!
>> Riju
>> ------------------------------------------------------------------------------
>> _______________________________________________
>> genode-main mailing list
>> genode-main at
> ------------------------------------------------------------------------------
> 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.
> _______________________________________________
> genode-main mailing list
> genode-main at

Stefan Kalkowski
Genode Labs ·

More information about the users mailing list