Téléphone portable comme microcontrôleur

19

J'ai quelques téléphones portables qui traînent, l'un d'eux étant celui-ci: http://www.gsmarena.com/sony_ericsson_elm-3057.php Il


est possible d'effacer la mémoire flash et de la remplacer par un chargeur de démarrage, puis de télécharger des croquis arduino ou croquis pic32 (C # / C ++).

J'ai eu cette idée car c'est une plateforme très bon marché pour développer des projets matériels. (Vous obtenez un écran, des boutons, des E / S audio, Internet, etc., vous obtenez tout pour un prix très bon marché par rapport à ce que vous obtenez en achetant chaque pièce séparément.)

Est-il possible d'effacer la mémoire flash et d'installer un chargeur de démarrage dans un téléphone pour l'utiliser comme ordinateur embarqué?

Harry Svensson
la source
3
Pourquoi le vote négatif, c'est une excellente question.
Rocketmagnet
Il faut vraiment le nettoyer. (Je n'ai pas voté contre, mais iIM a fait une modification en attente qui clarifie vraiment la question posée)
CyberMen
Vous pourriez être intéressé par le projet Rockbox, qui a fait quelque chose de similaire avec les lecteurs mp3. Les personnes concernées pourraient vous dire à quel point il est difficile d'obtenir des informations sur le matériel propriétaire.
Jeanne Pindar
@CyberMen Je ne sais pas ce que vous voulez dire par "Quel est le formatage de la mémoire flash dans un téléphone et son installation"
varesa
@varesa ne me demandez pas, demandez à OP. Utilisez vos compétences en anglais déductives.
CyberMen

Réponses:

1

Le coût n'est jamais un problème. De nombreux amateurs seront prêts à payer un prix modéré pour des appareils haut de gamme facilement piratables. Le problème est que ARM est une plate-forme fermée. Il y a généralement une partie nommée ROM privée sur le silicium même du SoC (système sur puce). Il bloque la réutilisation.

Cette partie de la ROM est chargée de choisir un chargeur de démarrage dans un certain ordre: Z-Modem sur série, Nand externe, ROM série, SDCard, USB externe. Pour chaque appareil, la commande est individuelle et mal documentée, vous devez généralement tenir quelques boutons lors de la mise sous tension pour vous connecter à un chargeur alternatif. L'image du chargeur de démarrage si la plupart du temps vérifie la signature numérique du propriétaire de la plate-forme. Donc pas de chance.

Pour un projet unique, il est possible de choisir un périphérique aléatoire. Mais vous serez probablement plus intéressé par un appareil bien connu, avec des schémas publiés et du code source disponible pour Linux, Android, etc.

Donc, ma suggestion est de regarder les appareils entourés de communautés d'utilisateurs actifs : Raspberry Pi, BeagleBone, BeagleBoard, une plate-forme d'évaluation Samsung (PandaBoard?)

Mon expérience personnelle avec TI AM35XX s'est terminée par une déception face à la complexité de tout. Le plus petit Linux au monde nommé Angstrom a une image de distribution de 3 Go. Les documents pour les puces sont de 4000 à 5000 pages. Cela ne ressemblait pas beaucoup à un passe-temps et n'était pas agréable.

La situation pourrait changer une fois que le processeur Intel Atom SoC sera devenu populaire. Je m'attends à un intérêt massif des utilisateurs et suivrai la foule en direction du plus petit Atom possible avec écran. J'espère que quelqu'un terminera une pièce montable sur panneau avec la taille de la carte de crédit et du GPIO. Ça va être amusant.


la source
2
En fait, le TI AM35XX est génial - le plus petit Linux sur cette plate-forme tient bien sous 3 Mo. J'utilise personnellement ceux-ci (et l'AM33XX) pour tout un tas de choses, une fois que vous avez surmonté les tracas de la compilation croisée, vous disposez d'un matériel bien pris en charge et bien documenté. Oui, c'est compliqué, et le TRM (5000 pages) est une énorme brique, mais il est conçu comme un document de référence, pas comme une berceuse (tu peux aussi servir comme tel)
qdot
+1. Oui, je suis d'accord que TI ARM est probablement le meilleur que l'on puisse trouver. Je ne parlais que de mon expérience personnelle en tant qu'amateur. Si c'était mon travail de jour de lutter avec ARM en équipe, ce serait beaucoup plus amusant.
Eh bien, je lutterais avec une machine surpuissante, que sur une machine sous-alimentée, en général. Ce n'est clairement pas Arduino, mais c'est Linux, une fois que vous avez démarré le noyau, ce n'est pas différent de n'importe quelle autre plate-forme crossdev. Construisez un espace utilisateur (ou créez votre propre init et exécutez à partir de là), et vous êtes chez vous :)
qdot
5

Il y a des âges, il y avait un projet pour faire quelque chose de similaire (l'ingénierie inverse d'une famille de téléphones bon marché et très populaire).

http://nokix.pasjagsm.pl/help/blacksphere/sub_050main.htm

Et oui, l'option Android est probablement la plus simple .. ou Windows Mobile, elle est également raisonnablement ouverte.

qdot
la source
Attendez, les trucs de bas niveau pour WP sont-ils également ouverts?
varesa
WP ou WM? Windows Phone, c'est-à-dire la version 7 et supérieure, est quelque chose que j'ai une expérience limitée, mais je pense qu'il peut toujours exécuter des binaires C natifs. La version 6, qui constitue la majeure partie des téléphones PDA anciens mais extrêmement puissants, est extrêmement ouverte - elle exécute du code C natif, elle peut être compilée avec MSVC et GCC, elle n'a presque aucune sécurité .. vous pouvez littéralement lancer un bootloader comme une application régulière, et il passe au noyau linux :)
qdot
Après avoir essayé cette chose il y a longtemps avec mon HTC Touch Pro, je peux vous garantir que oui, vous pouvez sauter dans un noyau Linux (ou une version Android personnalisée). Cela ne veut pas dire que parler à tout le matériel est tout aussi facile ou faisable. (malheureusement, je détestais WM6 avec passion, mais je ne pouvais pas conserver le même niveau de fonctionnalité avec n'importe quel autre système d'exploitation)
Alexios
qdot, pourquoi ne pas nous en dire plus sur l'approche consistant à acheter un téléphone Windows 7/7 au magasin pour le faire exécuter mon propre code en contrôlant disons 5 servos via le port série.
Harry Svensson
1
@qdot pouvez-vous apporter certaines de ces informations afin que le lien ne soit qu'une référence, en ce moment il est susceptible de pourrir les liens.
Kortuk
3

Je n'ai aucune expérience à ce sujet, mais je ne pense pas que ce serait facile (si possible). Je pense que vous pouvez oublier de le programmer en C ++ ou C #, et plutôt en ASM + C. Il ne serait pas compatible avec les croquis Arduino ou le code PIC32 ou quoi que ce soit, qui n'est pas fait pour le CPU spécifique. De nombreux nouveaux téléphones ont quelque chose comme un noyau ARM.

Je ne sais pas vraiment comment vous programmeriez l'appareil, mais je suppose que c'est possible, car ils peuvent généralement mettre à jour le micrologiciel si vous le leur envoyez pour réparation.

Vous devrez également coder vos propres pilotes pour tout le matériel (écran, WLAN, capteurs, etc ...), ce qui serait vraiment difficile sans plus d'informations sur le matériel, que le fabricant du téléphone ne va probablement pas vous fournir. .

Je pense que le moyen le plus simple serait quelque chose comme un ancien téléphone Android, car vous pouvez obtenir gratuitement le code source avec les pilotes et tous les trucs de bas niveau. Vous pouvez déchirer ou utiliser l'interface utilisateur et d'autres composants visibles par l'utilisateur. Mais ce n'est pas ce que vous voulez, sauf si vous avez de vieux téléphones Android qui traînent.

De plus, si le téléphone a été "piraté" pour exécuter n'importe quel autre système d'exploitation, en particulier ceux à source ouverte comme Android, vous pourrez peut-être obtenir les sources avec lesquelles le port pourra jouer.

varesa
la source
Ne serait-il pas possible de tout lire de la mémoire flash et de lire / modifier la mémoire flash à partir de là?
Harry Svensson
@HarrySvensson Eh bien, vous devrez soit modifier la mémoire directement, soit utiliser une sorte de port / en-tête de programmation qui pourrait être là pour mettre à niveau le firmware. Possible, mais pas facile.
varesa
2
Pourquoi le vote négatif au hasard?
varesa
@HarrySvensson, en supposant que vous aviez les outils pour vider toute la mémoire flash (il pourrait y avoir plusieurs puces flash destinées à contenir différentes choses comme des chargeurs de démarrage sécurisés et ce qui ne l'est pas, certaines nécessitant peut-être des outils propriétaires), seriez-vous à l'aise pour tout décoder à la main? Ne vous attendez pas à ce que tout soit dans un format de système de fichiers agréable que vous pouvez simplement monter sur votre ordinateur comme une clé USB. Vous pourriez voir beaucoup de choses propriétaires et méconnaissables ou simplement du code d'assemblage brut où il peut y avoir du code de programme.
Jon L
2

Tout faire vous-même sera au mieux difficile. Vous auriez beaucoup plus de facilité avec l'un des appareils pris en charge par le projet Rockbox , qui est un firmware open source pour les lecteurs mp3. Certains de ces appareils sont peu coûteux et offrent bon nombre des avantages que vous mentionnez, et ils sont conçus pour que leur micrologiciel soit mis à niveau via USB. Vous auriez l'aide d'une communauté active qui a déjà compris les problèmes de base concernant les compilateurs, les chargeurs de démarrage, etc. ainsi que du code source pour commencer.

Une fonctionnalité intéressante de Rockbox est qu'il configure les appareils pour un double démarrage, de sorte qu'ils peuvent toujours être utilisés pour leur objectif d'origine lorsque vous n'utilisez pas le nouveau firmware.

Jeanne Pindar
la source
0

Non.

La documentation publique pour ce téléphone (comme sur la page à laquelle vous avez lié) ne répertorie même pas le type de processeur. Même si c'était le cas, vous auriez besoin du schéma (y compris les numéros de pièce de tous les circuits intégrés) pour pouvoir écrire du code pour cela. Ce serait la propriété de Sony / Ericsson, donc vous n'allez pas l'obtenir). Même chose pour tout autre téléphone portable.

Dans le cas peu probable où vous avez obtenu toute la documentation du processeur, de la mémoire flash, etc., il pourrait être possible d'écrire un chargeur de démarrage compatible Arduino après avoir passé plusieurs semaines de votre temps. Bien sûr, cela nécessiterait que vous obteniez l'environnement de développement pour le téléphone, ce qui coûterait probablement des centaines, voire des milliers de dollars.

Même si vous pouviez écrire un chargeur de démarrage compatible Arduino, il serait impossible de répéter impossible de télécharger et d'exécuter des croquis Arduino car 1) le compilateur pour l'Arduino va émettre du code pour un microcontrôleur compatible Arduino (Atmega, PIC32 etc.) , et le téléphone n'utilisera certainement pas ceux-ci - ce sera probablement une variante d'ARM); et 2) les ports d'E / S ne seront pas situés aux mêmes emplacements (ports) sur le téléphone portable que sur l'Arduino.

Notez qu'il existe des téléphones cellulaires open source , mais vous ne pourrez pas exécuter le logiciel Arduino sur ceux-là pour les mêmes que ceux que j'ai cités ci-dessus (incompatibilité processeur et matériel). Certaines des autres réponses ont suggéré Android, mais notez qu'il ne figure pas sur la liste des téléphones open source en raison de pilotes propriétaires. Et encore une fois, la question était de savoir si vous pouvez exécuter du code Arduino sur ceux-ci, et la réponse est certainement non.

Il est donc beaucoup moins cher de simplement mordre la balle et d'obtenir une carte Arduino et des périphériques.

tcrosley
la source
0

Que faut-il pour transformer divers matériels "quotidiens" en plates-formes de microcontrôleurs? Les mods de Sprite sont une excellente source d'inspiration. Il donne une bonne explication du processus nécessaire pour "ouvrir" les appareils et en prendre le contrôle. TL; DR: Vous pouvez exécuter Linux sur une carte SD et sur un disque dur. Non, je n'utilise pas de disque dur. Sur un disque dur - sur le processeur assez puissant qui est le contrôleur du lecteur.

Réintégrer Monica
la source
Le routeur Linksys WRT54G était un appareil populaire à pirater, car il utilisait un logiciel open source, donc Linksys était obligé de publier le code source. Vous vous êtes retrouvé avec une plate-forme personnalisable fonctionnant sous Linux, avec ports Ethernet et Wi-Fi intégrés.
tcrosley