PIC32 Port Example

Has anyone successfully got the PIC32 example port going?
/fr-content-src/uploads/2019/07/index.html?http://www.freertos.org/port_PIC32_MIPS_MK4.html Thanks in advance

PIC32 Port Example

Has anyone successfully got the PIC32 example port going?
/fr-content-src/uploads/2019/07/index.html?http://www.freertos.org/port_PIC32_MIPS_MK4.html
Of course.  Your post is very unhelpful.  If you are having a problem, it is better to describe the problem, so people can actually suggest a solution.  Otherwise you are devaluing this resource. Please read the the FAQ http://www.freertos.org/FAQ-how-to-use-the-FreeRTOS-support-forum.html You can then choose to either post something helpful to yourself and other users, or not post. Regards.

PIC32 Port Example

Thanks for your reply and confidence in the PIC32 port. I downloaded the PIC32 port and MPLAB  IDE reported the port was written on the older v1.11 c32 PIC32 compiler. There have been significant changes to the C32 complier as documented here http://ww1.microchip.com/downloads/en/DeviceDoc/MPLABC32_v2_01_README.html QUESTION
Has the PIC32 port been tested with the “significant” changes in the C32 complier  now currently ver2.01? Thanks in advance   Joeygo

PIC32 Port Example

Sorry  and another question… Can / or has the PIC32 Port example been written for complier version independence as much as possible (since the C32 complier is improving in leaps and bounds) joeygo

PIC32 Port Example

The latest FreeRTOS version was tested with whatever the latest version of C32 was at the time it was released, which was V2. something.  Please just try it yourself, then come here for support it you have a problem.  There is no pre-sales support, as FreeRTOS is not for sale.
Can / or has the PIC32 Port example been written for complier version independence as much as possible
As much as possible, yes, but there are 14 tool chains supported, and tool chains change all the time.  There is no way of predicting what will happen in the future.  A few things have changed in the C32 compiler, normally I get pre-warning, but not always.  That is why users should report here when there is an issue, so it can be maintained.  If every user asked these questions before actually even trying the code, this forum would have millions of posts, and none of them would be answered because there would be no way of keeping up. Regards.

PIC32 Port Example

It works fine in 2.00 which is where the update to the underlying GNU tools was introduced. Changes to 2.01 look minor to me. What exactly is the problem you see? Andrew Crosland

PIC32 Port Example

It’s never worked for me. I tried before (about one year ago) and I gave up. Now I try to make it work again with version 7.1.0 and I got the same poor results.
My test freertos app always fail with alignment exception. My source is very simple: just 2 tasks doing nothing (infinite while loop). I tried all possible heap_x implementation, same results. Exceptions always occur when calling gvTaskStartScheduler(), exception is  in vPortStartFirstTask  at .line:
  lw      s6,8(s5)
(portRESTORE_CONTEXT code)
My toolchain: gcc version 3.4.4   Microchip MPLAB C Compiler for PIC32 MCUs v1.11-20100413 Marico

PIC32 Port Example

What did you use as a base for your project? There are a few PIC32 applications around that work with no problem if you have the same hardware that the application was written for. If you switch hardware you might have to change something, but you can use the same project as a start. Microchip even have an application note with some project files about using FreeRTOS with their free libraries, you could try those too.

PIC32 Port Example

I use simple diy pic32 test board with uart1 connected to a PC (I use uart1 for dubbuging messages). My freertos app has two task, one task should write ‘A’ char to uart1 and task2 should write ‘B’ (both tasks do it in a infinite loop).
After initailizing the hardware (SYSTEMConfigPerformance,uart1,etc) I call:
  INTEnableSystemMultiVectoredInt();
portDISABLE_INTERRUPTS();
xTaskCreate( prvTestTask1, ( const signed char * const ) “Tst1”,configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL );
xTaskCreate( prvTestTask2, ( const signed char * const ) “Tst2”, configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL );
vTaskStartScheduler(); and after one second after calling vTaskStartScheduler(); I got exception:
General Exception  bus error (load/store)  at a00010e4 And, of course, there is no life signs from task1 or task2 (even in that one second after vTaskStartScheduler call and exception occur). Is there exist a simple pic32 freertos demo with only 2 task and hardware board independend? PIC32 demo included in freertos source is complex, huge and hard to understand (and focused only to a specified hardware and mplab). 
Till now i figured out, that maybe there is a problem with vT1InterruptHandler, which is never called. I rerouted T1 interrupt to tempoerary ISR to test it, and  T1 int.  works only when I remove  portDISABLE_INTERRUPTS(); from my code.
But without portDISABLE_INTERRUPTS(); I got other exception:
General Exception  bus error (load/store)  at 0
(looks liike a null pointer?)
Do I have to always portDISABLE_INTERRUPTS(); after INTEnableSystemMultiVectoredInt()?

PIC32 Port Example

OK, I figured out where the problem was, in the port.c file there is a variable with initial value:
volatile unsigned portBASE_TYPE uxInterruptNesting = 0x01; for uknown reason my pic32mx-gcc won’t initialize variables declared out of functions scope, so  in  vPortStartFirstTask() call uxInterruptNesting was -1 (instead of 1). 

PIC32 Port Example

Sounds like you are using a bum start up file. I would recommend fixing that so it sets up the C run time environment properly before getting too deep into your project because you don’t know how many variables have the wrong values.

PIC32 Port Example

http://www.joaomelo.hydroimprovement.com/ Check this out, I used his example to run on my PIC32 ESK.

PIC32 Port Example

freeRTOS v.7.1.0 along with  c32 PIC32  v2.02 with MPLAB IDE v8.83 works fine on my PIC32 Starter kit . The three LEDs re blinking using the LED task. I have used the PIC32MX_MPLAB port and changed the LED port to PORTD since that port is used by starter kit for LEDs

PIC32 Port Example

Hi,
One more update, when I tried to run the vAltStartComTestTasks() on  PIC32MX795F512(chiKITMAX32board ) , the board was hanging(no blink of port D LED. I have modified the UART2 ISR to send a blank char ‘E’, in the QUE empty condition as below.
With this change, the blink happens and the UART2 is sending characters. I have disabled the check tasks.
There is  a  statement in microchip that interrupt would get generated “immediately’ when the UART is enabled. The output from UAR2  is as given below the code snippet. while( !( U2STAbits.UTXBF ) )
{
if( xQueueReceiveFromISR( xCharsForTx, &cChar, &xHigherPriorityTaskWoken ) == pdTRUE )
{
// Send the next character queued for Tx.
U2TXREG = cChar;
// U2TXREG = ‘A’; // test code
}
else
{
// Queue empty, nothing to send.
xTxHasEnded = pdTRUE;
U2TXREG = ‘E’;  //test code
break;
}
} EEEEEEEEEEABCDEFGHIJKLMNOPQRSTUVWXEEEEEEEEEEEEEEEEEEEEEEEEABCDEFGHIJKLMNOPQRSTUVWXEEEEEEEEEEEEEEEEEEEEEEEEEEEABCDEFGHIJKLMNOPQRSTUVWXEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEABCDEFGHIJKLMNOPQRSTUVWXEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEABCDEFGHIJKLMNOPQRSTUVWXEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE

PIC32 Port Example

Note that, if you are using the UART driver from the Explorer16 demo, it is written for a PIC32MX360F512 and will not work correctly on the 795 part (because the UART and/or interrupt controller implementation is different).  I can’t remember exactly what the changes needed are, but it has something to do with when the interrupt is cleared.  Try clearing the interrupt as the first action in the ISR. Regards.

PIC32 Port Example

I recently upgraded to MPLAB 8.86 and I also downloaded the August 2012 source code.  The I now get the following warning: Executing: “C:Program FilesMicrochipMPLAB C32 Suitebinpic32-gcc.exe” -mprocessor=32MX795F512L -c -MMD -MF”./outputport_asm.d” -I”.” -I”.” -I”..commoninclude” -I”..\..sourceportablemplabpic32mx” -I”..\..sourceinclude” -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1 “..\..SourceportableMPLABPIC32MXport_asm.S” -o”./outputport_asm.o” -I”..\..SourceportableMPLABPIC32MX” -I”.” -Wa,-defsym=__DEBUG=1,-defsym=__MPLAB_DEBUGGER_PK3=1,-keep-locals,-gdwarf-2
..\..SourceportableMPLABPIC32MXport_asm.S: Assembler messages:
..\..SourceportableMPLABPIC32MXport_asm.S:72: Warning: Quoted section flags are deprecated, use attributes instead I don’t get this warning when using MPLAB 8.76.  There  is no information on the internet that I can find that describes how to use attributes to eliminate this warning concerning depreciated code The line of code marked is: .section .FreeRTOS, “ax”, @progbits

PIC32 Port Example

downloaded the August 2012 source code
I presume you mean the FreeRTOS source code. The warnings are a result of changes made to the compiler.  FreeRTOS was updated to work with the latest compiler.  If you are using the latest FreeRTOS source code, and the latest XC32 compiler, then you should not get these warnings. Regards.