Needless to say, the availability of the in-kernel serial driver breaks isolation, which is why it is only included in the debugging version.


On 19 Apr 2016, at 10:16 , Alexander Kroh <> wrote:

Hi Oak,

The main difference between debug and release builds is the presence of the serial driver in the kernel and the ability of the kernel to print useful debugging information to the serial port. We use the kernel serial driver for user space applications in debug builds because it is available immediately; we can print to the console even if the user space serial driver has not yet been initialised.

These files implement the exynos serial driver:
libs/libplatsupport/src/mach/exynos/serial.c (clock configuration on line 386)

 - Alex

From: Norrathep Rattanavipanon []
Sent: Tuesday, 19 April 2016 05:47
To: Alexander Kroh
Cc:; GTS; El Defrawy, Karim M
Subject: Re: [seL4] Problem porting sel4 into XU4

Thanks Alex. it works now :D
I got this at the end:

162/162 tests passed.
All is well in the universe.

Ignoring call to sys_exit_group
Ignoring call to sys_rt_sigprocmask
Ignoring call to sys_gettid
sys_tkill assuming self kill

so the only difference between "build the kernel with debug support" and "release build" is user space apps use the kernel's serial driver?

And can you point me to the code for user app's serial driver?


On Sun, Apr 17, 2016 at 6:32 PM, Alexander Kroh <> wrote:
Hi Oak,

Forgive me for making assumptions about your experience.

It looks like the XU4 SoC (5422) is very similar to the XU (5410). The seL4 serial port drivers should be compatible. This is also supported by the fact that the elfloader seems to be able to use the XU serial driver successfully.

The garbage that you see is generally caused by a bad pointer (sending random data to the serial driver) or the result of improper baud rate configuration in the serial port driver. The elf loader and kernel (when built in debug mode) rely on u-boot for serial port initialisation and baud rate configuration, however, the user space driver does not. The user space driver makes no assumption about the initial state of the serial port and will attempt to (re)configure the baud rate. Unfortunately, the serial driver does make assumptions about other system components such as the frequency of the clock that drives the serial port. The frequency of this clock can vary between SoC and also between U-Boot versions.

The easiest way forward for you is to ensure that the kernel is being built in debug mode. This will result in the kernel serial driver being used for user space applications. The kernel serial driver does not reconfigure the baud rate:
Run "make menuconfig"
Navigate to     -> seL4 Kernel -> Build Options
Choose "Build type" and select "Build the kernel with debug support"
Navigate back to the main menu and then -> seL4 Libraries  -> libsel4platsupport
Select "Redirect putchar() to seL4_DebugPutchar()"
Run "make"

Let me know how you go

 - AlexK

From: Norrathep Rattanavipanon []
Sent: Friday, 15 April 2016 13:55
To: Alexander Kroh
Cc:; GTS; El Defrawy, Karim M
Subject: Re: [seL4] Problem porting sel4 into XU4

Hi Alex,

Thanks for your reply. I'm not really familiar with serial port. How can I tell if the config in needs changes?

This is the serial cable I'm using:


On Thu, Apr 14, 2016 at 5:23 PM, Alexander Kroh <<>> wrote:
Hi Oak,

Assuming that you are building a debug version of the kernel, the next line that should be printed is "Bootstrapping kernel".

Are any changes required for the serial port driver?

 - Alex

From: Devel [] on behalf of Norrathep Rattanavipanon [<>]
Sent: Friday, 15 April 2016 04:39
Cc: GTS; El Defrawy, Karim M
Subject: [seL4] Problem porting sel4 into XU4


I'm trying to port sel4 into ODROID-XU4 by following the wiki (

So far I can successfully enable HYP mode as indicated by
[    0.198398] [c0] CPU: All CPU(s) started in HYP mode.
[    0.198433] [c0] CPU: Virtualization extensions available.

as well as generate sel4test-driver-image-arm-exynos5 image.

However, we cant do fastboot in XU4 since it doesnt have usb otg.
Thus, I followed booting from sd card from copied the image into the first partition of sd card and do the following:

Exynos5422 # fatload mmc 0 0x48000000 sel4test-driver-image-arm-exynos5
Exynos5422 # bootelf 0x48000000

and here's the output:

## Starting application at 0x41000000 ...

ELF-loader started on CPU: ARM Ltd. Cortex-A7 r0p3

Switching CPU...

ELF-loader started on CPU: ARM Ltd. Cortex-A15 r2p3
ELF-loading image 'kernel'
ELF-loading image 'sel4test-driver'
Enabling hypervisor MMU and paging
Enabling MMU and paging
Jumping to kernel-image entry point...

�⧹I� AIq9 Fy   6        1)�a &I99)� 6�   Yq��摦P�^б�� F��^/A�yyyyyyyyy    �Y    �)aay ���XY�ǡ yQ) �q��O�a@     Ia)! Fy  aay    �) ��XY������ ��.6I�) & FvF�6fF�����VƑ�y�  �P�)aay ���XY�ǡ yQ) �q��O�a@  Ia

Is it expected? or am I doing something wrong? Any help would be appreciated.


Norrathep (Oak) Rattanavipanon
M.S. in Computer Science
University of California - Irvine


The information in this e-mail may be confidential and subject to legal professional privilege and/or copyright. National ICT Australia Limited accepts no liability for any damage caused by this email or its attachments.

Norrathep (Oak) Rattanavipanon
M.S. in Computer Science
University of California - Irvine

Norrathep (Oak) Rattanavipanon
M.S. in Computer Science
University of California - Irvine
Devel mailing list