2016-11-28 6 views
0

J'essaye de config mon projet à FreeRTOS pour LPC1343. Mais je reçois les erreurs suivantesFreeRTOS dans LPC1343

Error[Pe020]: identifier "configMAX_SYSCALL_INTERRUPT_PRIORITY" is undefined C:\Users\IAR Embedded Workbench\FreeRTOS\Source\queue.c 952 


Fatal Error[Pe035]: #error directive: configMAX_SYSCALL_INTERRUPT_PRIORITY must not be set to 0. See C:\Users\IAR Embedded Workbench\FreeRTOS\Source\portable\IAR\ARM_CM3\port.c 82 

Pouvez-vous me aider s'il vous plaît ces erreurs et aussi je voudrais quelles sont les mesures que je dois prendre quand je config FreeRTOS à mon LPC1343.
Merci

+0

La première chose à noter est que si vous utilisez un LPC1343, l'inclusion de iolpc1342.h est probablement incorrecte et est en conflit avec les déclarations de iolpc1343.h. Vous devez comprendre pourquoi iolpc1342.h a été inclus (probablement à travers une chaîne d'inclusions imbriquées et de compilation conditionnelle - très probablement vous avez une définition de macro de type processeur inappropriée quelque part.) Rien de particulier à faire avec FreeRTOS du tout – Clifford

+0

I J'ai résolu la première erreur Je voudrais vraiment une solution pour les 2 prochaines erreurs –

+0

Vous devriez alors peut-être soit supprimer cette première partie de votre question ou poster une réponse à votre propre question si la solution est susceptible d'être utile à la communauté – Clifford

Répondre

0

Clairement configMAX_SYSCALL_INTERRUPT_PRIORITY n'est pas défini lors de la première rencontre de la ligne 952 de file.c.

Les macros non définies ont une valeur nulle lorsqu'elles sont explicitement testées pour la valeur plutôt que l'existence; d'où la sortie de la directive #error. C'est-à-dire si ABC est indéfini alors #if defined ABC est faux mais #if ABC==0 sera vrai.

configMAX_SYSCALL_INTERRUPT_PRIORITY doit être défini dans FreeRTOSConfig.h comme décrit here, et ne peut pas être zéro. Assurez-vous de lire toutes les notes sur la définition de cette valeur - il y a des considérations spéciales pour les ports Cortex-M3.

+0

Oui, je l'ai lu. mais je ne comprends toujours pas quelle valeur doit être définie pour chacun d'entre eux, '' configKERNEL_INTERRUPT_PRIORITY '' configMAX_SYSCALL_INTERRUPT_PRIORITY' configMAX_API_CALL_INTERRUPT_PRIORITY' pour LPC1343 –

+0

Réglage à une valeur non nulle au moins permettre de construire - ne pas le définir du tout n'est pas une option. La valeur à utiliser est cependant une question différente. Je n'ai pas utilisé FreeRTOS, mais serais étonné s'il n'y avait pas déjà un port LPC1xxx à partir duquel vous pourriez prendre au moins les paramètres de travail initiaux. – Clifford

0

Les valeurs requises dépendent de la famille de microcontrôleurs. C'est un peu compliqué, c'est pourquoi il y a une tentative de l'expliquer ici: http://www.freertos.org/RTOS-Cortex-M3-M4.html Vous devez savoir combien de bits de priorité d'interruption sont implémentés (dans le matériel) sur votre périphérique LPC, puis définissez les constantes pour correspondre à cela. Si vous utilisez une version à la limite de FreeRTOS et que configASSERT() est défini, il devrait vous dire si vous vous trompez. Vous pouvez aussi travailler manuellement en écrivant 0xFF dans un registre de priorité d'interruption, puis en relisant la valeur de registre pour voir combien de ces 8 bits sont «bloqués». Comme décrit sur le lien ci-dessus, les bits seront les bits les plus significatifs, pas les bits les moins significatifs comme on pouvait s'y attendre.