Renesas RL78 port

ChibiOS public support forum for topics related to the Renesas RL78 family of micro-controllers.

Moderators: lbednarz, DeusExMachina

lbednarz
Posts: 32
Joined: Sat Dec 18, 2010 11:36 am
Location: Poland

Renesas RL78 port

Postby lbednarz » Tue Jan 07, 2014 7:25 am

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

User avatar
DeusExMachina
Posts: 223
Joined: Tue Apr 03, 2012 5:08 am
Location: South Korea
Has thanked: 3 times
Been thanked: 3 times

Re: Renesas RL78 port

Postby DeusExMachina » Tue Jan 07, 2014 8:38 am

oh, great job! :)
What toolchain you used?

lbednarz
Posts: 32
Joined: Sat Dec 18, 2010 11:36 am
Location: Poland

Re: Renesas RL78 port

Postby lbednarz » Tue Jan 07, 2014 8:59 am

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.

User avatar
DeusExMachina
Posts: 223
Joined: Tue Apr 03, 2012 5:08 am
Location: South Korea
Has thanked: 3 times
Been thanked: 3 times

Re: Renesas RL78 port

Postby DeusExMachina » Wed Jan 08, 2014 2:43 am

Unfortunatelly, my RL78 board is on the way :( It will be great to run standard Chibios tests and benchmarks to achive port information.

User avatar
DeusExMachina
Posts: 223
Joined: Tue Apr 03, 2012 5:08 am
Location: South Korea
Has thanked: 3 times
Been thanked: 3 times

Re: Renesas RL78 port

Postby DeusExMachina » Wed Jan 08, 2014 6:04 am

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

lbednarz
Posts: 32
Joined: Sat Dec 18, 2010 11:36 am
Location: Poland

Re: Renesas RL78 port

Postby lbednarz » Wed Jan 08, 2014 8:20 pm

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.

lbednarz
Posts: 32
Joined: Sat Dec 18, 2010 11:36 am
Location: Poland

Re: Renesas RL78 port

Postby lbednarz » Sun Jan 12, 2014 7:06 pm

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

User avatar
Giovanni
Site Admin
Posts: 11386
Joined: Wed May 27, 2009 8:48 am
Location: Salerno, Italy
Has thanked: 430 times
Been thanked: 363 times
Contact:

Re: Renesas RL78 port

Postby Giovanni » Sun Jan 12, 2014 7:18 pm

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

lbednarz
Posts: 32
Joined: Sat Dec 18, 2010 11:36 am
Location: Poland

Re: Renesas RL78 port

Postby lbednarz » Sun Jan 12, 2014 7:29 pm

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

User avatar
Giovanni
Site Admin
Posts: 11386
Joined: Wed May 27, 2009 8:48 am
Location: Salerno, Italy
Has thanked: 430 times
Been thanked: 363 times
Contact:

Re: Renesas RL78 port

Postby Giovanni » Sun Jan 12, 2014 7:40 pm

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


Return to “RL78 Support”

Who is online

Users browsing this forum: No registered users and 1 guest