Reprogrammation du LPC3154 sur LPCxpresso

8

Je me demande, si c'est possible de charger lpc3154 sur la carte LPCExpresso avec un firmware personnalisé?

Je vois que la puce prend en charge le démarrage sécurisé, donc si la clé AES a été programmée, c'est impossible sans connaître la clé? Ou existe-t-il des options pour démarrer lpc3154 sans connaître la clé? (SD, flash, USB, JTAG ... Rien?)

Est-ce que quelqu'un sait si la clé a bien été chargée?

L'achat de nouveaux lpc3154 n'est pas une option - ils ne sont en stock ici nulle part, et les délais d'attente sont de 4 semaines + (et une étiquette de prix> au prix de cette carte) ...

BarsMonster
la source
Il n'y a pas de telle carte LPCXpresso! Les seuls processeurs sont LPC1114, LPC1343 et LPC1769.
Leon Heller
Eh bien, LPC3154 est sur chacun d'eux, sur la partie hôte. :-) C'est ce que je veux reprogrammer. J'ai 2 cartes LPCxpresso, et ce serait tellement agréable de réutiliser une telle puce SRAM 192kb juteuse ...
BarsMonster
1
Pas encore, la seule réponse que j'ai eue sur le forum officiel était 'Ce serait cool' :-)
BarsMonster
1
Était sur le point d'ajouter une petite prime car je pense que c'est une excellente question, mais vous ne manquez pas de représentant vous-même;) ... peut-être offrir un peu pour une réponse?
tyblu
1
@tyblu: terminé, a dû mettre fin à une autre prime plus tôt ;-)
BarsMonster

Réponses:

4

D'après ce que je comprends, la clé AES est chargée dans la puce. Et il peut également y avoir une vérification CR232 sur le firmware ou un ensemble de fusibles OTP

la source

Prend en charge le démarrage non sécurisé à partir des interfaces UART et USB (classe DFU) pendant le développement. Une fois la clé AES programmée dans l'OTP, seul un démarrage sécurisé est autorisé via UART et USB.

Cela ne signifie pas qu'il ne peut pas être piraté, si vous y mettez du temps. Je voudrais vérifier si les broches JTAG ont été désactivées et commencer à partir de là.

quelques déclarations intéressantes du guide de l' utilisateur

7.1 Cas d'utilisation de la ligne de production Sur la ligne de production NXP, l'OTP sera testé et programmé à l'aide de JTAG. En mode test, le bloc de fusibles lui-même sera accessible directement. Pendant la programmation, le VPP aura besoin d'une tension plus élevée que dans le cas d'utilisation de l'application. Les données écrites sont ensuite vérifiées en lisant les fusibles (en utilisant une basse tension sur VPP). Le client programmera également l'OTP uniquement sur la ligne de production, ici la programmation DFU sera utilisée. Une image pour la programmation des bits sélectionnés par le client peut être chargée dans l'appareil via USB.

7.2 Cas d'utilisation de l'application, il est important de s'assurer que le registre data_15 est mis à jour tôt pendant l'initialisation (par code de démarrage), cela définira le niveau de sécurité. Quatre niveaux de sécurité sont implémentés dans la conception:

• Niveau 0: rien n'est protégé.

• Niveau 1: protégé par mot de passe. Dans ce niveau, JTAG peut être activé par le logiciel après la séquence de mots de passe (dépend de l'application client) en définissant le bit collant 'JTAG_EN' dans le registre OTP_con.

• Niveau 2: à ce niveau, l'accès JTAG peut être activé à l'aide d'un équipement de test spécial. Utilisé par NXP uniquement pour l'analyse des matériaux retournés.

• Niveau 3: JTAG est complètement désactivé et donc la puce est virtuellement verrouillée.

Le client peut programmer le niveau de sécurité de la puce. Pour le niveau 1, le bit de fusible 509 doit être défini. Pour le niveau 2, les bits de fusible 509 et 510 sont définis. Pour le niveau 3, les bits de fusible 509, 510 et 511 sont programmés. Un cas particulier sera pour le client de désactiver l'écriture sur les fusibles, mais comme dans l'application une basse tension (pour la lecture) sera connectée au VPP, l'écriture ne sera de toute façon pas possible. Lors d'une application normale, les fusibles auront déjà été programmés sur la ligne de production. Il reste donc trois options: copier les données du fusible dans les registres de données, lire ces données et définir la protection en lecture. Le code de démarrage copiera les données du fusible dans les registres de données car cela est nécessaire pour la sécurité et les DRM. Après cela, les données peuvent être lues à partir des registres de données via le bus APB0 (selon les paramètres de protection en lecture).

Modifier: Si la clé est vraiment chargée, vous ne pourrez charger un firmware personnalisé que si vous avez la clé.

jsolarski
la source
1
L'existence du niveau 2 est effrayante. Je me demande si «l'équipement de test spécial» l'emporte sur l'exigence de mot de passe pour le niveau 1?
Kevin Vermeer
@reemrevnivek, car autant de personnes effrayées par le fait qu'il existe probablement un grand nombre de puces défaillantes ne pourraient pas déboguer sans cela. Si vous définissez le niveau 2, vous savez ce que vous faites, vraiment, dans un produit final, vous définirez probablement le niveau 3. Pourtant, de grandes recherches!
Kortuk
Vous vous demandez toujours si la clé a été chargée ...
BarsMonster
Je n'ai pas pu trouver de référence directe, indiquant que la clé était chargée, mais je suppose que oui, juste à cause de la nature fermée de la carte.
jsolarski
2

La question a été répondue ici sur le forum LPCXpresso. L'appareil ne peut charger le logiciel DFU qu'à partir de Code Red.

Depuis NXP_USA :

Les cartes LPC-LINK distribuées intégrées dans LPCXpresso ne peuvent charger que le micrologiciel DFU à partir de notre partenaire IDE LPCXpresso Code Red. Cependant, les schémas LPCXpresso sont publiés ici: http://www.embeddedartists.com/products/lpcxpresso/lpc1343_xpr.php?tab=res . Ils sont une référence utile pour une conception LPC3154 plus flexible qui pourrait accepter un micrologiciel arbitraire via DFU.

Le LPC3154 est disponible auprès de Digi-Key et Mouser .

Leon Heller
la source
Cela n'explique pas celui que nous ne pouvons pas charger de firmware tiers.
BarsMonster
Ce post est lié à un autre thread, qui a, en bas, un post faisant autorité de NXP. Je vais vous donner un coup de main et laisser tomber les liens pour vous ...
Kevin Vermeer
1

J'expérimente avec la carte LPCXpresso LPC1114. Il semble que l'interface de programmation (LPC3154) soit USB haute vitesse (480 MHz) et il semble extrêmement particulier au sujet du câble USB que vous utilisez. Si le câble (ou le port hôte) n'est pas de premier ordre, il peut être très instable, planter beaucoup et même verrouiller d'autres périphériques USB sur le même port racine. Après avoir écrit un certain nombre de piles USB, je suppose que cette pile USB particulière n'est pas très robuste en termes de gestion des erreurs et des exceptions.

Le fait qu'ils aient utilisé un ARM aussi haut de gamme pour une interface JTAG / SWD simple est risible, que le MCU dépassait 13 $ (chez Digikey) la dernière fois que j'ai regardé.

Je recommanderais d'utiliser une autre interface SWD et de déconnecter celle de la carte si vous rencontrez des difficultés. Cela devrait également permettre l'utilisation d'autres IDE (non Red Code) avec ces cartes.

(Si vous rencontrez des problèmes USB avec un périphérique (même à pleine vitesse 12 MHz) et que vous utilisez les connecteurs hôtes USB à l'avant d'une unité centrale de PC, essayez d'utiliser les connecteurs arrière sur le MB lui-même. J'ai vu bien connu marques de PC avec un câblage non conforme (et très feuilleté) à l'avant de l'unité centrale.)

Izzy Weird

Izzy Weird
la source