Question:
Conseils pour un ancien programmeur embarqué ancien et renouvelé
ddm
2010-12-11 03:47:44 UTC
view on stackexchange narkive permalink

Contexte -

J'ai programmé mon premier SBC sur un kit d'évaluation MEK6800D2 (que j'avais construit) à la fin des années 70 et d'autres cartes de l'époque comme la Rockwell 6502 Kim-1, 8085, etc. Maintenant, je suis un programmeur 61 a Big Box MS C # vs2010, mais mon réel intérêt a toujours été intégré, mais cela fait tellement d'années. Maintenant que je suis proche de la retraite, j'aimerais revenir à la programmation récréative pour revenir à mes racines d'intégration. C, objectif C, ASM, autre? (OK, je trace la ligne en quatrième).

Enquête -

Alors maintenant, je regarde les derniers jeux de puces embarquées et oh wow je n'en comprends qu'environ la moitié. Y a-t-il une ressource que vous pourriez recommander à quelqu'un comme moi? Livres, sites, etc.?

BTW - J'ai trouvé ce site de style d'échange de pile très utile. merci beaucoup

Bienvenue sur Electronics.SE, heureux d’entendre que ce site est utile: P Je crains que cette question ne soit le double de quelques autres, mais essayez de les vérifier: [Comment devenir développeur de logiciels embarqués?] (Http: // electronics .stackexchange.com / questions / 3343 / comment-devenir-un-développeur-de-logiciel-embarqué), [Étapes pour apprendre la programmation Arduino] (http://electronics.stackexchange.com/questions/1015/steps-to- apprentissage-programmation-arduino) en premier. Si vous avez une cible particulière en tête en ce qui concerne ce que vous voulez faire ou spécifiquement sur quoi, il peut être utile d'ajouter à votre question.
@Nick T: pas sûr que ce sont des dupes exactes. le premier que vous citez est un départ à partir de zéro, le deuxième est spécifique à arduino, alors que cela semble demander, "quelle offre actuelle serait la plus conforme aux trucs 8 bits vers 1980"
Six réponses:
tcrosley
2010-12-11 05:14:53 UTC
view on stackexchange narkive permalink

Je fais de la conception de systèmes embarqués depuis 35 ans (j'ai juste quelques années de plus que vous), et j'ai actuellement des projets en cours en 8 bits (Silicon Labs 8051 et Freescale 68HCS08), 16 -bit (Microchip 24FJ et dsPIC33FJ), et processeurs 32 bits (TI TMS320DM365).

Les puces 8 bits seront probablement celles avec lesquelles vous vous sentirez le plus à l'aise au départ, et sont toujours amusantes à programmer en assemblage en plus de C.Le 68HCS08 est une mise à jour de la ligne Motorola 68HC05, et j'aime particulièrement son jeu d'instructions (pas aussi beau que l'ancien 6809, qui était un merveilleux processeur pour écrire du code d'assemblage).

Par rapport à l'ancien temps où les cartes de développement et les ICE associés coûtaient des centaines, voire des milliers de dollars, vous pouvez désormais obtenir des cartes d'évaluation assez décentes pour moins de 100 USD, et des compilateurs gratuits.

Pour le plaisir, j'ai récemment acheté une carte de développement pour la puce Parallax Propeller, qui a 8 cœurs (Parallax les appelle "gogs") qui fonctionnent en parallèle. Toutes les E / S sont effectuées dans le logiciel, ce qui signifie qu'avec très peu de matériel externe, la puce prend en charge des éléments tels que les claviers et souris PS / 2, et la sortie VGA. Un tableau de démonstration est disponible pour 80 $. (J'ai son grand frère, qui est actuellement en vente pour 150 $.)

+1 pour avoir mentionné le 6809, probablement le plus beau 8-amer jamais vu.
Merci c'est une excellente information. J'ai étudié les 24FJ ces derniers jours comme avec le dsPIC. L'avance sur le 68H est excellente car je suis plus à l'aise avec le (ancien) jeu d'instructions 68xx.
darron
2010-12-12 09:30:09 UTC
view on stackexchange narkive permalink

Qu'est-ce qui vous semble amusant? Quel est votre budget?

Il existe de nombreux contrôleurs 8/16 bits qui seraient probablement très nostalgiques pendant un moment. (puisqu'ils sont en fait les mêmes que ceux avec lesquels vous jouiez). Vous seriez surpris de voir combien de systèmes embarqués professionnels utilisent encore des 8051.

Un Arduino vous donnerait beaucoup de choix d'add-on intéressants, mais pour moi, il semble vraiment plus adapté aux amateurs qui doivent programmer pour accomplir une tâche ... pas aux gens qui aiment se salir avec C et ASM. Si vous voulez beaucoup d'options de contrôle intégrées, c'est bien. Assurez-vous de vérifier SparkFun.

L'hélice a l'air amusante ... même si elle ne semble jamais convenir à tout ce que je fais. J'ai recommencé mon intérêt pour l'électronique il y a peut-être dix ans avec le Basic Stamp II de Parallax (TRES rapidement déplacé vers leur truc SX (système de type PIC, maintenant Ubicom))

Les processeurs ARM varient énormément. Sur le bas de gamme, ils sont puissants mais les outils coûtent généralement trop cher. Sur le moyen et le haut de gamme, ils peuvent exécuter un système Linux complet et faire des choses incroyables. (Presque tous les téléphones les utilisent maintenant) Je me dirige moi-même vers la gamme ARM de milieu de gamme (le plus bas étant capable de Linux, vraiment) Ma définition de média correspond aux puces suffisamment simples pour concevoir un PCB de 4 à 6 couches. Les plus gros peuvent nécessiter plus de 8 couches.

Si je devais faire une supposition, je dirais qu'après quelques mois, vous pourriez trouver les FPGA vraiment intéressants. Vous pouvez obtenir de belles cartes de démonstration FPGA pour 100 $ - 200 $. Les outils du fournisseur sont gratuits (je recommanderais Altera suivi de près par Xilinx) Vous pouvez vous amuser beaucoup à concevoir votre propre logique, y compris de petits microprocesseurs. Il existe BEAUCOUP de processeurs «logiciels» pour les FPGA et des chaînes d'outils complètes pour les développer et les déboguer. Je suppose que cela correspond le mieux au sentiment de la fin des années 70 / début des années 80 (pas que je sache) en ce sens que vous pouvez concevoir vous-même autant de système à partir de zéro. Vous pouvez ensuite rechercher à peu près n'importe quel capteur ou appareil comme vous le souhaitez, et écrire une logique de collage personnalisée pour lui parler (quelle que soit l'interface bizarre qu'ils utilisent) Il y a aussi OpenCores, où vous pouvez récupérer des modules fonctionnels que les gens ont écrits si vous ne voulez pas l'écrire vous-même ou ne savez pas comment. Si vous êtes intéressé, commentez et je chercherai une planche de départ décente pour vous.

Malheureusement, vous ne pouvez pas aller TROP loin avec les FPGA (à moins que vous n'aimiez vraiment jouer avec la logique seule et ne pas interagir avec les choses) sans concevoir vous-même des PCB. Je pense que c'est beaucoup plus facile qu'il n'y paraît ... les fiches techniques de nos jours vous disent à peu près comment tout faire. Cependant, c'est certainement beaucoup plus à gérer.

Merci Darron - après votre message, j'ai commencé à (ré) enquêter sur les FPGA grâce à vous et ce n'est pas trop loin de ma gamme technologique (d'accord à l'extrême), mais il faudrait un peu de puissance de réflexion (et c'est bien). Ce n'est pas hors du domaine des possibilités pour moi et j'aime être "au" métal, plutôt que "sur le métal". J'ai besoin de faire plus de recherches, avez-vous des lectures que vous recommanderiez? merci beaucoup ddm
Je ne suis pas très satisfait de ce que j'ai, mais cette question concerne les recommandations de livres FPGA: http://electronics.stackexchange.com/questions/7163/book-recommendations-on-fpga
JustJeff
2010-12-11 05:15:49 UTC
view on stackexchange narkive permalink

Les micros flash 8/16 bits (PIC / AVR, etc.) sont probablement la solution. Vous pouvez les programmer en C ou en assembleur, vous avez le contrôle de toute la machine et vous obtenez en gros tout un système sur une puce. Sans oublier qu'ils sont bon marché. La plus grande différence entre la programmation de ceux-ci et, par exemple, un 6502 est qu'ils ont des espaces de code et de données séparés.

Il existe de nombreuses cartes uniques qui utilisent des processeurs plus sophistiqués, qui sont bien plus puissants, mais vous ne tirez pas vraiment le meilleur parti de ceux-ci sans systèmes d'exploitation à part entière. La programmation sur ces types de plates-formes est assez différente du bit-banging sur un 6800. Cela peut être une bénédiction ou une malédiction selon votre point de vue. D'une part, vous ne pouvez pas simplement frapper un port, vous devez travailler via un pilote de périphérique (ou écrire le pilote de périphérique), mais d'un autre côté, vous obtenez de belles choses comme le multitâche.

Merci - bonne info - J'ai écrit des pilotes de périphériques pour les versions antérieures de Windows, ce n'était pas mon point fort mais j'avais aussi des délais à respecter.
Chris Stratton
2010-12-11 05:44:54 UTC
view on stackexchange narkive permalink

Vous voudrez peut-être commencer avec un arduino pour avoir une idée de ce dont les puces AVR sont capables, puis peut-être abandonner l'interface personnalisée et travailler avec des outils plus génériques.

Pour les systèmes un peu plus grands, ARM les cœurs d'un certain nombre de fournisseurs sont assez populaires et à peine plus chers.

De plus, même si je ne trouve pas cela d'intérêt personnel, et je suis généralement mal à l'aise avec l'idée marketing de faire passer les programmeurs de bureau à l'intégration sans changement majeur dans les habitudes de pensée, il existe de minuscules cartes ARM exécutant une version de .NET qui pourraient tirer parti de ce que vous avez fait ces derniers temps - des exemples seraient netduino et fez panda.

Merci - cela a été très utile. Dans les années 80, j'ai écrit de nombreuses applications intégrées de la famille 80xx de manière professionnelle, mais l'industrie évoluait vers des langages plus formels et j'avais besoin de garder un emploi. Maintenant, je veux jouer des morceaux pour le plaisir, je n'ai pas l'intention d'en vivre.
IntelliChick
2010-12-11 19:18:28 UTC
view on stackexchange narkive permalink

1) Obtenez un bon livre de référence pour la programmation en C. J'ai beaucoup aimé ce livre:

Laissez-nous C - Y. Kanetkar

alt text

2) Get a good ouvrage de référence qui décrit certains des concepts de base des systèmes embarqués.

An Embedded Softfware Primer - David.E.Simon

alt text

3) Obtenez un bon kit de développement, tel que le tableau beagle qui a une communauté en ligne très active et solidaire pour vous aider avec les requêtes, etc. Leur site Web contient des tonnes d'idées de projets avec lesquels vous pouvez vous salir les mains .

Site Web de Beagleboard

alt text

4) Vous ne pouvez pas aller au-delà du site Web de Ganssle pour obtenir d'excellentes informations relatives à la programmation intégrée. Il a d'excellents articles sur les subtilités des systèmes embarqués.

Le groupe Ganssle

5) Vous pouvez vous référer à une question connexe qui a été publiée:

Embedded C Matériel de programmation

6) N'oubliez surtout pas de vous amuser avec. Lisez, lisez et lisez, et mettez-vous les mains sales! Vous rencontrerez des problèmes difficiles, qui vous dérouteront pendant peut-être des jours, mais c'est la meilleure partie. Continuez simplement et vous y arriverez!

Quoi - Ma première édition avec des oreilles de chien de K & R's C n'est pas assez bonne :-) Merci, ces messages ont été très utiles pour quelqu'un comme moi quelque part au milieu.
K&R est le seul livre assez bon pour C.
Let Us C cité comme le pire livre de programmation: http://programmers.stackexchange.com/questions/6974/whats-the-worst-programming-book-youve-ever-read/12192#12192
@Nick - avez-vous eu l'occasion de le lire? Qu'est-ce que vous n'aimez pas dans le livre? J'ai eu la chance de lire quelques livres sur C à mon époque et je dois dire que j'ai vraiment aimé ce livre. C'est une lecture vraiment facile et explique très bien certains concepts de base. Mais bien sûr, c'est mon avis, et vous avez certainement droit au vôtre! :)
@Intel: Ce n'est pas mon avis, juste celui de quelqu'un d'autre. Je savais que j'avais entendu parler du livre avant, j'essayais de me rappeler où: P
@Nick - bien sûr np! J'ai lu vos réponses / questions précieuses et perspicaces de temps en temps, je serai donc certainement intéressé de connaître votre opinion sur le livre. Lisez-moi et dites-moi ce que vous en pensez! :)
@IntelliChick, J'aime assez le site de Ganssle J'ai acheté un de ses livres, c'était une lecture assez amusante.
Dave
2010-12-14 20:43:29 UTC
view on stackexchange narkive permalink

Je comprends parfaitement votre désir de connecter quelque chose et d'avoir une boîte à outils qui fonctionne simplement . Comme Chris l'a déjà mentionné, vous pouvez utiliser Netduino, qui vous sera peut-être plus familier car il utilise le .NET 4.0 Micro Framework. Personnellement, je ne l'ai pas utilisé car je ne peux l'obtenir nulle part! Totalement en rupture de stock.

Je viens de recevoir un microcontrôleur mbed à utiliser, et à mon avis, il est bien plus facile à utiliser partout qu'Arduino et son environnement. Le compilateur est assez sympa, l'éditeur est en ligne (ce qui pourrait être la seule mauvaise chose si vous n'avez pas installé la chaîne d'outils locale, ce dont je ne sais rien). Mais vous le branchez littéralement, lancez la page Web stockée dans sa mémoire flash, enregistrez-la, et vous pouvez sauter dans le compilateur et commencer à modifier les bits. J'étais au moins en train de clignoter et de PWM mes LED dans environ 5 minutes à partir du moment où j'ai ouvert la boîte.

Merci mec - j'ai dû rire, j'ai téléchargé et écrit un compilateur / code / émulateur Ar * et j'ai écrit du K&R C pour l'émulateur Arduino et je ne me suis pas souvenu qu'un bool n'existait pas encore. (Ne me posez pas de questions sur l'accès aux membres de la structure!) Cela m'a pris une heure avec K&R rev. 1 pour réaliser que je devais le définir. (Retour vers le futur pour moi :-) Très kewl!
essayez mbed ensuite! Je suis relativement nouveau sur les deux plates-formes, mais je trouve l'environnement mbed beaucoup plus familier et moins excentrique qu'un IDE. Et la fonctionnalité définie sur ce micro est très impressionnante.


Ce Q&R a été automatiquement traduit de la langue anglaise.Le contenu original est disponible sur stackexchange, que nous remercions pour la licence cc by-sa 2.0 sous laquelle il est distribué.
Loading...