any one help me to edit the linker file for my project.actually i am using pic 18f26j50 with c18 compiler in mplab i am getting this error while compile my file
Error – section ‘.udata_heap_1.o’ can not fit the section. Section ‘.udata_heap_1.o’ length=0x00000400
how to rectify this one…
udata_heap_1.o’ can not fit the section.
udata_heap_1.o’ can not fit the section.
Look at the file 18f452.lkr in FreeRTOS/Demo/PIC18_MPLAB. It creates a large data bank called BIG_BLOCK to fit the FreeRTOS heap, you will have to do a similar thing in your linker script.
Note that there are (documented) problems when a stack allocated from this big block crosses a page boundary, although you will find fixes for this in FreeRTOS Interactive and other locations – but still the PIC18 is far from an ideal target to run any kind of pre-emptive RTOS because of its paging scheme and hardware stack.
Regards.
udata_heap_1.o’ can not fit the section.
dear sir i have edited my linker file for pic18f26j50 and it also compiled successfully but the problem now is its not working with hardware..i am getting some warnings.the warnings are shown below…
D:sathishprogramsFreeRTOSV7.1.1led.c:42:Warning type qualifier mismatch in assignment
D:sathishprogramsFreeRTOSV7.1.1led.c:43:Warning type qualifier mismatch in assignment
D:sathishprogramsFreeRTOSV7.1.1led.c:44:Warning type qualifier mismatch in assignment my program is shown below.. #include “p18f26j50.h” #include “.SourceincludeFreeRTOS.h”
#include “.Sourceincludetask.h”
#include “delays.h” #pragma config WDTEN = OFF //WDT disabled (enabled by SWDTEN bit)#elif defined(PIC18F26J50_PIM) || defined(PIC18F_STARTER_KIT_1) || defined(PIC18F47J53_PIM)
// defined(PIC18F26J50_PIM) || defined(PIC18F_STARTER_KIT_1) || defined(PIC18F47J53_PIM)
#pragma config PLLDIV = 1 //Divide by 3 (12 MHz oscillator input)
#pragma config STVREN = ON //stack overflow/underflow reset enabled
#pragma config XINST = OFF //Extended instruction set disabled
#pragma config CPUDIV = OSC1 //No CPU system clock divide
#pragma config CP0 = ON //Program memory is not code-protected
#pragma config OSC = HSPLL //HS oscillator, PLL enabled, HSPLL used by USB
#pragma config T1DIG = OFF //Sec Osc clock source may not be selected, unless T1OSCEN = 1
#pragma config LPT1OSC = OFF //high power Timer1 mode
#pragma config FCMEN = OFF //Fail-Safe Clock Monitor disabled
#pragma config IESO = OFF //Two-Speed Start-up disabled
#pragma config WDTPS = 32768 //1:32768
#pragma config DSWDTOSC = INTOSCREF //DSWDT uses INTOSC/INTRC as clock
#pragma config RTCOSC = T1OSCREF //RTCC uses T1OSC/T1CKI as clock
#pragma config DSBOREN = OFF //Zero-Power BOR disabled in Deep Sleep
#pragma config DSWDTEN = OFF //Disabled
#pragma config DSWDTPS = 8192 //1:8,192 (8.5 seconds)
#pragma config IOL1WAY = OFF //IOLOCK bit can be set and cleared
#pragma config MSSP7B_EN = MSK7 //7 Bit address masking
#pragma config WPFP = PAGE_1 //Write Protect Program Flash Page 0
#pragma config WPEND = PAGE_0 //Start protection at page 0
#pragma config WPCFG = OFF //Write/Erase last page protect Disabled
#pragma config WPDIS = OFF //WPFP, WPEND, and WPCFG bits ignored
void vLed1( void *pvParameters );
void vLed2( void *pvParameters );
void vLed3( void *pvParameters ); void main(void)
{
TRISA=0;
xTaskCreate(vLed1,”Led 1″, 400, NULL, 1, NULL );
xTaskCreate(vLed2,”Led 2″, 400, NULL, 1, NULL );
xTaskCreate(vLed3,”Led 3″, 400, NULL, 1, NULL );
vTaskStartScheduler();
for(;;);
} void vLed1( void *pvParameters )
{
for(;;)
{
PORTAbits.RA0=1;
Delay10KTCYx(250);
PORTAbits.RA0=0;
Delay10KTCYx(250);
}
}
void vLed2( void *pvParameters )
{
for(;;)
{
PORTAbits.RA1=1;
Delay10KTCYx(500);
PORTAbits.RA1=0;
Delay10KTCYx(500);
}
}
void vLed3( void *pvParameters )
{
for(;;)
{
PORTAbits.RA2=1;
Delay10KTCYx(1000);
PORTAbits.RA2=0;
Delay10KTCYx(1000);
}
} actually i am getting warning in task creation…the task creation in my program is correct r not..actually i am new to rtos…so i cant find out the problem help me…
thank u in advance…
sathish.N
D:sathishprogramsFreeRTOSV7.1.1led.c:42:Warning type qualifier mismatch in assignment
D:sathishprogramsFreeRTOSV7.1.1led.c:43:Warning type qualifier mismatch in assignment
D:sathishprogramsFreeRTOSV7.1.1led.c:44:Warning type qualifier mismatch in assignment my program is shown below.. #include “p18f26j50.h” #include “.SourceincludeFreeRTOS.h”
#include “.Sourceincludetask.h”
#include “delays.h” #pragma config WDTEN = OFF //WDT disabled (enabled by SWDTEN bit)#elif defined(PIC18F26J50_PIM) || defined(PIC18F_STARTER_KIT_1) || defined(PIC18F47J53_PIM)
// defined(PIC18F26J50_PIM) || defined(PIC18F_STARTER_KIT_1) || defined(PIC18F47J53_PIM)
#pragma config PLLDIV = 1 //Divide by 3 (12 MHz oscillator input)
#pragma config STVREN = ON //stack overflow/underflow reset enabled
#pragma config XINST = OFF //Extended instruction set disabled
#pragma config CPUDIV = OSC1 //No CPU system clock divide
#pragma config CP0 = ON //Program memory is not code-protected
#pragma config OSC = HSPLL //HS oscillator, PLL enabled, HSPLL used by USB
#pragma config T1DIG = OFF //Sec Osc clock source may not be selected, unless T1OSCEN = 1
#pragma config LPT1OSC = OFF //high power Timer1 mode
#pragma config FCMEN = OFF //Fail-Safe Clock Monitor disabled
#pragma config IESO = OFF //Two-Speed Start-up disabled
#pragma config WDTPS = 32768 //1:32768
#pragma config DSWDTOSC = INTOSCREF //DSWDT uses INTOSC/INTRC as clock
#pragma config RTCOSC = T1OSCREF //RTCC uses T1OSC/T1CKI as clock
#pragma config DSBOREN = OFF //Zero-Power BOR disabled in Deep Sleep
#pragma config DSWDTEN = OFF //Disabled
#pragma config DSWDTPS = 8192 //1:8,192 (8.5 seconds)
#pragma config IOL1WAY = OFF //IOLOCK bit can be set and cleared
#pragma config MSSP7B_EN = MSK7 //7 Bit address masking
#pragma config WPFP = PAGE_1 //Write Protect Program Flash Page 0
#pragma config WPEND = PAGE_0 //Start protection at page 0
#pragma config WPCFG = OFF //Write/Erase last page protect Disabled
#pragma config WPDIS = OFF //WPFP, WPEND, and WPCFG bits ignored
void vLed1( void *pvParameters );
void vLed2( void *pvParameters );
void vLed3( void *pvParameters ); void main(void)
{
TRISA=0;
xTaskCreate(vLed1,”Led 1″, 400, NULL, 1, NULL );
xTaskCreate(vLed2,”Led 2″, 400, NULL, 1, NULL );
xTaskCreate(vLed3,”Led 3″, 400, NULL, 1, NULL );
vTaskStartScheduler();
for(;;);
} void vLed1( void *pvParameters )
{
for(;;)
{
PORTAbits.RA0=1;
Delay10KTCYx(250);
PORTAbits.RA0=0;
Delay10KTCYx(250);
}
}
void vLed2( void *pvParameters )
{
for(;;)
{
PORTAbits.RA1=1;
Delay10KTCYx(500);
PORTAbits.RA1=0;
Delay10KTCYx(500);
}
}
void vLed3( void *pvParameters )
{
for(;;)
{
PORTAbits.RA2=1;
Delay10KTCYx(1000);
PORTAbits.RA2=0;
Delay10KTCYx(1000);
}
} actually i am getting warning in task creation…the task creation in my program is correct r not..actually i am new to rtos…so i cant find out the problem help me…
thank u in advance…
sathish.N