2010-02-26 11 views
2

s3c44b0x ne supporte pas le point d'arrêt flash (contrairement à d'autres processeurs tels que lpc1758 qui a flash sur puce), puis comment déboguer bootloader quand il fonctionne encore dans le flash?comment déboguer bootloader en flash?

Répondre

4

L'analyseur logique, printf, ICE, et l'émulateur de mémoire EPROM/Flash seraient les moyens old-school.

Le Samsung S3C44b0x (ARM7TDMI) prétend avoir une prise en charge du débogage du disjoncteur ICE sur puce, donc l'obtention d'un émulateur de circuit peut être ce que vous voulez faire.

Ajouté:

Si vous avez suffisamment de RAM, pendant le démarrage à partir de Flash, vous pouvez imprimer les messages du journal à un en mémoire tampon dans la RAM, puis sortie ce tampon, en utilisant printf série plus tard une fois que la UART est initialisé.

2ème plus:

Pour isoler quelle partie du processus d'amorçage, vous pouvez remplacer les modules ou étapes avec des talons vides, dans le seul but d'isoler écraser. L'approche consiste à réduire les possibilités d'échec. Créez une image de microprogramme qui initialise uniquement la première étape de base, par ex. la mémoire du système, si cela fonctionne ajouter votre tâche ou processus module/étape, plus tard y compris l'initialisation de l'UART, etc.

Si vous avez les broches de sortie, ajoutez quelques LED pour compter les sections en binaire, ce qui vous permet de voir quelle section du code est en cours d'exécution.

Consultez le livre Debugging Rules et imprimez votre propre copie de l'affiche Rules of Debugging gratuite. C'est un petit livre, et même si rien de révolutionnaire ne vient consolider le processus de débogage, il permet à la plupart des gens d'être plus organisés et méthodiques dans leur débogage.

Références:

+0

Je veux déboguer dès le début du bootloader, puisque UART n'est pas initialisé, printf ne fonctionnera pas. J'ai un émulateur jlink, cependant, il ne supporte pas le débogage flash de s3c44b0x. – wenlujon

+0

que se passe-t-il si le programme s'est brisé avant l'initialisation de l'UART. et je veux localiser le point exact, puis trouver pourquoi. – wenlujon

+1

En supposant que la RAM externe, vous pouvez remplacer la RAM avec NVRAM et lire le vidage mémoire après le crash. Sinon, procurez-vous une ICE compatible avec votre puce ou échangez des jetons contre un j-Link. Je sais que cela risque de causer beaucoup de problèmes, mais votre environnement semble restreindre vos options. Et utilisez un analyseur logique. – mctylr