2010-07-26 7 views
4

Je cherche à écrire du code très sensible au timing sur un LPC1343 où j'ai besoin de compter les cycles d'horloge exacts. Il y a deux questions: -Moment d'instruction sur ARM Cortex-m3 (plus précisément LPC1343)

  1. J'ai lu que l'exécution du code de la mémoire flash interne ne sont pas toujours en mesure de fonctionner à plein 72Mhz et états d'attente pourraient être introduits. Mais je ne trouve aucun document "officiel" à ce sujet. J'ai vu un endroit recommandant de copier des fonctions sensibles au temps dans ram ... Je cherche soit à être dit définitivement que cela n'arrive pas, ou pour des informations sur comment cela affecte le calendrier.

  2. Combien de temps les instructions de branchement prennent-elles? J'ai lu que ce noyau a une prédiction de branchement donc les temps peuvent varier. Est-ce correct, et si oui, y a-t-il un moyen de prédire son comportement ou de le désactiver (le timing exact est plus important que de sauver quelques cycles) .

+1

Si la synchronisation est critique, vous pouvez configurer une broche GPIO pour basculer avec votre logique et vérifier explicitement la synchronisation avec un oscilloscope. Vous pouvez vérifier la synchronisation de base, puis configurer pour déclencher sur les échecs de synchronisation (une largeur d'impulsion trop courte ou trop longue). – Digikata

+0

Oui, je le ferais certainement, – jcoder

Répondre

2

est ici quelques recherches du monde réel pour LPC11xx et LPC13xx: http://knowledgebase.nxp.com/showthread.php?t=460

En bref, il n'y a pas de réponse « droit », les résultats pourraient dépend des réglages de l'accélérateur flash, l'alignement de la mémoire, l'architecture de bus (neumann contre harvard), 32 bits vs 16 bits instructions et ainsi de suite.

Questions connexes