En cuanto al msp430, es una buena arquitectura, herramientas bastante buenas por ahí mspgcc y mspgcc4 y llvm para el caso. binutils sin parches. Puede obtener una plataforma de lanzamiento por menos de $ 5 a ese precio, compre algunas (eventualmente bloqueará algo o lo cortará y lo derretirá, tendrá un repuesto, especialmente a este precio) ...
Descargue las herramientas, todas son gratuitas, escriba algunas líneas de código, aprenda cómo vincularlo, vea qué tan grande se vuelve el binario, tenga una idea de las líneas de código incrustadas al tamaño de rom, etc.
¿Cómo lo hacen los profesionales? Casi todas las formas que puedas imaginar:
El mandato de algunas empresas se reduce desde lo alto y no hay nada que pueda hacer al respecto que no sea renunciar. Y es posible que nunca sepas por qué se eligió esa plataforma.
A veces, el contratista / cliente favorito dicta la plataforma, a veces puede educar / negociar, a veces no.
Algunas personas simplemente tienen un favorito, miedo a lo desconocido, lo que sea. La misma razón por la que algunas personas compran solo una marca de automóviles, porque mi papá lo hizo y su papá lo hizo antes, y esa podría ser la razón.
Algunas personas se centran en las herramientas. Una vez más, tienes gente leal a la marca, limitándose a su compañía compiladora favorita y a los objetivos que admiten, o la herramienta de código abierto favorita y lo que eso admite. Sistema operativo integrado favorito y límite a los objetivos que admite.
En algunos casos se trata de herramientas, pero de una manera diferente, con el tiempo puede haber invertido una gran cantidad de dinero en contratos de soporte anual con un proveedor (por ejemplo, brazo o xilinx o motorola) y podría ser que le haya gustado su apoyo y no quieres cambiar o el diablo que conoces es mejor que el diablo que no quieres. O podría ser que debido a que los otros 5 proyectos activos en la compañía usan esto y ya tenemos un contrato de soporte y continuaremos pagando ese año tras año, debe elegir una de esas soluciones de proveedores.
A veces se trata de salvar las milpeniques. Esta parte es 1.5% más barata que esa parte, haga que funcione con esta parte, no se preocupe por la NRE, piense en los ahorros de fabricación en volumen.
A veces se trata de lo negativo. Un proveedor puede haber jodido a su empresa de una forma u otra. No cumplir con el suministro anunciado de piezas que causa demoras o cancelación de sus productos. Estafas de cebo y cambio (la tarifa de $ 50,000 para el software no incluía la tarifa de $ 1200 por el dongle requerido para desbloquear la licencia, que es un artículo de costo adicional. Ah, y eso era por usuario para la licencia flotante). Una vez que firme el NDA para ver el manual de referencia de los programadores o la guía de diseño de referencia, descubrirá cuán terrible es su ingeniería y puede optar por incluir en la lista negra todos sus productos de por vida. Historia pasada con horrible soporte técnico. Cualquier número de razones puede hacer que nunca permita que sus vendedores vengan a la puerta de entrada o que no vuelva a mirar su sitio web nuevamente.
A veces tiene que ver con el rendimiento, las interfaces, etc. Por ejemplo, si tiene una interfaz cableada y necesita un pull up, la marca de microcontroladores XYZ por $ 3 por pieza tiene un conjunto de pines de E / S que se pueden usar sin necesidad de otro hardware externo, la marca ABC tiene una parte de $ 3 que requerirá un transistor y una resistencia externos para que funcione como mínimo. Su ejemplo del msp430, digamos que se trata del consumo de energía, la parte A solo puede requerir que el usuario use una batería AAA y funcione durante meses, la parte B puede necesitar dos baterías AAA y funcionar durante semanas.
El caso más raro de todos es hacer la ingeniería, encuestar a todos los proveedores, hacer las matemáticas de consumo de energía, el precio por unidad de la matemática de su producto, la cantidad de rom que necesitamos y a qué frecuencia ejecutar el chip, lógica de pegamento, y sigue. Por lo general, alguien (jefe / cliente / ingeniero superior) toma sus años de experiencia y dispara desde la cadera (a menudo usando uno o más de los anteriores) para elegir el camino (a menudo un buen camino que ahorra toneladas de tiempo en horario y dólares) y el la ingeniería se realiza una vez para ajustar la plataforma elegida.
Mi recomendación personal es ser flexible. La mayoría de las marcas / familias de microcontroladores, de alguna forma o moda, se pueden tener en un tablero de evaluación por menos de $ 50. Sparkfun, olimex o directo del vendedor (ti para msp430 o stellaris, etc.). Pruebe uno o más de cada uno, tenga una idea de lo que es común y diferente, herramientas, cargadores, qué tan difícil de desabrochar, etc. Al menos, obtiene dos cosas de esto, una es cuando se ve obligado a seguir un camino desde arriba o desde el cliente puede comenzar a ejecutar, en segundo lugar, cuando es su turno de elegir la plataforma, está mejor educado sobre lo que está y no está allí y puede elegir la plataforma correcta (palabra cargada) según el problema para estar solucionado.
Incluso si no puede salir y gastar esa cantidad de dinero en el hardware, la mayoría tiene herramientas que puede descargar (gratis), en casos como microchip ahora puede obtener el compilador C (solía ser de alta tecnología) pero tiene que suscribirse (renunciar a su dirección de correo electrónico). gcc le guste u odie será en su futuro, escritorio o incrustado, ensucie sus manos y aprenda a usarlo como un compilador cruzado. Pruebe llvm también, estará disponible por un tiempo y le dará a gcc una competencia seria. De todos modos, escriba o encuentre algunos emuladores, mame tiene muchos, gdb tiene algunos, etc. He escrito uno llamado thumbulator en github, solo en modo ARM thumb, similar a un cortex-m3, excepto que no soporto thumb2 (todavía puedo aprender bastante y que los programas se ejecuten en ambos antes de cambiar al hardware solamente). Creé un emulador msp430 pero me detuve un poco en eso. El conjunto de instrucciones es tan pequeño que la mayor parte del trabajo es una noche o quizás un proyecto de sábado. Lo mismo ocurre con el PIC, una larga tarde y tiene un simulador de conjunto de instrucciones con el que practicar incrustado. Si no hay nada más, simplemente puede escribir la compilación y el enlace de los programas para tener una idea de cómo hacerlo y qué tan grandes terminan siendo los programas, cómo ajustar los programas para producir un código más estricto, etc.
En cuanto a C vs ensamblador, algunos conjuntos de instrucciones son C amigables y otros no. Algunos compiladores son medianos y algunos son realmente malos y solo unos pocos son realmente buenos (y usualmente cuestan unos pocos miles de dólares una vez o por año para usar). Al igual que con el rendimiento en cualquier lugar si realmente desea impulsarlo, puede ser necesaria una mezcla de lenguaje de alto nivel (digamos C) y ensamblador. Entonces, la habilidad no es escribir toda la aplicación en ensamblador, la habilidad es determinar qué código está causando que no cumplas con el tiempo / rendimiento y luego saber cómo resolver eso a través de C, las opciones del compilador, elegir el compilador correcto o escribir el ensamblador.
Te recomiendo que conozcas el ensamblador para todas las plataformas que elijas usar, si no hay nada más que un conocimiento legible sobre él como con el incorporado, te recomiendo que lo desarmes con frecuencia (mientras descubres dónde están tus problemas de rendimiento). En muchas plataformas se requiere o se desea un ensamblador para el código de arranque de todos modos.
Si desea ahorrar ese 10-20% en el precio por unidad y desea comprar el microcontrolador u oscilador más barato / más lento, o la parte de flash de 32Kb en lugar de la parte de flash de 64KB y puede cubrir el costo de desarrollo con el volumen de ventas, y quizás una larga lista de otras cosas que puede elegir escribir todo en ensamblador, rápido, bajo consumo, bajo costo, clientes satisfechos.
Dependiendo de sus antecedentes hasta el momento, tal vez no debería preocuparse por escribir en todos los ensambladores y quizás por los aspectos de ingeniería eléctrica de los microcontroladores integrados, leer esquemas, saber qué colector abierto, tri estado, push pull, pwm, adc, dac y un larga lista de otros términos y cómo usarlos. bit banging i2c, spi, mdio, dallas one wire, etc. Uso de un alcance como depurador de software. A pesar de que los ámbitos pueden resaltar cosas para usted hoy (un elemento de costo adicional), debería poder observar i2c y spi y algunos otros protocolos sin los aspectos más destacados.
También recomiendo que para cada una de las plataformas con las que juegas, salgas del entorno limitado de alguien más (por ejemplo, el entorno de programación / ide Arduino). Escriba el código de arranque que hace que el procesador se reinicie en su programa main (), haga todo lo posible para comprender cómo cargar / programar el flash hasta el punto de que eso puede implicar escribir su propio cargador, aunque los de la plataforma sean allí. Se trata de educación personal, cuanto más sepa y pueda sacar de su bolsillo trasero y use más control tendrá sobre su carrera y más ceros al final del número en su cheque de pago.
Hagas lo que hagas, NO, intentes aprender x86 como tu primer ensamblador en un escritorio, elige prácticamente cualquier otra cosa y compila y simula de forma cruzada, ARM, THUMB, MSP430, PIC, AVR, incluso 6502, 8051. x86 es una instrucción horrible conjunto y como resultado se ha transformado y moldeado de muchas maneras, microcodificado, no microcodificado, multinúcleo, una y otra vez. Mantenga el x86 en lenguajes de alto nivel y sistemas operativos voluminosos. Úselo para su editor de texto y compiladores y apunte a otra cosa.
Perdón por la larga respuesta ... espero que haya sido útil.