25 votos

STM32F4 y HAL

Así que he estado experimentando un poco con la STM32F407 (soy nuevo en el BRAZO) y decidió escribir una aplicación sencilla usando el HAL de las bibliotecas, ya que parece ST ha dejado los Periféricos Estándar de las Bibliotecas. Así que mi pregunta es, ¿cuál es el punto en HAL? No era StdPeriph haciendo su trabajo? ¿Por qué iban a suspender por HAL? A mí me parece que HAL es un completo desastre.

La documentación es HORRIBLE, al menos para StdPeriph hay una referencia completa organizado lo suficientemente bien como para encontrar fácilmente lo que usted desea (http://stm32.kosyak.info/doc/). Para HAL no es una mierda PDF (http://www.st.com/st-web-ui/static/active/jp/resource/technical/document/user_manual/DM00105879.pdf) que tiene aparentemente al azar de la estructura. La lectura de cualquier sección, por ejemplo, en relación con un periférico, me parece que no puede entender los requisitos para configurar y personalizar correctamente. Se parece más a las notas personales de alguien que no quiere olvidar cosas, de una referencia.

Sé que puedo usar CubeMX para inicializar GPIO y configurar los periféricos, pero mi objetivo es hacerlo yo mismo, así que puedo entender mejor su funcionamiento, no tenemos una pieza de software que lo hace todo por mí. Estoy haciendo algo mal? Es el BRAZO novato en mí que me confunde? O es que la documentación disponible QUE malo?

17voto

ElectronS Puntos 6

Déjame decirte que muchos de nosotros compartimos la misma decepción que usted tiene con HAL bibliotecas , de hecho están mal y poco documentado y todavía nuevo contiene muchos errores.

Así que para responder a su pregunta de por qué hizo SAN decidido HAL es simple:

  1. Quieren crear una capa de abstracción de hardware que en términos sencillos significa que quieren y desarrollo de software de código independiente de la micro-controlador , por lo que si usted escribe un código de hoy para stm32f4 y que necesita después de un par de años para migrar a stm32f7 será fácil y el código será altamente modular.

  2. Esto también permite que más desarrolladores como programador de software para trabajar con el micro-controlador sin realmente entender o entrar en la profundidad de los detalles de cómo el hardware es la consecución de una tarea. Empresas como ST y TI (a partir de este camino ahora) están tratando de hacer desarrollo integrado similar a la de la PC de desarrollo de código donde se use de alto nivel de drivers para desarrollar un código RÁPIDO. La torpeza y la falta de optimización en sus conductores y de las bibliotecas, se ve compensado por el alto rendimiento de los dispositivos ARM.

  3. Creo que STM32cubeMX es una gran herramienta si usted está usando HAL bibliotecas , debido a que la mayoría de tiempo de trabajo se está inicializando periféricos y ahora usted puede hacerlo en un tiempo muy corto , con interfaz visual que se puede cambiar fácilmente sin afectar el código de usuario ( si se escribe el código en el lugar apropiado ) Usted puede utilizar Stm32cubeMx y, a continuación, revise el código y tratar de entender cómo y por qué se están usando cada función , de esta manera usted está tratando de resolver un ejercicio y tener manual de la solución cercanos para la corrección de la que es gran OMI.

  4. Núcleo ARM es complejo tranquilo así que la vieja métodos que utilizamos en 8-bits micro controlador como el manejo de los registros directamente (se escribe C en la asamblea de la moda) no es viable , se requiere de mucho tiempo y hace que el código sea difícil de mantener debido a la complejidad de la arquitectura (compruebe el ajuste del reloj, por ejemplo)

15voto

Bartosz Radaczyński Puntos 7160

Crear sus propias bibliotecas es bastante simple. Su registro de especificaciones de la documentación es bastante bueno, la mayoría, si no todos los periféricos son fáciles de instalar. Me resulta mucho más doloroso para el uso de sus bibliotecas. pero tal vez eso es sólo conmigo. Esto es cierto para st, nxp, ti, atmel para nombrar unos pocos (no tanto para intel y microchip).

¿Por qué cambian las bibliotecas, puede haber cualquier número de razones, algunas de las nuevas jefe tomó, algunos división consiguió apagar otro tomó el relevo. La comercialización quería una nueva imagen para el producto. Como los Electrones se mencionó, podría ser un intento de resumen de distancia desde el hardware más para atraer a los usuarios que no están dispuestos o son capaces de hacer metal desnudo. Yo iría más lejos y decir que probablemente está tratando de competir con el Arduino fenómeno. Que mbed y los demás siempre ha tratado de hacer y no se pudo (incluso antes de Arduino).

En cualquier caso, cuanto más lejos del hardware se consigue la más hinchado y más lento, por lo que más se tiene que pasar por la unidad para la rom, ram y mhz. Sólo por lo que podría pasar la misma cantidad de tiempo de programación? El simple hecho de hacerlo de forma diferente?

Dicen ustedes que vienen de la PIC mundo, ahora se hizo un acuerdo de trabajo con herramientas, su chip docs fueron terribles, algunos de los peores. se compensa con las bibliotecas y los areneros.

Al final del día, intente varias opciones, probar los productos de la competencia para ver cómo sus herramientas de comparar. Un montón de que usted puede hacer por libre solo para ver si tiene sentido y puede compilar cosas. Tal vez incluso el uso de un conjunto de instrucciones simulador. Encontrar uno que coincida con.

Nota, sin enlatados bibliotecas opción SIEMPRE está disponible para usted. Usted no está limitado en cuanto a lo de las herramientas que puede utilizar, ¿qué sistema operativo del host, lo que ide, editor, etc. Se podría palo en la programación de las partes, si sus opciones son muy limitadas en el que el respeto a pasar a algún otro chip o el proveedor si puede.

Para vender un chip de producto como este, que tienen que proporcionar un entorno de desarrollo si es del todo suya o cosas gratis que se pegan juntos. Y que tienden a poner una biblioteca de algún tipo juntos. Sólo tiene que buscar sólo lo suficientemente bueno y el parpadeo del led de ejemplo el trabajo sólo lo suficientemente bien como para obtener su gestión o su equipo de hardware para el diseño de su producto, entonces cuando su junta producto es lanzado a través de la pared de software, es cuando el dolor se hace o no llega. Si es casi funciona pero no del todo es una gran victoria para el chip de proveedor como ahora va a pagar por el soporte técnico para que duren poco. Por lo que es en su mejor interés casi allí, pero no del todo.

Los proveedores de chips sólo tiene que mirar lo suficientemente bueno para conseguir el diseño de ganar. Ellos tienen que seguir mejorando (? cambiando) el producto para atraer a nuevos y viejos clientes. Por lo que se tiene que hacer en off, lo lejos y cómo muchos antes de bibliotecas de la seguir apoyando, varía. Tan sólo acerca de cualquier biblioteca que te acostumbras va a desaparecer con el tiempo. Así que aprende a adaptarse (o no usar sus cosas y vayan por su cuenta, que puede apoyar de forma indefinida). Concedido, idealmente, sólo es necesario para el desarrollo de la aplicación una vez por producto, hacer que su firmware perfecto (buena suerte si el uso de las bibliotecas de terceros), y usted no necesita ir hacia atrás y encontrar un equipo que va a cargar sus herramientas si usted puede encontrar una copia de la misma, y recordar cómo usar la vieja biblioteca. Recuerde que no sólo debe usted guardar su código fuente, pero usted debe guardar todas sus herramientas y documentos.

Sus bibliotecas sólo son compatibles en generalmente un conjunto de herramientas, debajo de uno, tal vez dos IDEs y a veces sólo en Windows, y algunas versiones. De nuevo no tienes ninguna de esas limitaciones, definitivamente no es para el BRAZO, si usted hace su propia cosa. Usted siempre puede leer cualquiera o todas de sus bibliotecas para ver cómo hacen las cosas. Pero que a menudo es muy asustadizo, no las usan a su equipo de desarrolladores de bibliotecas, he extraído un par de líneas de código para pedir entrevista a los candidatos lo que está mal con este código.

para ahorrar tiempo y esfuerzo, tanto en el silicio lado y el lado del software que muy a menudo de reciclaje de la misma ip, así que una vez que vea cómo el periférico funciona en una de sus fichas a menudo funciona de la misma manera en muchos otros de sus fichas. Sí, el reloj de sistemas puede ser complicado, con o sin sus bibliotecas. Alta probabilidad de bricking el chip, que es donde la mayor parte de mi chip/junta de bricking ha sucedido. Ayuda a entender cómo sus fichas de trabajo, por ejemplo la del AVR, la mayoría, si no todas, pueden ser reprogramadas, mientras que el chip está en reset, por lo que cualquier código de malo que se mete hasta los pines necesarios para re-programa, o se bloquea lógica necesaria para reprogramado, no importa, usted puede reprogramar esas fichas. Algunos de estos proveedores (st), posee en su interior un gestor de arranque que puede seleccionar el uso de una correa (BOOT0 por ejemplo, en el st mundo), usted puede poner fácilmente su propio correa, mientras que el desarrollo y si debe o no utilizar una biblioteca.

Un tamaño se ajusta a todos los ajusta a nadie. Particularmente cierto para el software. Por lo que cualquier intento de resumen de distancia el hardware, sólo lo hace lento y la hinchada. Así se podría obtener un mayor chip y ejecutar linux en ella, si eso es lo que son realmente después. Mucho de esto es como resultado de los desarrolladores, aunque, al no querer ensuciarse las manos, así que básicamente hemos pedido esto, y están tratando de suministro.

De nuevo, no encerrarse en st o cualquier proveedor (a menos de que sea demasiado tarde y la gestión y / o el equipo de hardware ha pegado a usted, tenga en cuenta el stm32 productos son agradables y fáciles de usar). Alrededor de la tienda. TI está poniendo una gran cantidad de huevos en el cortex-m4 cesta. Usted puede hacer el mbed cosa en un número de estos brazo de productos, así como el proveedor de soluciones compatibles.

Una cosa que siempre puedes confiar, es que van a cambiar las bibliotecas a partir de tiempo al tiempo y, finalmente, dejar de apoyar a la que se acostumbró.

15voto

Sé que esto va a ser largo y obstinado, pero como hemos (con éxito) a lanzado nuestro nuevo producto utilizando el HAL, creo que vale la pena ser considerado. Además, yo no trabajo para ST, he odiado cada bit de la HAL, casi reiniciado el proyecto con StdPeriph, he sentido el dolor, pero ahora entiendo por qué.

Primero, un poco de fondo. Desarrollamos de ultra bajo consumo, sistemas de telemetría, y nuestro producto es alimentado por una STM32L1. Cuando empezamos a trabajar en el firmware, teníamos la costumbre de opciones para (bare metal) ST dispositivos: hacer todo a mano, el uso de la StdPeriph bibliotecas, o ir con el HAL. El ST chicos nos convenció para ir con el HAL - y así lo hicimos. Fue doloroso, tuvimos para evitar errores en el software (el I2C parte que nos llevó locos por bastante tiempo) y todavía me gusta la arquitectura general. Pero funciona.

Cuando me cambié de escritorio incorporado, un poco más que hace un año, que fue sorprendido por algo extraño que no pude nombre o incluso comprender. Con el tiempo fui capaz de comprender lo que estaba - o más bien, lo es - : integrado en el mundo está en transición. El silicio se presenta más barato de todos los días y Mcu son más potentes y versátiles. Más y más dispositivos, independientemente de su tamaño, necesidades de alimentación, dependen de la genérica de la Mcu. Más y más compañías se unen el partido, con una horda de nuevos desarrolladores con diversos orígenes. La "media" de la cultura aleja de la tradicional "EE chico con la programación de la magia de las habilidades" a "SW chico con vagos conocimientos de hardware".

Si esto es bueno o malo es irrelevante. Simplemente ocurre. En realidad, sucedió también para el mundo del software, más de una vez. El auge de la web en el año 2000 atraído PHP/MySQL novatos - ve y dile a ellos hay registros en la CPU, que responderá "yo estoy usando Linux, así que no hay Registro en mi sistema operativo". Anteriormente, multi-usuario de los sistemas operativos que se ejecutan en modo protegido permitido perezoso a los desarrolladores nunca establecer un ISR en toda su carrera y estar bien. Incluso antes, teclados y pantalla, tarjeta de punzones y los fabricantes de impresoras a volver loco.

Y sí, las tendencias actuales me hacen personalmente triste, como yo lo veo ignorantes a los desarrolladores en el temor con la más brillante de técnicos, mientras que siendo totalmente incapaz de enlace con la historia. Cuando veo a un joven me la codificación de un juego en Javascript con WebGL en 2015, quiero gritar "no Hay nada nuevo! Hice lo mismo con el C++ y el 3Dfx SDK en el año 1995!". Lo que la historia no se dice es que su juego se ejecuta en el teléfono móvil, mientras que el mío es necesario un gamer de PC (y un instalador, y no podía forzar las actualizaciones de la web). La verdad es que podía desarrollar un juego en un mes, donde yo hacía lo mismo en seis, o doce.

Obviamente, ni ST o TI o Intel o quien fabrica los chips quiere perderse la vuelta. Y están en lo correcto. El HAL es ST respuesta, y en realidad es bastante sólida, no sólo en el negocio o de marketing, pero en la parte de ingeniería así. La razón por la que es de sonido se encuentra en el nombre:

El Hardware De La Abstracción De La Capa De

Si cualquier cosa, esto es lo que usted debe recordar. El HAL es un esfuerzo para alejarse de el hardware. Es buena la ingeniería, ya que nos permite separar la funcionalidad de los detalles. Capas es lo que permite desarrollar programas complejos - una abstracción por encima de otro, hasta el hardware. La abstracción es en realidad la herramienta más poderosa que tenemos para gestionar la complejidad. Dudo mucho que nadie en este planeta sería capaz de programar un navegador web en la asamblea de una CPU específica.

El cambio cultural es, de hecho, difícil de digerir, pero como tengo que reconocer que uno no necesita haber leído Knuth del Arte de la Programación de ordenadores para desarrollar aplicaciones web, los EE mundo debe admitir que hay recién llegados que puede (y será!) desarrollar código incrustado sin necesidad de leer el Puto Santo Manual de Referencia.

La buena noticia es que los nuevos jugadores no significa menos trabajo para los jugadores de mayor edad muy por el contrario, en mi humilde opinión. Que se va a llamar cuando las cosas "no funcionan?". Si usted tiene RTFM (a diferencia de ellos), y si usted sabe lo que cada bit de este oscuro registro de configuración de hacer, usted tiene una ventaja.

Entre sus lecturas y experimentos, sólo tiene que ir con el HAL. Nueva MCU? No hay problema. Nueva MCU línea? Ningún problema (lo programé una prueba en un STM32F4 Núcleo en un día con CubeMX y, a continuación, simplemente portado a nuestro dispositivo ... se sentía a la derecha). Burla para las pruebas de unidad? No hay problema. La lista continúa, ya que la abstracción es bueno.

Por supuesto, la HAL en sí no es 100% OK. Es la documentación es horrible (pero tienes RTFgestión de recursos humanos, ¿no?), hay errores, SAN justo de dumping de una versión beta en nosotros (parece bastante estándar en estos días) y el apoyo de su público es una broma. Pero no libera el HAL habría sido aún peor.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X