STM32 - HAL St libs vs Standard Peripheral Library

344 views
Skip to first unread message

Geni Suarez

unread,
Feb 21, 2018, 8:18:08 AM2/21/18
to Embebidos32
Hace algún tiempo que no escribía aquí. Así que primero; un saludo a todos. 

Llevo un tiempo trabajando con las librerías HAL (generando ficheros unas veces con Cube y otras que no pero usando HAL_xx gualmente). Me he acostumbrado a trabajar con esta capa de abstracción que tras mi experiencia me han dado una seguridad y rapidez a la hora de desarrollar proyectos que gestionan periféricos de comunicaciones. Me han ahorrado mucho trabajo y presentas muchas opciones, claro es que no usas todas y es el precio a pagar; volumen inútil. Pero si te cabe en el micro diría que se acabó el problema. El tema es que no he trabajado nunca con esas otras librerías en las que sí ya los drivers los tienes que elaborar mucho más. No existe esa otra capa de abstracción que aportan las HAL, las cuales además te dotan de capacidad para portar tus módulos de un mcu ST a otro con relativa facilidad. Así que de momento para mí son muchas ventajas. Claro no puedo comparar las virtudes de trabajar con las SPL, tipo: stm32f10x standard library ó stm32L4x standard library etc.. Por eso quisiera lanzar este hilo para debatir ventajas y desventajas, compararlas a todos los niveles posibles con gente que se haya peleado con estas librerías o haya tenido experiencia más dilatada que servidora.
Hay desarrolladores que prefieren montarse sus propios drivers, customizarse un paso más los módulos de nivel driver y esa versatilidad parece desaparecer usando las HALs. Siendo reacios a trabajar por eso con las HAL. A parte de este hecho hay algo más que os eche para atrás? En qué situaciones puede ser más interesante usarlas las standard frente a las HAL. Aunque yo tengo la percepción, no sé si errónea, de que usando HAL el código es más portable (hacia otros stm32) que con las librerías standard.
Qué opináis? Beneficios técnicos? Diferencias; qué aporta el nivel de abstracción de la una y qué aporta el de la otra? Capacidades y potencia de la una vs la otra? Etc.. todo lo que podáis opinar y sugerir al respecto seguro que puede ser útil. 


Saludos cordiales.

Ricardo Casimiro

unread,
Feb 21, 2018, 9:27:50 AM2/21/18
to Embebidos32
si, definitivamente HAL es el oficial y se puede portar a otros mcu sin cambios y es mas rapido de usar, pero no me gusta porque tiene mucho codigo que no se usa y consume mucha flash(y por lo tanto el procesador tiene mas instrucciones que trabajar = mas lento) en cambio, en SPL es mas directo y la fuente de sus funciones tan bastante legibles que no hace falta un tutorial para usarla, aun asi yo me inclino por usar puro registro(CMSIS), es relativamente facil hacer las cosas con registro, con 2 o 3 ya tengo funcionando cualquier periferico 

jose carrasquel

unread,
Mar 8, 2018, 5:39:09 PM3/8/18
to Embebidos32
Yo tengo la impresion de que muchos de los desarrolladores de firmware para UC no tiene la buena practica de separar por capas. Para proyectos de largo plazo donde se requiere reusar codigo o migrar hacia otras tecnologias de UC, por dar dos ejemplos, es importante manejar el concepto de las capas. Para los que no lo han manejado a nivel de UC, las HAL son una buena experiencia. En mi opinion son muchas mas las ventajas

Dalmas Di Giovanni, Ariel

unread,
Mar 9, 2018, 6:20:06 AM3/9/18
to embebidos32
Hola a todos,
La verdad es que la HAL la empecé a utilizar hace unos cuantos meses atrás y si bien se observa bastante código de más ( gracias a esto se da un buen nivel de abstracción), la realidad es que funcionan muy bien, se logra utilizar periféricos bastante complejos de manera simple y rápida, y por otro lado está muy bien documentada (para mi un aspecto fundamental).
La SPL para mi presenta un nivel de abstracción importante, pero hay que "pedalear" un poco más. Pero la realidad es que me da la sensación que ST no le está dando soporte para todos sus uC.

La librería que se ofrece como versión de bajo nivel -Low Layer- la estuve mirando (no la usé) y realmente es casi como tocar los registros.

Hay una ppt de ST que resume las ventajas, comparto el link:

En resumen: comparto lo dicho en los comentarios anteriores, la HAL permite un muy buen "time to market", es muy estable y da un valor agregado en seguridad que suma. Ahora siempre y cuando se puede desperdiciar un poco de espacio en Flash y en performance de ejecución.

Saludos,
Ariel.

Geni Suarez

unread,
Mar 9, 2018, 8:41:41 AM3/9/18
to Embebidos32
Incluso para los que trabajan con capas, las librerías HAL tienen otra gran ventaja que una SPL o drivers propios no tienen y voy a comentar el caso práctico en que pueden ser una primera opción a la hora de usarlas, pese a que no aporten procesamientos tan óptimos. Contienen funciones muy potentes. Pero sin duda ST las presentan como la clave que te permite migrar proyectos de uC a otro entre ciertos modelos y familias de ST. Ahora mismo estoy ante un prototipo que hemos desarrollado basado en un L4. Se nos abre la puerta de una aplicación que haría modificar el prototipo para integrarle una interfaz que el actual micro no tiene pero uno de una familia superior sí. El desarrollo del controlador de la nueva interfaz no la vas a evitar. Pero lo que ya está montado intentas reaprovecharlo. He aquí la utilidad de tener esa capa HAL_ST, que supuestamente te independiza tu código de las diferencias entre un L4 y un F4 por ej. Así pues, investigando estoy y pronto podré comentar aquí los costos que finalmente ha tenido una portabilidad de código entre dos uC usando estas librerías. Supongo que al final usar una librería y no otra depende de la previsión de mantenimiento que tengas previsto para tu prototipo. Así como de las necesidades de timpo críticas. No es que una sea mejor que la otra, es que dependerá mucho de la circunstancia de la aplicación.

Un saludo.
Reply all
Reply to author
Forward
0 new messages