 TraceZone hands-on. On va créer un exemple basique de l'application non-secure. La première étape est d'activer le TraceZone sur notre target et on va configurer l'adresse du watermark. Ensuite, on va créer un projet basique de TraceZone et assigner le GPIO de la LED au monde sécurisé. Ensuite, dans l'application non-secure sur un événement de push-button, on appelle un procédure non-secure à tourner le LED. La dernière étape est d'activer le TraceZone sur notre target. La première étape est d'activer le TraceZone sur notre target. Je vais utiliser un Nucleo L5520E. Ok, donc on va connecter. Ensuite, on peut détecter un code programmer. Et on va vérifier l'option de l'application. Ici, dans l'adresse de l'application non-secure on veut être dans l'application non-secure et on va mettre un bank dans l'adresse de la LED au monde non-secure. Pour cela, on va activer le TraceZone. Et on va juste appliquer. Donc maintenant, le TraceZone est activé. Vous pouvez voir que l'arrière sécuritaire est apparue. Et on peut configurer. En default, c'est complètement sécurisé. Donc, la première étape est sécurisée. Et la deuxième étape est sécurisée aussi. Donc, pour nos hands-on, j'ai proposé de utiliser la première étape comme une étape sécuritaire. Et cette étape n'est pas sécurisée. Donc ici, on va programmer. Et j'ai appliqué. Donc, en faisant cela, la deuxième étape est considérée non sécurisée. Donc maintenant, nous sommes configurés avec le TraceZone Enable. Et maintenant, je vais lancer le TraceZone STM32 QB. Donc, nous allons créer maintenant le projet pour notre HAL-5 Board. Donc, comme vous l'avez dit, nous allons utiliser le Nucléo HAL-5-5-2-3-D. La propose est de mettre la LED dans l'arrière sécuritaire. Ok, donc le GPIO sera configuré à l'auteur de la sécurité. Et nous allons avoir le bouton push qui sera dans la partie non-secure. Et nous allons apporter une étape non sécuritaire à l'arrière sécuritaire. Ok, nous allons commencer un nouveau projet. La prochaine étape. Donc, je ne vais pas utiliser le Baud Selector pour l'HAL-5. Franchement, aujourd'hui, je préfère utiliser juste le MCU et configurer le GPIO pour la LED et le bouton push. Donc, c'était l'HAL-5-5-2. Et c'était l'HAL-1. Pas l'HAL-3-1, mais ZE. Donc, nous allons prendre celui-là. Et... Franchement, zone test. Ok. Donc, durant la initialisation, j'ai proposé d'avoir une perspective sur le manuel de l'arrière sécuritaire. C'est le manuel de l'arrière de mon Baud Nucléo. J'aimerais vérifier le GPIO pour le bouton et pour la LED. Donc, nous allons vérifier le bouton. Donc, le bouton de l'usage sera sur P313. Ok. Et sur le bouton, pour ajuster sur le top, nous allons utiliser le premier. Il sera P-A5. Ok. Donc, je configurerai juste les deux GPIOs sur mon target. Donc, avec le certain, et celui-là sera à l'input. C'est mon bouton. Ensuite, je vais mettre la LED. P-A5. Ceux-là sera à l'input. Ok. Maintenant, j'aimerais dire qui est l'honneur de quelle partie. Pour le P-A. Donc, je vais juste avoir ici le système GPIO. P-A5. Donc, P-A5 sera la LED. Et j'aimerais que ce bouton, ce contexte, soit le contexte M3G3 secure. Ok. Pour le bouton, j'aimerais celui-là être utilisé par le code non-secure. Je dirais que c'est tout. Ici, vous pouvez voir que nous avons beaucoup d'informations. Il s'agit d'un code non-secure et de la secure. Vous avez les secures, les sistecs, beaucoup de nouvelles. Mais pour le moment, on va continuer. Donc, on va générer le code. Donc, comme vous pouvez le voir ici, quand j'ai créé un genre de projet, il a généré deux projets. Le code non-secure et le code non-secure. Ils sont très close, je dirais que c'est fixé pour eux. Pour le code non-secure, on peut avoir un look dans le script. C'était la secure. Le ram de la memoire est ici. Et vous pouvez voir que le base de l'adresse est dans le code non-secure. Vous vous souvenez de ça? Donc, vraiment, dans le code non-secure, c'est où nous allons utiliser le code non-secure. Pour le code non-secure, le base de l'adresse devrait être la seconde banque de ma flash. Et elle va utiliser le code non-secure. Ok? Donc, qu'est-ce que nous avons dans le code généré? Nous allons avoir un look dans le code non-secure, parce que c'était celui-là qui va commencer. Si je vais dans le main, donc nous avons la table victoire pour la partie non-secure, parce que nous avons besoin de changer de la table victoire puis nous avons le main. Nous avons le gtzc dans le code. Le GPIO. Et puis, nous allons trouver le code non-secure. C'est à dire, nous allons changer pour le code non-secure. Pour faire ça, nous allons relocer la table victoire et nous allons mettre le point main et nous allons faire le jump par STM32 Cubidio pour vous. Nous pouvons avoir un look dans le GPIO. Et comme vous pouvez le voir ici, nous avons configuré le GPIO-A dans le code non-secure et nous avons déjà configuré l'attribut de le bouton push non-secure. Donc, sur ce point, le GPIO-A sera seulement accessible de la partie non-secure et la partie non-secure. Ok. Nous pouvons aussi voir qu'il y a des points non-secure.c C'est là où vous pouvez mettre toutes les fonctions non-secures. Ok. Ça veut dire que vous pouvez ajouter un entry ici. Et c'est ce que nous allons faire avec notre toggle LED. Et puis, nous avons notre application trésor. Donc, il est juste exécuté. Nous allons initialiser le bouton push. Nous pouvons regarder à ça. Sorry. Oh, je n'ai pas composé encore, donc on n'a pas réussi à trouver ça. Mais ici, nous avons la fonction. Et ok. C'était juste un input. Donc, j'ai proposé qu'on a commencé de patcher le code. Donc, de la partie non-secure. Ce que j'ai proposé c'est de voir si on a bien commencé ou pas. Donc, premièrement, on va utiliser le LED et switcher après un délai. Juste après les unités de GPIO on va prendre le pin PA5 et c'était PIN5. Donc, on va switcher sur la lumière. Et puis, on va attendre un seconde, pour exemple. Et puis, on va switcher le LED. Donc, après on va prendre le code non-secure mais ce que j'aimerais c'est de créer des services non-secures donc ici, j'ai juste besoin d'avoir ce flag. Et je vais coller ce pin sans aucun argument. Qu'est-ce que nous allons faire ici ? GPIO Sorry for this. GPIO Toggle pin again. GPIO A PIN5. Ok. Donc, maintenant, j'ai déclaré ici un SecureNSC.C Function Implementation. J'ai proposé de déclarer aussi le prototype. Donc, on va switcher sur le file IDER. Donc, exactement le même prototype. C'est tout. Donc, maintenant, je vais dire que mon application SecureNSC est prête. On va juste switcher sur le lit, attendre un seconde, switcher sur le lit puis, on va switcher sur l'application non-secure. Puis, on va mettre en place un service SecureNSC qui permet de toggle le pin. Donc, maintenant, on modifie la application non-secure. Donc, ici, ce que nous voulons faire c'est juste de vérifier si le pushbutton est pressé. Donc, si c'était PC PIN13 et si ceci est equal ça veut dire que le buton est pressé. Donc, si le buton est pressé je propose que les services SecureNSC se définissent. Ce qui est SecureTogglePin. OK. On va mettre un délai ou juste avoir à éviter de vérifier le pin. OK. Et c'est tout. OK. Je propose qu'on commence à essayer de compiler. OK. Donc, premièrement, on va compiler l'application non-secure. Et en fait, on compare l'application non-secure et l'application non-secure. Donc, je pense que tout est prêt. Je double-check. OK. Donc, la compétition est OK. Maintenant, je propose de modifier la configuration de l'application non-secure de l'application non-secure et de l'application non-secure en même temps. Donc, pour faire ça la configuration de délai de l'application non-secure sur le startup on peut voir que nous avons le test SecureL que c'est load et download. Nous allons ajouter aussi les parts non-secures. Donc, en délai pour le moment, le système file nous ferons le download et le load du symbole. Donc, j'ai ajouté ici, on devrait premièrement acheter tout comme debug. Nous allons essayer ça. Donc, le flashing est OK. Je propose, comme le premier test juste de check, je dirais quelles sont les statistiques sur le bord. Donc, si j'ai poussé le bouton reset la light switch en 1 seconde, puis switch off. Et, si j'ai poussé le bouton bleu donc, la fonctionnalité est ici. OK. J'ai mieux regardé le debugger maintenant. Donc, maintenant, je propose que nous voulons aller step-à-step à l'intérieur de la code. Nous sommes la main SecureCode Sorry. Comme vous pouvez le voir, nous sommes juste sur le bord. Donc, nous allons commencer avec le break. Et nous allons le reset. Je suis dans le SecureCode Comme vous pouvez le voir, nous sommes sur l'adresse SecureHelias. Et nous pouvons voir les statistiques sur le bord, ou je dirais si nous sommes dans le SecureCode ici nous sommes dans le SecureCode. Donc, step-à-step, initialisez le GTZC, le GPIO. Nous pouvons juste aller à l'intérieur. Comme vous pouvez le voir, nous configurons le PIN5. Et nous changeons l'attribut le C13, qui correspond à le bouton. Et nous disons, ok, le GPIO sera partie du monde non-secure. Et puis nous continuons. Et nous avons le PIN5 au début. Juste pour montrer que ça commence et puis, nous justons le bouton, ou je dirais que nous avions dans le secteur non-secure. Donc, si je vais dans la main.C de mon secteur non-secure à l'arrière, je vais installer un point de break-point ici. Et juste continuer. Maintenant, je suis dans la main.C de mon application non-secure. Le state de CEPI a changé. Et vous pouvez voir un nombre d'adresses qui sont maintenant dans les alias non-secures. Ok, nous allons mettre un point de break-point quand nous essayons de coller les gates de sécurité. Donc, l'arrière non-secure je résume et pousse le bouton bleu sur mon target. Et puis, je vais juste arrêter dans le PIN de sécurité. Donc, ici, nous sommes branchés à l'arrière non-secure. Donc, je propose maintenant de l'instruction dans le debugger. Donc, j'ai l'instruction en mode maintenant. Et ici, nous allons l'instruction par instruction. Nous allons l'instruction. Comme vous pouvez le voir, nous sommes encore, je dirais, dans le monde non-secure. Donc, non-secure, encore. Et je l'instruction. Ok. Ici, vous pouvez voir un branching. Et nous sommes switchés à l'adresse de sécurité. Et la première instruction était cette gate de sécurité. Donc, vraiment, nous sommes switchés à l'arrière non-secure pour l'arrière non-secure. Et vous pouvez voir que le state de sécurité change de non-secure à non-secure. Ok. Donc, maintenant, je vais mettre un point de break dans la fonction GPIO. Nous allons essayer de aller juste étape par étape. Donc, ici, nous sommes branchés à l'arrière non-secure. Donc, ici, nous sommes dans le monde non-secure. Si je continue, ce que j'aimerais vous montrer maintenant, c'est de la façon dont nous vivons. Donc, je vais étudier. Donc, je suis toujours à l'instruction level. Puis, je branche. Ok. Non. Ok. Donc, nous avons préparé tout. Je pense. Je suis en train de bâtir NS. Ok. Ce sont les instructions pour lever le monde non-secure à l'arrière non-secure. Et maintenant, je suis revenu de l'arrière non-secure. Ok. Donc, je vais vous montrer le changement de l'arrière non-secure et le monde non-secure. Ce qui pourrait être intéressant de voir aussi est peut-être le registre. Dans le registre général les non-secures. Non-secures, sexures, sexures, PSP et MSP. Vous pouvez voir que tout est dupliqué de la sexure et du monde non-secure. Ok. Donc, maintenant, je vais vraiment vous montrer comment vous pouvez débugner l'application avec le STM32 QVDL. C'est tout pour les partages de débugging. Je dirais. Donc, nous allons retirer. Terminons et retirons. Il y a beaucoup de choses que j'aimerais vous montrer, peut-être. C'est où le SIU est installé. Je vous remercie. Les unités de charge secure c'est quelque chose qui devrait être, je dirais, installé au début de l'application. Nous allons voir que nous sommes dans la partie secure parce que le CPU a commencé dans ce code. Donc, c'est là où la configuration SIU sera faite, pour sûr. Donc, si je vais dans le code je pense que le système STM32 L5.C ici, nous avons la définition de quelque part système init qui est appelée au début. Vous pouvez voir qu'il y a un SIU de trésor installé. Ok. Si je vais dans la déclaration nous pouvons voir qu'il y a un test ici en regardant le show et les valeurs qui sont utilisées par ce file de configuration qui devrait être installé. Si vous vous souvenez Ok. CM6 device ST STML5 inclus et ici nous avons un partition underscore. Nous allons l'ouvrir. Et il dit dépendant de quel chip vous utilisez. Pour nous, c'était celui-là. Nous allons l'ouvrir. Et vous pouvez trouver la définition où vous avez la définition de la région différente sur le SIU. Donc MaxVision est 8 nous savons par définition et puis nous défendons pour la région 0 qui est activée l'adresse du début l'adresse du fin et si c'est non-sécurité ou non-sécurité donc vous vous souvenez par défaut ce sera sécuritaire donc si vous vous mettez en 1 cette région devient non-sécurité et nous avons la région 1 où nous avons l'adresse et la non-sécurité et cette région est non-sécurité. Donc ici, nous déclare la portion de la flash qui sera seen non-sécurité. Et nous avons les mêmes choses pour la SRAM. Donc ici, pour déclare cette portion non-sécurité puis la région 3 c'est la portion de l'adresse de l'adresse si vous le souvenez et ainsi et ainsi donc cette configuration les paramètres sont dans cet ordinateur ok c'est la zone sécuritaire dans la partition donc vous pouvez aussi voir là-bas donc la partition L5 et 5 et 5 ok c'est l'autre location sorry j'ai mis ça donc maintenant on a vu que c'est appelé au début la configuration est ici donc si vous avez besoin de changer les mappings d'adresse qui sont dans les sources générées par STM32 vous pouvez le faire juste là-bas un peu de choses que nous devons faire avant de couvrir complètement la zone c'est de retirer la zone sécuritaire sur nos targets je veux vous montrer cet aspect ce n'est pas si facile de le faire ok donc d'abord nous avons notre software sur nos targets donc si je pousse un bouton de recette la light switch dans 1 seconde et si je pousse le bouton de recette donc tout est fonctionnant donc maintenant je peux connecter les targets donc c'est terminé ici on a l'option de la zone sécuritaire et pour pouvoir retirer ceci nous devons faire une réglation de RDP0 à RDP1 ok donc nous allons le faire mais記得 ce qui s'est passé quand nous changez à RDP1 si on débug l'interface le flash ne peut pas être accessé anymore ok vous devez l'attacher parce que vous ne pouvez pas attacher quand vous êtes dans la zone sécuritaire donc la seule façon c'est d'avoir des codes qui vous permettent d'améliorer la zone sécuritaire ok et puis vous devez pouvoir connecter pas d'accès à la zone sécuritaire juste pouvoir connecter donc nous allons le faire donc d'abord nous changeons à RDP1 nous appliquons et on le verra c'est bien n'est pas possible quand la zone sécuritaire est active si il n'y a pas de code sécuritaire cela peut protéger la zone sécuritaire sur RDP dans notre cas nous avons un code qui se tourne parce que je sais que ici je suis dans le monde sécuritaire donc je suis connecté donc je ne peux pas vous montrer mais nous l'avons vu juste avant donc je vais l'activer vous êtes sûrs vous devez perdre pour toujours il y a la possibilité je dirais de l'utiliser le loader peut-être de connecter et de récover votre borde mais dans notre cas je veux juste utiliser nous sommes sûrs que nous avons un code qui se tourne donc nous allons switch au RDP1 donc maintenant on dit je peux connecter donc je vais déconnecter d'abord je vais vérifier que mon code se tourne j'ai mis le reset oh j'ai malheureusement quand j'ai eu le STL connecté par défaut il y a un access de débug au début et c'est à cause de la facture que c'est venu par le target donc nous devons retirer l'un de ces jumpers ici pour retirer le link de débug ok donc on va retirer les deux jumpers puis poursuivre le borde poursuivre le borde ok donc si je pousse le reset maintenant je vais switcher ok et puis je suis dans l'un de ces jumpers ok donc j'ai mon code sur la un de ces jumpers donc maintenant je devais pouvoir connecter donc je dois mettre encore mes jumpers maintenant le link de débug peut commencer donc je vais connecter dans un hot plug pas avec le connect et le reset ok donc on va pouvoir lire donc je pense que l'erreur est à cause de la facture il ne peut pas accéder le flash pour sûr on peut modifier l'option d'un borde ok donc ce que nous voulons faire nous voulons faire une régression donc ça veut dire que nous allons switcher de l'adp level 0 ou le level 1 de l'adp level 0 et nous voulons retirer la zone de trance donc c'était dans la configuration de l'usage et nous voulons retirer ok je le ferme encore vous pouvez voir que nous serons encore une zone de sécurité on va le replier c'était faible on peut dire que la définition de sécurité a été retirée donc nous n'avons pas plus de trance zone on peut vérifier je suis désolé pas pour le level mais la configuration de l'usage trance zone n'est pas ennemi si on vérifie on peut lire le flash mais nous avons fait une régression donc pas plus de code est disponible sur notre target