freeRTOS port to RH850

Hi

1.Do we have working port of freeRTOS to RH850 ?

2.Do we have any document that describes porting steps such as creating startup code, configuring tick timer interrupts, stack and so on… ?

Many Thanks,

Pr

Hi,

We dont have an officially supported for Renesas RH850, however you can find contributions to this port in forum post here:

Hi

Thank you for the pointers , can you share path to a downloadable version of this v10.4 that contains port for Renesas RH850 ? We could find it elsewhere

also, if we take latest n greatest version of the freertos , is this port of renesas rh850 still exist as a standard part of the supported micros?
Especially this is of relevance when we get success with v10.4 and want to migrate to latest freertos

Thanks,
Pra

Not sure if this is the same pointer Ravi provided one post above the last, just in a different thread: FreeRTOS Ported to RH850

There isn’t an RH850 in the “officially supported ports” as defined here - Officially supported and contributed FreeRTOS code - some definitions - but if there is a need and interest we could look at including one under one of the third party contributed categories - defined on the same page.

hi

Thanks for the reply

For now we need proving freertos kernel on our Renesas RH850 target and do what it takes to get a stable port. We are also unsure as to whether we should build on a freertos version that had earlier ben proven on RH850 ( that is V10.4) or take a route with picking up latest kernel versions.

Regards,
Pra

Hi,

Is the freeRTOS port to RH850 compliant to be native POSIX ? Or if we want to make it POSIX styled do we need to re work on this port?

Thanks

FreeRTOS does not natively use the POSIX threading API, but there is a wrapper that implements a subset of POSIX threading calls on top of FreeRTOS. The wrapper is not complete or regularly tested though.

Hi ,

I am using rh850 micrcontroller and I have ported this FreeRTOS

I have created a 3 UART Tasks which send data on UART.

In that I have used a vTaskDelay() function, code gets stuck in that function and never comes out of that

Can you please provide help in these ?

Hi @keyur_khatri
Can you provide your complete code ? Is it possible to attach a debugger and see where the code is stuck inside vTaskDelay() ? Do you have configASSERT defined? Also ensure that the system tick timer is configured correctly and the tick interrupt is firing.

Thank for response.

Please check below attach image for reference where the code gets stuck

I have attached the RTOS code on which i am working.
Please check that code and help me if possible

RH850_RTOS.zip (3.2 MB)

You likely need to update your boot.asm file and install vPortYield as TRAP0 handler. Try to update the vector table in the boot.asm file to the following:

;-----------------------------------------------------------------------------
;	exception vector table
;-----------------------------------------------------------------------------
	.section "RESET", text
	.align	512
	jr32	__start ; RESET

	.align	16
	syncp
	jr32	_Dummy ; SYSERR

	.align	16
	jr32	_Dummy

	.align	16
	jr32	_Dummy ; FETRAP

	.align	16
	jr32	vPortYield ; TRAP0 - Install vPortYield as TRAP0 handler.

	.align	16
	jr32	_Dummy_EI ; TRAP1

	.align	16
	jr32	_Dummy ; RIE

	.align	16
	syncp
	jr32	_Dummy_EI ; FPE/FXE

	.align	16
	jr32	_Dummy ; UCPOP

	.align	16
	jr32	_Dummy ; MIP/MDP

	.align	16
	jr32	_Dummy ; PIE

	.align	16
	jr32	_Dummy

	.align	16
	jr32	_Dummy ; MAE

	.align	16
	jr32	_Dummy

	.align	16
	syncp
	jr32	_Dummy ; FENMI

	.align	16
	syncp
	jr32	_Dummy ; FEINT

	.align	16
	syncp
	jr32	_Dummy_EI ; INTn(priority0)

	.align	16
	syncp
	jr32	_Dummy_EI ; INTn(priority1)

	.align	16
	syncp
	jr32	_Dummy_EI ; INTn(priority2)

	.align	16
	syncp
	jr32	_Dummy_EI ; INTn(priority3)

	.align	16
	syncp
	jr32	_Dummy_EI ; INTn(priority4)

	.align	16
	syncp
	jr32	_Dummy_EI ; INTn(priority5)

	.align	16
	syncp
	jr32	_Dummy_EI ; INTn(priority6)

	.align	16
	syncp
	jr32	_Dummy_EI ; INTn(priority7)

	.align	16
	syncp
	jr32	_Dummy_EI ; INTn(priority8)

	.align	16
	syncp
	jr32	_Dummy_EI ; INTn(priority9)

	.align	16
	syncp
	jr32	_Dummy_EI ; INTn(priority10)

	.align	16
	syncp
	jr32	_Dummy_EI ; INTn(priority11)

	.align	16
	syncp
	jr32	_Dummy_EI ; INTn(priority12)

	.align	16
	syncp
	jr32	_Dummy_EI ; INTn(priority13)

	.align	16
	syncp
	jr32	_Dummy_EI ; INTn(priority14)

	.align	16
	syncp
	jr32	_Dummy_EI ; INTn(priority15)

	.section "EIINTTBL", const
	.align	512
	.dw	#_Dummy_EI ; INT0
	.dw	#_Dummy_EI ; INT1
	.dw	#_Dummy_EI ; INT2
	.rept	2048 - 3
	.dw	#_Dummy_EI ; INTn
	.endm

	.section ".text", text
	.align	2
_Dummy:
	br	_Dummy

_Dummy_EI:
	br	_Dummy_EI

Thanks for response I am able to see the the improvement here now it is not gets stuck in vTaskDelay function.

But when it goes to execute UART task 3 then it got stuck in vPortFree function.
Kindly check the attached image for reference

You are using heap_1 which does not allow freeing memory. Switch to heap_4 instead.

Thanks for the response. Now it is working correctly and task is executing properly

Appreciate your genuine Response @aggarg

Thankyou