Je pensais pas que s'était si difficile d'effacer complètement un ATmega328 protégé. Pour que toute la mémoire soit vierge comme à la sortie d'usine.
Sur la page précédente fdufnews dit pourtant ça:
sérieux, on ne peut pas empêcher la lecture sans bloquer la programmation à tout jamais ????
Non, la seule chose que l'on peut encore faire c'est effacer complètement le composant. Toute la mémoire est alors vierge comme à la sortie d'usine.
Alors si on veut tester si l'ATmega328 peut protéger son code de la mémoire FLASH et EEPROM contre les pirates.
On doit consentir à perdre le pouvoir de reprogrammer son ATmega328?
Car je voulais effacer complètement la mémoire de mon ATmega328 après mes testes de protection, pour lui donner un nouveau Bootloader pour qu'il puisse fonctionner comme avant (sans le Lock Bits modifié).
En revenant sur le premier problème... je voulais savoir si à chaque fois que nous connections notre carte arduino, il y a avait pour chacune d'entre-elle un numéro d'identification propre... en gros, je connecte 2 cartes arduino sur mon pc, évidemment mon pc reconnaitra les 2, ensuite je veux communiquer avec elle, alors faut-il que je sélectionne au préalable le port de communication où puis-je communiquer en indiquant son numéro de série?!
Et dans le cadre de mon prototype, qui est un capteur, ainsi que dans l'optique d'une communication à distance, est-il possible de faire fonctionner, mettre à jour et modifier le programme sur l'arduino sur n'importe quel machine quelque soit la connectique juste en ayant son numéro d'identification?!
Au cas où, je tiens aussi à m'excuser si je ne fais que de reprendre ce qui a été dit au début du sujet !! :-[
Je me permets de faire remonter ce post car je cherche la méthode qui permet de verrouiller l'atmega une fois le programme chargé, empêchant ainsi un écrasement ou une copie de ce programme.
Un peu plus haut Demss a écrit :
Alors si le Lock bits est = 00001100 mon code va être protégé!
Alors j'écris:
atmega328.bootloader.lock_bits=0x0C
Je ne comprends pas vraiment. Il s'agit de modifier le bootloader de l'atmega ? Si oui comment charger mon programme ensuite ? :o
Bonsoir mcmf,
a) Si tu vérouilles ton atmega c'est justement pour ne pas pouvoir lire ou écrire dans la mémoire programme, pour protéger ton programme.
=> donc le bootloader ne dois plus fonctionner et ne dois plus être utilisé.
b) dans ce cas tu charges ton programme par la méthode du programmeur AVR grâce au connecteur ICSP présent sur les cartes.
Une carte Arduino peut être transformé en programmeur sinon tu peux utiliser un programmeur Avr.
Avec la protection maximum : par de lecture/ecriture de la memoire utilisateur et bootloader, ton programme est bien protégé : le seul moyen est d'effacer entièrement l'atmega pour le réutiliser vierge.
J'espère que c'est plus clair, n'oublie pas de lire les licences Open Source d'Arduino si tu comptes développer ton application avec les librairies Arduino.
Merci pour tes réponses. Cela m'a bien aidé.
J'arrive donc maintenant à mettre mon programme sur l'atmega en passant par ISP et en utilisant AVRfuse.
Mais je me pose la question suivante : Sur AVRFuse, quelle valeur modifier pour verrouiller l'atmega une fois qu'il est initialisé avec mon programme (pour ne pas lire / écraser le programme ensuite) ?
Il faut que tu program le Lock Bit Byte
a) c'est a faire après avoir programmé ton programme et après avoir programmé les fuses classique low, high et extended et boot lock.
b) Lit bien la page 294 de la datasheet 328P, ( le mieux étant de l'apprendre par c?ur )
c) le mode qui t'intéresse est LB mode 3 : pas de programmation et pas de lecture (vérification)
d) je sais pas avec avrfuse (je crois que c'est pas prévu, car rarement utilisé )