Así que me estoy cambiando de Fotos para el BRAZO y me compré un STM32F4 discovery de la junta. Hasta ahora entiendo que programa se puede acceder a todos los registros directamente en la memoria (de manera obvia) y también hay 3 principales de las bibliotecas se puede utilizar para hacer su vida más fácil. Ahora mi pregunta es, que uno de esos 3 (CMSIS, HAL, Sexual, Periféricos Lib) es el más BAJO nivel uno? es decir. el uno con el menor sobrecarga. Mi objetivo es aprender el controlador del funcionamiento interno y no hacer mi vida más fácil (sólo un poco), así que me gustaría saber cual de estos es más cerca del núcleo sin necesidad de recurrir al uso de la asamblea.
Respuestas
¿Demasiados anuncios?Definitivamente el CMSIS. No es exactamente una biblioteca, principalmente contiene las definiciones de los diferentes registros.
Es exactamente lo que uno necesita para tener acceso a los registros del microcontrolador fácil, así como a poner en marcha su propio HAL. Que no tiene techo, ya que sólo el acceso a los registros.
Tenga en cuenta que CMSIS, a diferencia de los otros dos, es definido por el BRAZO y no PT. Esto significa que los diversos CMSIS bibliotecas que hay para los distintos microcontroladores son bastante similares, lo que ayuda enormemente en la portabilidad.
Además, CMSIS es el más simple por lo que es (OMI), la más versátil y la más confiable, con posiblemente menos (o no) de errores. Algunos hal bibliotecas para los distintos mcu de la que he utilizado son muy famosos por sus errores.
Por otro lado, CMSIS necesita bastante más trabajo de usted. Sin embargo, es mi elección personal, prefiero invertir mi tiempo en la creación de la calidad de las bibliotecas, que se adapte a mis necesidades, y la comprensión de cómo el chip funciona, que acaba de pasar el tiempo para aprender una nueva biblioteca.
Para aprender cómo funciona desea utilizar ninguna de las anteriores. Obtener un brazo de la cruz del compilador y de la documentación de st, hecho. Comenzar la codificación. estos chips son generalmente muy fáciles de programar. la documentación que se le indica qué bits, en lo que se registra a hacer qué.
Cualquiera o todas de estas bibliotecas están destinados a eliminar esa comprensión/carga/de trabajo de usted y hacer que se sienta como un solo llamar a una api como de programación de aplicaciones de la experiencia. Que es lo que un montón de gente quiere. Usted puede utilizar todo el origen de estas bibliotecas para ayudar a entender, pero como usted consigue mejor en éste se encuentran los agujeros y los problemas en las bibliotecas, a veces muy aterrador código. código lanzado juntos, escrito de forma genérica y, aproximadamente, la portada de un chip a otro, tal vez el apoyo a las características de su chip no tiene, etc. Y todos ellos tienen una cantidad excesiva de sobrecarga. De 10 a 100 veces demasiado código para la tarea, seguro que muchas se puede optimizar, pero ¿por qué tienen allí en primer lugar?
Ya sea propio o usar una de estas bibliotecas, usted debe buscar en el código fuente de las librerías que se usan para ver si se siente cómodo con lo que están haciendo, si tiene sentido, coincide con el chip de la documentación, etc. Cuando algo sale mal, usted es probable tener que cavar a través de sus cosas tanto como el tuyo para averiguar por qué.
Nota el chip docs no son perfectos tampoco, que es parte de la diversión.
Yo no entiendo por qué la asamblea viene en un debate sobre el metal desnudo de programación. Usted puede conseguir por muy poco de la asamblea. Para estos cortex-m chips, que técnicamente sólo se necesita esta cantidad de asm para obtener arrancado:
.globl _start
_start:
.word 0x20001000
.word main
Usted no puede confiar en los datos ni bss y usted no puede volver de principal con un mínimo de asm. Pero esa es toda la asm usted NECESITA para la más elemental de metal desnudo. Ahora si quieres hacer interrupciones necesita más entradas en la tabla de vectores. más .palabra de líneas. Yo recomiendo más asm, pero tal vez 10 o 20 líneas más.
normalmente todos los asm que yo uso.
.cpu cortex-m0
.thumb
.thumb_func
.global _start
_start:
stacktop: .word 0x20001000
.word reset
.word hang
.word hang
.word hang
.word hang
.word hang
.word hang
.word hang
.word hang
.word hang
.word hang
.word hang
.word hang
.word hang
.word hang
.thumb_func
reset:
bl notmain
b hang
.thumb_func
hang: b .
.align
.thumb_func
.globl PUT16
PUT16:
strh r1,[r0]
bx lr
.thumb_func
.globl PUT32
PUT32:
str r1,[r0]
bx lr
.thumb_func
.globl GET32
GET32:
ldr r0,[r0]
bx lr
.thumb_func
.globl GET16
GET16:
ldrh r0,[r0]
bx lr
.thumb_func
.globl dummy
dummy:
bx lr
.end
Sí, se dice cortex-m0 pero esto es real bootstrap para mi m4 código. Yo prefiero esto a ser pulgar no thumb2. Y acabo de volver a usar este código de un cortex-m a otra, cambiando el puntero de la pila la dirección según sea necesario, por lo que funciona para m0, m3 y m4. Yo no tengo un m7 aún ni he investigado mucho.
La habilitación de la fpu puede requerir un par de líneas más de asm como las instrucciones específicas que son necesarias. Pero el punto es no confundir el bajo nivel de programación y asm. C tiene lo que usted necesita para configurar el chip, así como escribir una aplicación. Las bibliotecas de las que están hablando, están escritas en C no asm, así que, obviamente, no necesitan usar asm.
Si quieres aprender el funcionamiento interno, escribir su propio código. No utilizar estas bibliotecas de otra manera que como una referencia. A veces es más fácil simplemente hack que intente leer a través de su código. (no sólo de la ST, pero todos los vendedores. Uno de los vendedores tenía una línea de código, de forma alarmante, yo lo uso como una pregunta de la entrevista, nope, no se va a publicar aquí).
SAN definitivamente, pero otros fabricantes así, para ahorrar energía, han reloj permite para las secciones de la ficha, así que antes de ir y probar el parpadeo de un led, usted necesita encontrar el bit de habilitación para que gpio bloque y ver si se trata de restablecer habilitado, si no, a continuación, habilitar, hablando para que gpio de la lógica sin un reloj permitiendo que simplemente se cuelga el procesador como se está a la espera de una respuesta lógica de que nunca va a responder. No siempre te dicen acerca de estos permite. Una vez activado, a veces caminando a través de la inicialización de algunas particular periférica. SAN docs son bastante buenas. Viniendo de microchip de la cual se obtiene una muy mala calificación de la documentación, usted no debe tener un problema.