FreeRTOS Support Archive
The FreeRTOS support forum is used to obtain active support directly from Real
Time Engineers Ltd. In return for using our top quality software and services for
free, we request you play fair and do your bit to help others too! Sign up
to receive notifications of new support topics then help where you can.
This is a read only archive of threads posted to the FreeRTOS support forum.
The archive is updated every week, so will not always contain the very latest posts.
Use these archive pages to search previous posts. Use the Live FreeRTOS Forum
link to reply to a post, or start a new support thread.
[FreeRTOS Home] [Live FreeRTOS Forum] [FAQ] [Archive Top] [October 2011 Threads] SVC_Handler and PendSV_HandlerPosted by vincent on October 21, 2011 I am working FreeRTOS in CortexM3 platform. As we know, we need define the following code in startup.s to make sure FREERTOS work. IF FreeRTOS = {TRUE} DCD vPortSVCHandler ; FreeRTOS SVC handler ELSE DCD SVC_Handler ; SVCall Handler ENDIF DCD DebugMon_Handler ; Debug Monitor Handler DCD 0 ; Reserved IF FreeRTOS = {TRUE} DCD xPortPendSVHandler ; FreeRTOS PendSV Handler ELSE DCD PendSV_Handler ; PendSV Handler ENDIF
But I found that USB otg code will call SVC_Handler and PendSV_Handler when communication with mass storage device. So, it seems not possible that merge USBOTG function in FreeRTOS environment …
Anyone meet this question ?
RE: SVC_Handler and PendSV_HandlerPosted by Richard on October 21, 2011 I don't know where your USBOTG software came from, not from me that's for sure. If it is using such a major core resource such as SVC then I would imagine it comes with instructions on how to integrate it into you code.
FreeRTOS only uses an SVC 0 call. It uses it once only, to start the scheduler, and then never uses it again. You therefore have three choices:
1) Move the vector table into RAM, then when the kernel has started, rewrite the SVC handler entry to use the USB OTG code.
2) Have two copies of the vector table, one in flash with the FreeRTOS handler as per normal, and one in RAM with the USB handler. Then, when the scheduler has started, remap the vector table using the vector base address register.
3) Update the FreeRTOS handler so it checks the SVC call parameter. Currently it assumes only one thing is using the SVC call, so it does not bother to check it and just assumes it is 0.
Regards.
RE: SVC_Handler and PendSV_HandlerPosted by vincent on October 24, 2011 Richard:
first, thanks for your adivise..the usb otg code from ST... I use ST cortex M3 platform..its OTG code refers to SVC handler. ST guys develop a new file system library to operate USB file operation...I think method3 is ok for me .do you help support it ? regards
RE: SVC_Handler and PendSV_HandlerPosted by vincent on October 26, 2011 Richard:
I checked FreeRTOS code and find that it call " svc 0" to trigger svc handler...so it is possible to get the parameter of svc handler. would you help to get the parameter in svc_handler function ... if this, I could dispath them to different svcaller .. thank you
Copyright (C) Amazon Web Services, Inc. or its affiliates. All rights reserved.
|