En cuanto a la msp430, es una buena arquitectura, bastante buenas herramientas por ahí mspgcc y mspgcc4 y llvm para el caso. binutils sin Parcheando. Puedes conseguir un launchpad por menos de 5 dólares a ese precio compra unos cuantos (eventualmente brickearás algo o harás un cortocircuito y lo fundirás, ten un repuesto, esp a este precio)...
Descargue las herramientas, todas son gratuitas, escriba unas pocas líneas de código, aprenda a enlazarlo, vea el tamaño del binario, obtenga una sensación de incrustación, líneas de código a tamaño de rom, etc.
Cómo lo hacen los profesionales. De todas las formas que puedas imaginar:
En algunas empresas, el mandato viene de arriba y no hay nada que hacer, salvo renunciar. Y puede que nunca sepas por qué se ha elegido esa plataforma.
A veces el contratista/cliente favorito dicta la plataforma, a veces puedes educar/negociar, a veces no.
Hay gente que tiene preferencia, miedo a lo desconocido, lo que sea. La misma razón por la que algunas personas compran sólo una marca de coche, porque mi padre lo hizo y su padre lo hizo antes, y eso podría ser la razón.
Algunos se centran en las herramientas. Aquí también hay gente fiel a la marca, que se limita a su compañía de compiladores favorita y a los objetivos que soporta, o a su herramienta de código abierto favorita y a lo que ésta soporta. Su sistema operativo favorito y se limitan a los objetivos que soporta.
En algunos casos se trata de herramientas, pero de una manera diferente, con el tiempo puede haber invertido mucho dinero en contratos de apoyo anual con un proveedor (digamos arm o xilinx o motorola, por ejemplo) y podría ser que te ha gustado su apoyo y no quieren cambiar o el diablo que usted sabe es mejor que el diablo que no. O podría ser que porque los otros 5 proyectos activos en la empresa utilizan esta cosa y ya tenemos un contrato de apoyo y seguirá pagando por que año tras año debe elegir una de las soluciones de los proveedores.
A veces se trata de ahorrar los milipuntos. Esta pieza es un 1,5% más barata que aquella, haz que funcione con esta pieza, no te preocupes por el NRE, piensa en el ahorro de fabricación en volumen.
A veces se trata de lo negativo. Un proveedor puede haber fastidiado a su empresa de un modo u otro. Incumplimiento del suministro de piezas anunciado que provoca retrasos o la cancelación de sus productos. Estafas de cebo y cambio (el 50,000feeforthesoftwaredidnotincludethe La tarifa de 1200 por el dongle necesario para desbloquear la licencia, es un elemento de coste adicional. Ah, y eso fue por usuario para la licencia flotante). Una vez que se firma el NDA para ver el manual de referencia de los programadores o la guía de diseño de referencia, se descubre lo terrible que es su ingeniería y se puede optar por poner en la lista negra todos sus productos de por vida. Historia pasada con un soporte técnico horrible. Cualquier número de razones puede hacer que no permitas que sus vendedores entren por la puerta principal, o que no vuelvas a mirar su sitio web.
A veces tiene que ver con el rendimiento, las interfaces, etc. Por ejemplo, digamos que tienes una interfaz que está cableada y necesita un pull up, un microcontrolador de la marca XYZ para 3perparthasasetofI/Opinsthatcanbeusedwithnootherexternalhardwarerequired,brandABChasa 3 parte que requerirá un transistor externo y una resistencia para que funcione como mínimo. Tu ejemplo del msp430, digamos que se trata del consumo de energía, la parte A puede requerir que el usuario sólo utilice una pila AAA y funcione durante meses, la parte B podría necesitar dos pilas AAA y funcionar durante semanas.
El caso más raro de todos es hacer realmente la ingeniería, estudiar a todos los proveedores, hacer los cálculos de consumo de energía, los cálculos de precio por unidad de su producto, el tamaño de la rom que necesitamos y la frecuencia a la que debe funcionar el chip, la lógica de pegado, etc. Por lo general, alguien (jefe/cliente/ingeniero senior) toma sus años de experiencia y dispara desde la cadera (a menudo utilizando uno o más de los anteriores) para elegir el camino (a menudo un buen camino que ahorra toneladas de tiempo en la programación y dólares) y la ingeniería se hace una vez para afinar la plataforma elegida.
Mi recomendación personal es ser flexible. La mayoría de las marcas/familias de microcontroladores, de alguna manera, se pueden conseguir en una placa de evaluación por menos de 50 dólares. Sparkfun, olimex o directamente del vendedor (ti para msp430 o stellaris, etc). Pruebe uno o más de cada uno, obtener una idea de lo que es en común y lo que es diferente, las herramientas, los cargadores, lo difícil de desbloquear, etc. De esta manera se consiguen al menos dos cosas, una es que cuando te obliguen a seguir un camino desde arriba o desde el cliente, puedes empezar a correr, y la segunda es que cuando te toque elegir la plataforma, estarás mejor informado sobre lo que hay y lo que no hay y podrás elegir la plataforma correcta (palabra cargada) en función del problema a resolver.
Incluso si usted no o no puede salir y gastar esa cantidad de dinero en el hardware, la mayoría tienen herramientas que se pueden descargar (de forma gratuita), en los casos como microchip ahora se puede obtener el compilador de C (que solía ser de alta tecnología), pero tienen que suscribirse (dar su dirección de correo electrónico). gcc como él o el odio que será en su futuro, de escritorio o incrustado, ensuciarse las manos y aprender a usarlo como un compilador cruzado. Prueba llvm también, estará por aquí un tiempo y le dará a gcc una seria competencia. De todas formas escribe o encuentra algunos emuladores, mame tiene muchos, gdb tiene algunos, etc. Yo he escrito uno llamado thumbulator en github, sólo en modo thumb ARM, similar a un cortex-m3 excepto que no soporta thumb2 (todavía se puede aprender bastante y tener programas que se ejecuten en ambos antes de cambiar a sólo hardware). He creado un emulador de msp430, pero me he estancado en él. El conjunto de instrucciones es tan pequeño que la mayor parte del trabajo es un proyecto de noche o tal vez un sábado. Lo mismo ocurre con el PIC, una larga tarde y tienes un simulador de juego de instrucciones con el que practicar el embebido. Si nada más puedes escribir los programas compilar y enlazar para tener una idea de cómo hacer eso y lo grande que terminan siendo los programas, cómo afinar los programas para producir un código más ajustado, etc.
En cuanto a C frente a ensamblador, algunos conjuntos de instrucciones son compatibles con C y otros no. Algunos compiladores son medianos y otros son realmente malos, y sólo unos pocos son realmente buenos (y suelen costar unos cuantos miles de dólares por vez o por año para usarlos). Al igual que con el rendimiento en cualquier lugar, si se quiere realmente empujar, puede ser necesaria una mezcla de lenguaje de alto nivel (digamos C) y ensamblador. Así que la habilidad no es escribir toda la aplicación en ensamblador, la habilidad es determinar qué código está causando que no se cumpla el tiempo/rendimiento y luego saber cómo resolverlo, ya sea a través de C, las opciones del compilador, la elección del compilador adecuado, o escribir ensamblador.
Te recomiendo que sepas ensamblador para todas las plataformas que elijas usar, si no es que tienes un conocimiento legible de él como con los embebidos te recomiendo desensamblar a menudo (mientras averiguas dónde están tus problemas de rendimiento). De todas formas, en muchas plataformas se requiere o se desea algo de ensamblador para el código de arranque.
Si quieres ahorrar ese 10-20% en el precio por unidad y quieres comprar el microcontrolador o el oscilador más barato/lento, o la parte de flash de 32Kb en lugar de la parte de flash de 64KB y puedes cubrir el coste de desarrollo con el volumen de ventas, y quizás una larga lista de otras cosas, puedes muy bien elegir escribir todo en ensamblador, rápido, bajo consumo, bajo coste, clientes felices.
Dependiendo de tu formación hasta ahora, tal vez no deberías preocuparte por escribir en ensamblador y sí por los aspectos de ingeniería eléctrica de los microcontroladores embebidos, leer esquemas, saber qué es colector abierto, triestado, push pull, pwm, adc, dac, y una larga lista de otros términos y cómo usarlos. bit banging i2c, spi, mdio, dallas one wire, etc. Uso de un scope como depurador de software. Aunque los osciloscopios pueden resaltar las cosas para usted hoy (un elemento de coste adicional), usted debe ser capaz de eyeball 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 juegues, salgas de la caja de arena de otra persona (el entorno de programación de Arduino, por ejemplo). Escribe el código de arranque que lleva al procesador desde el reset a tu programa principal(), haz todo lo que puedas para entender cómo cargar/programar la flash hasta el punto de que eso puede implicar escribir tu propio cargador aunque los de la estantería estén ahí. Todo es cuestión de educación personal, cuanto más sepas y puedas sacar de tu bolsillo trasero y utilizar, más control tendrás sobre tu carrera y más ceros al final del número de tu cheque de pago.
Hagas lo que hagas, NO intentes aprender x86 como tu primer ensamblador en un ordenador de sobremesa, elige prácticamente cualquier otra cosa y compila y simula de forma cruzada, ARM, THUMB, MSP430, PIC, AVR, incluso 6502, 8051. x86 es un conjunto de instrucciones horrible y como resultado ha sido transformado y moldeado de muchas maneras, microcodificado, no microcodificado, multi núcleo, etc. Guarda el x86 para lenguajes de alto nivel y sistemas operativos voluminosos. Utilízalo para tu editor de textos y compiladores y apunta a otra cosa.
Perdón por la larga respuesta... espero que haya sido de ayuda.