Je suis un ingénieur SW intégré, avec moins de 3 ans d'expérience. Je vise à "aiguiser la scie" en continu. Je me demandais s'il y avait quelque chose de spécifique à la programmation de bas niveau que les codeurs C / C ++ doivent être compétents. p>
Qu'est-ce qui me vient à l'esprit est la familiarité avec l'architecture et l'instruction du matériel. Sachant comment violer des bits est également important, la gestion des ressources et la performance font partie de mon travail, y a-t-il autre chose? P>
Edit: Je travaille avec une RTO personnalisée interne, non embarqué Linux. p>
9 Réponses :
J'étudierais l'électronique des copeaux réelles. Découvrez comment ils fonctionnent en interne (tels que l'architecture), l'interface avec les périphériques, les caractéristiques de l'électricité et du calendrier, etc. p>
Fondamentalement, lisez la fiche de données Commencez à terminer quelques fois et creuser dans tout ce que vous n'avez pas vu / utilisé avant. P>
Au fait, quelles jetons travaillez-vous? P>
D'accord. En savoir plus sur les aspects d'ingénierie électrique / électronique des ordinateurs!
Je travaille avec le Arm9 pour le contrôleur et le C55 pour DSP, également aidé à écrire des pilotes pour différents types de RF, Ad / Da et Power Amp ICS.
Avoir une grande connaissance des pointeurs, les chèques que ces langues ne font pas grand chose (comme le débordement de la mémoire tampon et des trucs comme ça), électronique numérique. Les systèmes opérationnels opérationnels peuvent également aider. P>
Apprenez à savoir comment des produits sont représentés en interne, des structures de données spécialement prêtes à l'emploi (supposant que vous ne construisez pas votre propre). p>
Surtout, pratiquez beaucoup. Le faire apporte beaucoup plus à vous que de simplement lire à ce sujet;) p>
Si vous n'avez pas encore je pense que chaque ingénieur logiciel doit lire le programmateur et le code pragmatique complet. Je sais que ce ne sont pas spécifiques à la programmation à faible niveau, mais ont une vaste richesse de connaissances qui s'appliquent à toutes les sous-disciplines. P>
J'ai ces livres et les lis. Je pense qu'ils sont tous les deux grands.
pratiques d'un développeur agile i> est une sorte de suite à le programmeur pragmatique i> et est aussi un très bon livre.
concepts spécifiques comme, p>
Utilisez les liens de référence que je donne comme concepts,
S'il vous plaît suivi plus loin pour les connaissances plus profondes. P>
Oui tatft. Si vous ne savez pas ce que cela signifie, regardez-le et vivez-le!
@Brian, vous pariez! Je me suis coupé pour avoir manqué celui-là.
Je viens d'apprendre ce que Tatft se tenait et rit fort dans ma cabine, je suis totalement d'accord, en fait, nous sommes toujours tatoués dans mon équipe et les sourcils sur ces groupes qui ne le font pas.
Cela suppose que l'utilisateur utilise un système RTO ou un autre système d'exploitation intégré qui n'est pas une hypothèse que je produirais, certainement pas embarqué Linux qui est un oxymoron. Ce sont de bonnes choses de haut niveau à vous inquiéter mais pas de faible niveau
La question mentionne l'ingénierie logicielle intégrée et l'importance perçue de l'architecture matérielle et de l'ISA. J'avais cela à l'esprit tout en énumérant des points.
@dwelch, j'ai lu vos points et je suis d'accord avec eux. Si vous regardez les points de ma réponse (et peut-être éteindre sur les articles un peu), vous conviendrez probablement que cette approche de haut niveau vers l'ingénierie de bas niveau vous permettra d'écrire le type de points que vous énumérez.
EDIT: Ce que j'ai oublié de mentionner est le développement basé sur le modèle.
Aujourd'hui, les algorithmes de contrôle sont souvent implémentés comme une sorte d'automate à partir duquel Code C est généré par la suite.
Les outils disponibles disponibles sont par exemple MATLAB / SIMULINK , ascètes ou
Je ne savais pas à propos de ce que Wnet est resté pour, j'ai googlé et j'ai trouvé ce "rel =" nofollow NOREFERRER "> MRTC.MDH.SE/PROJECTS/WCET /"> CETTE Page. Je viens d'apprendre quelque chose de nouveau, merci !.
Obtenez vous-même une copie du Livre MISRA-C . Il a été écrit à l'origine par des membres de l'industrie automobile et tente de rendre des logiciels écrits dans C plus robustes en appliquant un numéro (un nombre assez grand!) De règles et de directives. P>
Puis, achetez PC-Lint (ou un autre outil d'analyse statique) pour vérifier votre code pour MISRA et Autres règles. P>
Celles-ci sont particulièrement pertinentes pour les C de faible niveau et intégrées, comme entre eux, ils traitent des causes de nombreux bugs dans ces logiciels, tels que des problèmes liés aux pointeurs, aux fuites de mémoire, à une promotion entière (il y a un chapitre entier sur que dans le livre MISRA), l'endansité et le comportement indéfini. p>
Je vois que beaucoup de réponses de système d'exploitation de haut niveau ici, mais vous avez spécifiquement dit de faible niveau. P>
Certaines pensées dispersées: p>
Bon post. J'ajouterais que lorsque vous construisez des applications embarquées, vos capacités de débogage sont moins nombreuses et que la conception de la conception devient absolument nécessaire beaucoup plus que dans des environnements amicaux lorsque vous êtes de la boite de sable et vous n'allez pas ruiner le code ailleurs. De plus, à basculer sur le mauvais bit ou la déséroférance Un pointeur pendling a des conséquences réelles ici, contrairement à la programmation de bureau où le pire que vous obtenez est un crash de programme. Programme de manière défensive, même lorsque vous ne voyez pas de forte besoin de.
Oui, programme de manière défensive, j'aime ce terme. Sachez également quand aller contre la norme comme plus de variables globales et moins de locaux. Ne présumez pas toujours que .bs et .data ont été configurés (parce que vous ne l'avez pas fait) et avez choisi une alternative. Gestion de l'alimentation, de plus en plus de choses courent des piles. Il faut moins de puissance pour stocker un 1 dans une ROM que 1 0. Enregistrer sur NV RAM lorsque la puissance est supprimée. Réveillez-vous, manipulez l'événement, retourner en mode basse puissance.
Si vous ne pouvez pas lire un schéma, apprenez. Les mêmes choses vont pour les feuilles de données et la même chose pour la lecture de Verilog et de VHDL. Selon le projet, vous n'allez essentiellement à obtenir un manuel de référence de programmeurs de programmeurs bon ou précis, le schéma et la portée montreront où les signaux sont et le Verilog / VHDL vous indiquera ce que font la logique de vos collègues d'ingénieurs.
C'est une bonne liste. Je pense que les votes debout viendront plus facilement si vous reformaté cela pour le rendre plus lisible. Les balles seraient un bon endroit pour commencer - c'est une liste (non ordonnée), après tout.
bonne question. Certains qui n'ont pas été mentionnés ... P>
Apprenez vos différentes options pour atteindre le multitâche de bas niveau. Des planificateurs de base rond-robine (non préventifs), avec des ticks de timing à partir d'une minuterie matérielle, jusqu'à un RTO préventif. Apprenez pourquoi vous pourriez avoir besoin d'une RTO et pourquoi vous pourriez ne pas. Si vous utilisez un RTO, apprenez que les débutants avec un fond de PC ont probablement tendance à créer trop de tâches. P>
Obtenir la visibilité dans les internes pour le débogage peut être un défi. Il n'y a pas d'écran typiquement, donc pas de lancer des appels "Printf" où que vous soyez. Un émulateur ou une interface JTAG est idéal - vous pouvez définir des points d'arrêt et traverser votre programme (aussi longtemps que l'arrêt du micro ne fait pas de matériel de travail, comme balancer un bras de robot à pleine vitesse!). Si l'émulateur / JTAG n'est pas disponible, apprenez à utiliser un port série de rechange (ou peut-être même bit-bash une goupille pour créer un port série) pour un canal de débogage, avec quelques commandes simples de la mémoire / POKE. P>