Pages: 1 [2]   Go Down
Author Topic: Taille des programmes  (Read 1395 times)
0 Members and 1 Guest are viewing this topic.
France
Offline Offline
Faraday Member
**
Karma: 55
Posts: 5347
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

personnellement pour m'être frotter a l'assembleur du x86 j'imagine sans peine le travaille titanesque qu'une machine virtuel demanderais sur l'ATmega328,
C'est pas si compliqué, une fois le principe compris tu peut écrire sans probléme une machine virtuelle en 2-3 heures smiley-wink

Une machine virtuelle (basique) ce compose que de 3 fonctions :
- lecture d'une instruction et switch d'exécution
- lecture d'un registre / valeur pointée
- écriture d'un registre / valeur pointée

Voici un exemple qui passe sur un ATmega sans probléme. C'est une version d'essai, la "vrai" version est en cours d'étude (gros travail de conception pour la partie instruction) :
https://github.com/skywodd/skycpu_core
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

http://microlua.xooit.fr/ (souvent)
Offline Offline
Jr. Member
**
Karma: 1
Posts: 53
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour.
J'ai lu ce topic alors que je cherchais un moyen de faire des cartouches de jeu pour ma future console à base d'arduino (qui bugue toujours avec TVout au passage) .
Mon idée: pourquoi utiliser une machine virtuelle au détriment des performances, au lieu d'une machine réelle ?
En effet, j'ai vu sur le net qu'il était possible de reprogrammer une arduino avec une autre arduino, le code étant stocké sur une carte SD. (http://www.semageek.com/bootdrive-programmer-un-arduino-avec-un-autre-arduino-a-partir-dune-carte-sd/)
En gros, avec une arduino UNO comme carte mère et une arduino Mini (voire un ATtiny ...) comme diskLoader, il serait possible de reprogrammer l'arduino via une carte SD, donc de changer son code !

Bien sur, il faut attribuer une ID à chaque SD pour éviter d'avoir à copier des données inutilement à chaque démarrage . Pour ça, un fichier du type "id.txt" contenant 1 chiffre suffit.

Ensuite, ben y'a plus qu'a couper le diskLoader et la machine tourne !

(le seul problème, c'est que comme c'est une console, et que l'on modifie le code, le piratage est alors facile, mais tout le monde s'en fout ^^)

En espérant vous avoir aidé .
Logged

Codeur en Lua, python, java, C,  Arduino, un peu d'assembleur ...

France
Offline Offline
Faraday Member
**
Karma: 55
Posts: 5347
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

En gros, avec une arduino UNO comme carte mère et une arduino Mini (voire un ATtiny ...) comme diskLoader, il serait possible de reprogrammer l'arduino via une carte SD, donc de changer son code !
Comme précisé plus haut tu as des bootloaders tout en un (pas besoin de deux cartes donc) qui utilisent directement une carte SD pour la programmation.

Bien sur, il faut attribuer une ID à chaque SD pour éviter d'avoir à copier des données inutilement à chaque démarrage . Pour ça, un fichier du type "id.txt" contenant 1 chiffre suffit.
Si tu part sur ce principe le plus simple est de faire un entête situé à une adresse fixe contenant les détails du jeu, comme pour une vrai cartouche de jeu.

(le seul problème, c'est que comme c'est une console, et que l'on modifie le code, le piratage est alors facile, mais tout le monde s'en fout ^^)
A mon avis personne ne viendra voler ton code ... à moins de lancer le prochain FinalFantasy smiley-roll

Par contre tu sembles oublier un autre petit détails ...
Cf datasheet de l'ATmega328p page 1 :
Quote
High Endurance Non-volatile Memory Segments
– 4/8/16/32KBytes of In-System Self-Programmable Flash program memory
– 256/512/512/1KBytes EEPROM
– 512/1K/1K/2KBytes Internal SRAM
Write/Erase Cycles: 10,000 Flash/100,000 EEPROM
– Data retention: 20 years at 85°C/100 years at 25°C(1)
– Optional Boot Code Section with Independent Lock Bits
In-System Programming by On-chip Boot Program
True Read-While-Write Operation
– Programming Lock for Software Security
10K programmation ça te laisse une bonne marge mais ce n'est pas infini ...

Sinon tu peut chercher "UzeBox" sur google, c'est exactement ce que tu cherches à faire.
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

http://microlua.xooit.fr/ (souvent)
Offline Offline
Jr. Member
**
Karma: 1
Posts: 53
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

10 000 cycle d'écriture/lecture en flash ??? Je pensait plus ! (genre 1 000 000)
C'est aussi pour ça qu'il faut attribuer une ID aux cartouches: pour éviter les copies inutiles !
Sur ce, je file me payer des shields pour cette future console !
Logged

Codeur en Lua, python, java, C,  Arduino, un peu d'assembleur ...

Pages: 1 [2]   Go Up
Jump to: