Page 1 of 4

Renesas RL78 port

Posted: Tue Jan 07, 2014 7:25 am
by lbednarz
Hello,

RL78 port for YRPBRL78G13 Promotion Board is added in repository. At the moment there are no HAL drivers yet, so only led blinking as a demo is available.

Link to sources:
http://svn.code.sf.net/p/chibios/svn/branches/rl78_dev/

Regards,
lb

Re: Renesas RL78 port

Posted: Tue Jan 07, 2014 8:38 am
by DeusExMachina
oh, great job! :)
What toolchain you used?

Re: Renesas RL78 port

Posted: Tue Jan 07, 2014 8:59 am
by lbednarz
I used KPIT Cummins's toolchain. You can download one from http://www.kpitgnutools.com/,
and the demo project is for Code::Blocks only for now.

Re: Renesas RL78 port

Posted: Wed Jan 08, 2014 2:43 am
by DeusExMachina
Unfortunatelly, my RL78 board is on the way :( It will be great to run standard Chibios tests and benchmarks to achive port information.

Re: Renesas RL78 port

Posted: Wed Jan 08, 2014 6:04 am
by DeusExMachina
I think that R5F100xE.ld script should be modified, esspecialy regarding ARM-related stuf

Code: Select all

  .ARM.extab :
    {
        *(.ARM.extab* .gnu.linkonce.armextab.*)
    } > flash

    .ARM.exidx : {
        PROVIDE(__exidx_start = .);
        *(.ARM.exidx* .gnu.linkonce.armexidx.*)
        PROVIDE(__exidx_end = .);
     } > flash

Re: Renesas RL78 port

Posted: Wed Jan 08, 2014 8:20 pm
by lbednarz
Right, ARM stuff is unnecessary.
Benchmarking will be possible when serial driver will be ready. I think it can be done within few days, then we'll know if everything works well.

Re: Renesas RL78 port

Posted: Sun Jan 12, 2014 7:06 pm
by lbednarz
After a few fixes RL78 port is almost ready I think.
Sources will be updated after a little cleanup.

Here are the results of tests for comparison with other boards:

Code: Select all

*** ChibiOS/RT test suite
***
*** Kernel:       2.6.1
*** Compiled:     Jan 12 2014 - 18:38:04
*** Compiler:     GCC 4.8-GNURL78_v13.02 20131003 (MP1) (Red Hat/devo) [trunk revision 194496]
*** Architecture: RL78
*** Test Board:   Renesas YRPBRL78G13

----------------------------------------------------------------------------
--- Test Case 1.1 (Threads, enqueuing test #1)
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 1.2 (Threads, enqueuing test #2)
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 1.3 (Threads, priority change)
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 1.4 (Threads, delays)
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 2.1 (Semaphores, enqueuing)
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 2.2 (Semaphores, timeout)
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 2.3 (Semaphores, atomic signal-wait)
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 2.4 (Binary Semaphores, functionality)
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 3.1 (Mutexes, priority enqueuing test)
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 3.2 (Mutexes, priority inheritance, simple case)
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 3.3 (Mutexes, priority inheritance, complex case)
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 3.4 (Mutexes, priority return)
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 3.5 (Mutexes, status)
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 3.6 (CondVar, signal test)
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 3.7 (CondVar, broadcast test)
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 3.8 (CondVar, boost test)
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 4.1 (Messages, loop)
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 5.1 (Mailboxes, queuing and timeouts)
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 6.1 (Events, registration and dispatch)
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 6.2 (Events, wait and broadcast)
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 6.3 (Events, timeouts)
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 10.1 (Queues, input queues)
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 10.2 (Queues, output queues)
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 11.1 (Benchmark, messages #1)
--- Score : 16470 msgs/S, 32940 ctxswc/S
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 11.2 (Benchmark, messages #2)
--- Score : 236 msgs/S, 472 ctxswc/S
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 11.3 (Benchmark, messages #3)
--- Score : 236 msgs/S, 472 ctxswc/S
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 11.4 (Benchmark, context switch)
--- Score : 280760 ctxswc/S
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 11.5 (Benchmark, threads, full cycle)
--- Score : 49765 threads/S
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 11.6 (Benchmark, threads, create only)
--- Score : 67157 threads/S
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 11.7 (Benchmark, mass reschedule, 5 threads)
--- Score : 20918 reschedules/S, 125508 ctxswc/S
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 11.8 (Benchmark, round robin context switching)
--- Score : 156180 ctxswc/S
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 11.9 (Benchmark, I/O Queues throughput)
--- Score : 224064 bytes/S
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 11.10 (Benchmark, virtual timers set/reset)
--- Score : 220766 timers/S
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 11.11 (Benchmark, semaphores wait/signal)
--- Score : 338472 wait+signal/S
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 11.12 (Benchmark, mutexes lock/unlock)
--- Score : 256744 lock+unlock/S
--- Result: SUCCESS
----------------------------------------------------------------------------
--- Test Case 11.13 (Benchmark, RAM footprint)
--- System: 310 bytes
--- Thread: 36 bytes
--- Timer : 10 bytes
--- Semaph: 6 bytes
--- EventS: 2 bytes
--- EventL: 6 bytes
--- Mutex : 8 bytes
--- CondV.: 4 bytes
--- Queue : 18 bytes
--- MailB.: 20 bytes
--- Result: SUCCESS
----------------------------------------------------------------------------

Final result: SUCCESS

Re: Renesas RL78 port

Posted: Sun Jan 12, 2014 7:18 pm
by Giovanni
Good job!

The context switch is not bad but 11.2 and 11.3 seems to be unusually low, this could be a compiler problem. Is the compiler a GCC derivative?

Giovanni

Re: Renesas RL78 port

Posted: Sun Jan 12, 2014 7:29 pm
by lbednarz
Thanks :)

I've also noticed that 11.2 and 11.3 much differ from 11.1, but I don't know yet why. These should be comparable, right?
I'm using GCC toolchain from KPIT Cummins and optimizer option -Os.

lb

Re: Renesas RL78 port

Posted: Sun Jan 12, 2014 7:40 pm
by Giovanni
Just an hypothesis it would be an hell of compiler problem resulting in a 100x slower score :)

It could be something like an integer overflow somewhere, even in the test code, resulting in a truncated result.

Giovanni