I want to make a port for LPC2378 on the Keil MCB2300 for the Keil uVision development tool. I have a full version. From where can I start so that I can do it fast. I tried starting from the ARM7_LPC2129_Keil example who came with version 4.5.0 but I keep having errors (like portable files who are not included (…\…\Source\include\portable.h(188): error: #20: identifier "portSTACK_TYPE" is undefined)). I also tried starting from the SAM7 example, but had the same linking problems.
Can I build a complete project from scratch, just with copying the necesery files?
If I have it working i’ll send it to include it in a next version. Lot’s of people could use a working example for this dev tool i think.
Yes I have it, but I cannot get it running. I keep getting errors because some identifiers cannot be found. I tried to search for them myself but didn’t work…
If someone has a working example of SAM7 and is sure it is compiling can you send it to me (karel _at postron dot be). So I can test it. Perhaps my libraries aren’t ok? In the options there weren’t any include paths filled in. I tried to add some, but I think I still miss some…
about the portable.h error (and probably a lot of related "identifier" errors) search for the portmacro.h
in that file there’s the include path of the portable.h. but it needs to be enabled with the correct define (to be honest you can just put “portable.h” anywhere inside the project and just make sure the compiler knows where it is ;-)).
in portable.h there are things like "portSTACK_TYPE" or "portBASE_TYPE" etc. defined. so as soon as your compiler finds that header file a lot of errors should be done (and prolly new coming up as its always when porting :-P)
I have include the portable.h and portmacro.h (from keil arm7) in the project; also the AT91SAM7S64_inc.h and lib_AT91SAM7S64.h files. Now almost all my errors are gone but I always have following warning:
…\ARM7_AT91SAM7S64_KEIL_RV\AT91SAM7S64_inc.h(71): warning: #47-D: incompatible redefinition of macro "AT91C_AIC_PRIOR" (declared at line 192 of "…\…\Source\portable\Keil\SAM7\AT91SAM7S64.h")
This is probably because I include the lib_AT91SAM7S64.h in my AT91SAM7S64_inc.h file wich is linked a couple of times. How can I avoid this problem? Where should I include this file?
I do also have 30 errors with the same fault:
…\ARM7_AT91SAM7S64_KEIL_RV\lib_AT91SAM7S64.h(311): error: #134: expected a field name
for example in the following code:
308 __inline int AT91F_PDC_IsTxEmpty ( // \return return 1 if transfer is complete
309 AT91PS_PDC pPDC ) // \arg pointer to a PDC controller
310 {
311 return !(pPDC->PDC_TCR); This gives the error
312 }
What is wrong? It’s code from the SAM7 example who was delivered to me and is normally working with Keil RVDM compiler (I think)
in file: lib_AT91SAM7S64.h the pointer is being copied to pAic in the first line of Configuration
__inline unsigned int AT91F_AIC_ConfigureIt (
AT91PS_AIC pAic, // \arg pointer to the AIC registers
unsigned int irq_id, // \arg interrupt number to initialize
unsigned int priority, // \arg priority to give to the interrupt
unsigned int src_type, // \arg activation and sense of activation
void (*newHandler) () ) // \arg address of the interrupt handler
{
unsigned int oldHandler;
unsigned int mask ;
oldHandler = pAic->AIC_SVR[irq_id];
mask = 0x1 << irq_id ;
//* Disable the interrupt on the interrupt controller
pAic->AIC_IDCR = mask ;
//* Save the interrupt handler routine pointer and the interrupt priority
pAic->AIC_SVR[irq_id] = (unsigned int) newHandler ;
//* Store the Source Mode Register
pAic->AIC_SMR[irq_id] = src_type | priority ;
//* Clear the interrupt on the interrupt controller
pAic->AIC_ICCR = mask ;
return oldHandler;
}
Afterwords we try to get for example AIC_IVR from pAic with code:
pAic->AIC_IVR = …
Does someone know where the problem lies??? My compiler does not recognize the fields in my structure…
hi
I am also looking for the same ,myself using LPC2378 and want it working wilt keil compiler and i tried to convert using LPC2129 but failed since it gave lot of error but any how i did changes to it and got some of the errors cleared but i have a assembler error
__asm{ LDR LR, [LR, #+60] };
this gives a error asking for macro parameter needed, can any one tel wt is it.
pvPortMalloc is a function related to memory but we have 3 files related to it which one to use do suggest . since this might be usefull for all using LPC2378 controller using keil compiler
Which heap management file you should use depends on you application. I would suggest you read the documentation for FreeRTOS mainly its porting guide. For memory configuration have a look at http://www.freertos.org/a00111.html