2010-07-08 34 views
2

Je suis en train de déboguer un firmware sur un CPU famille de bras (Cortex M3). Le débogueur affiche les registres de la CPU, y compris un appelé «xPSR» qui comprend un sous-champ appelé «ISR». Le mode dans les registres de la CPU est 'Mode = Handler', ce qui signifie que le processeur m3 est en mode interruption au lieu du mode 'thread', ce que je connais. Je pense que cela doit être hexadécimal 15 (déc 21) et je suppose que c'est l'interruption "System Timer Tick 0B" à partir des commentaires de la table des vecteurs ISR. , et c'est le gestionnaire d'interruption de minuterie SysTick que je regarde. (Notez que parce que le code est assembleur un gestionnaire de défaut par défaut, où environ 100 étiquettes ASM différentes atterrissent à un endroit, il est difficile de dire à partir du code, qui J'ai appelé l'ISR.)Mise au point de Cortex M3 (ARM) Embedded - Comment savoir quel ISR est exécuté à partir de xPSR.ISR?

Cependant, je suis assez nouveau sur les puces Cortex M3, et ma connaissance de ARM7TDMI est tellement fanée de ne pas l'utiliser que Je ne m'en souviens pas. Et je ne peux pas trouver cela dans mes documents n'importe où.

Quelqu'un peut-il me dire comment comprendre cela?

Répondre

3

Le numéro d'exception 15 décimal est l'interruption SYSTICK sur le Cortex M3.

Le ARM Cortex M3 Technical Reference Manual comporte une table (Tableau 5-1 - Types d'exceptions) qui répertorie les différents numéros d'interruption utilisés par le M3.

Exception type Position  Priority  Description 
-------------- ------------ --------  ------------------------------------ 
Reset    1    –3 (highest) Invoked on power up and warm reset. On first instruction, 
               drops to lowest priority (Thread mode). This is asynchronous. 
Non-maskable Int 2    –2   Cannot be stopped or pre-empted by any exception but reset. 
               This is asynchronous. 
Hard Fault   3    –1   All classes of Fault, when the fault cannot activate because of 
               priority or the Configurable Fault handler has been disabled. 
               This is synchronous. 
Memory Management 4    Configurable Memory Protection Unit (MPU) mismatch, including access 
               violation and no match. This is synchronous. This is used 
               even if the MPU is disabled or not present, to support the 
               Executable Never (XN) regions of the default memory map. 
Bus Fault   5    Configurable Pre-fetch fault, memory access fault, and other 
               address/memory related. This is synchronous when precise 
               and asynchronous when imprecise. 
Usage Fault   6    Configurable Usage fault, such as Undefined instruction executed or illegal 
               state transition attempt. This is synchronous. 
    -     7-10   -   Reserved 
SVCall    11   Configurable System service call with SVC instruction. This is 
               synchronous. 
Debug Monitor  12   Configurable Debug monitor, when not halting. This is synchronous, but 
               only active when enabled. It does not activate if lower priority 
               than the current activation. 
    -     13    -   Reserved 
PendSV    14   Configurable Pendable request for system service. This is asynchronous 
               and only pended by software. 
SysTick    15   Configurable System tick timer has fired. This is asynchronous. 

External Interrupt 16 and above Configurable Asserted from outside the core, INTISR[239:0], and fed 
               through the NVIC (prioritized). These are all asynchronous.