Comment déplacer vecteur de table et de changer de départ addressin cortexm3 à l'aide de uvision(Keil)?

Je suis en utilisant STM32F107 cortex m3 contrôleur. Je suis à l'aide de uvision IDE pour le projet. J'ai une application qui fonctionne correctement à partir de l'emplacement que j'.e 0x0800 0000. Si je change d'emplacement de départ à 0x0800 4000 l'application ne fonctionne pas correctement. J'ai fait des modifications pour le vecteur de l'emplacement de la table à l'aide de cette fonction
NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x8004000) j'.e changé SCB->VTOR = 0x8004000 à cet emplacement.
Mais même après avoir fait cette interruption n'est pas le cas. Dois-je faire quelque chose de plus pour ce projet?

Ce qui concerne
Suraj

Je soupçonne que vous êtes en train de dire que le vecteur de table dans votre application est re-situé à 0x0800.0000 après le démarrage, et maintenant vous essayez de le déplacer à 0x0800.4000? Avez-vous vérifié que le vecteur de la table est en fait situé par votre ensemble d'outils à la nouvelle adresse? Et vous dites "l'interruption n'est pas le cas" - qu'est-ce exactement est-ce à dire? Beaucoup de choses entre un périphérique à faire valoir un d'interrompre et de vous votre ISR - pile de l'installation, activer les interruptions de la CPU, de la NVIC d'interruption de priorité, bon vecteur d'interruption installé, périphérique d'interruption démasqué, etc.
Quand j'ai regardé le fichier map ,vecteur de la table est situé à 0x0800 4000 lui-même. Je pense qu'il ya une erreur d'initialisation. la vérification que
Ce n'est pas la réponse à votre question, mais je suggère que vous faites un mondial ou un tableau statique, qui est assez grand pour contenir une copie de la table vectorielle et en pointant le vecteur pour cela, au lieu de définir l'adresse directement. La raison de ma suggestion est que votre programme se développe, il peut allouer des variables de remplacer le vecteur de la table, que les variables sont alloués. Une autre solution consiste à modifier le linker script et de réserver suffisamment d'espace pour une table vectorielle.

OriginalL'auteur suraj | 2013-02-07