Autor Tema: Building Bare-Metal ARM Systems with GNU  (Leído 3190 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Carl47D

  • PIC16
  • ***
  • Mensajes: 160
Building Bare-Metal ARM Systems with GNU
« en: 09 de Octubre de 2015, 22:36:56 »
Un artículo de Embedded para construir sistemas ARM bare-metal con GNU, del 2007.
http://www.embedded.com/design/mcus-processors-and-socs/4007119/Building-Bare-Metal-ARM-Systems-with-GNU-Part-1--Getting-Started

(solo hago ctrl+c, ctrl+v del "temario")

Part 1 Getting Started
Part 2 Startup code and low level initialization.
Part 3 The Linker Script.
Part 4 Compiler options for C and C++.
Part 5 Fine-tuning the application.
Part 6 General Description of Interrupt Handling.
Part 7 Interrupt locking and unlocking policy.
Part 8 Low level interrupt wrapper functions.
Part 9 C-level ISRs and other ARM exceptions.
Part 10 Test Strategies.


PS. No supe como ponerle 'titulo' a los links y que no aparezca el link entero :/.

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Building Bare-Metal ARM Systems with GNU
« Respuesta #1 en: 09 de Octubre de 2015, 22:59:06 »
Esta muy bueno, lo que si solo tener en cuenta que es para un micro con nucleo ARM7TDMI , mientras que los Cortex son otros ARMv7-M (M3 y M4) y ARMv6-M (M0+), El primero puede funcionar con los 2 set de ARMs, el Cortex no, solo Thumb/2. Pero tiene muchas cosas que son validas para ambos, lo cual es bueno  :D.

Gracias por el aporte

Desconectado Carl47D

  • PIC16
  • ***
  • Mensajes: 160
Re:Building Bare-Metal ARM Systems with GNU
« Respuesta #2 en: 09 de Octubre de 2015, 23:04:22 »
Otra vez ese maldito ARM7TDMI  :D, crei haber leido que era compatible para los ARMv7 y ARMv9 en el Getting Started.

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Building Bare-Metal ARM Systems with GNU
« Respuesta #3 en: 09 de Octubre de 2015, 23:19:51 »
Si, el proceso es el mismo, por eso es util.
Lo que hay que tener en cuenta es que si van a usar el codigo no pueden usar instrucciones de ARM, los Cortex M0+ solo poseen Thumb de 16 bits y creo que 4 instrucciones de 32bits de thumb2.
Asi que no es lo mismo poner una instruccion de una Suma de Thumb: La cual permite solo seleccionar el segundo operando  a un regristro R o un literal de 8 bits
Contra una de suma de un ARM/Thumb2 que permite un segundo operando que puede ser un registro R, con offset, write back y encima  shift en una sola instruccion. Casi nada de diferencia ejeje

Seguro que leiste ARM7 y ARM9 :P
Ya en algun momento cuando pueda y tengo un tiempo voy a hacer algo en ASM, hay que leer mucho, arquitectura, set de instrucciones, etc. Por eso mismo no hice nada todavia xD

Desconectado juaperser1

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 2979
Re:Building Bare-Metal ARM Systems with GNU
« Respuesta #4 en: 10 de Octubre de 2015, 06:59:26 »
Hola carlos, la confusión que has tenido es que has confundido microcontrolador con microprocesador, te explico los sistemas con procesador casi siempre, por no decir siempre se utilizan con un sistema operativo, pero distinto a los existentes para los microcontroladores es decir no un freertos por ejemplo.

Los procesadores se suelen programar en sistemas operativos que no son en tiempo real, o con tiempo real pero muy distinto a los de los microcontroladores.

No obstante, un procesador, tambien lo puedes programar en c u asm, sin necesidad de sistema operativo, a la actividad de programar un procesador con c o asm, sin un sistema operativo de por medio, se le llama "bare metal" y eso es lo que tu has encontrado, una guía para programar arm7 y arm9 en c con el compilador GNU ( creo, no me lo he leído solo le he dado jn vistazo)


Un saludo
Visita mi canal para aprender sobre electrónica y programación:

https://www.youtube.com/channel/UCxOYHcAMLCVEtZEvGgPQ6Vw

Desconectado manwenwe

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2211
Re:Building Bare-Metal ARM Systems with GNU
« Respuesta #5 en: 10 de Octubre de 2015, 07:35:39 »
Hola,

bajo mi punto de vista lo interesante del bare-metal es cuando tienes al menos 2 cores: uno corre un linux para comunicarse con el "mundo real" de forma sencilla y el otro corre tareas de tiempo real (el core en bare-metal). Esto se conoce como AMP:

https://en.wikipedia.org/wiki/Asymmetric_multiprocessing

También es muy usual un core con linux y el otro con RTOS (freeRTOS, xenomai, etc.). De todas formas muchos procesadores nuevos incluyen cores muy potente (A7, A8, A9, A15, etc.) y otros más pequeñitos para las tareas de tiempo real (M4, M7, etc.) con lo que ya no hace falta utilizar el grande para tareas simples de tiempo real ya que normalmente se infrautilizan recursos.

Mi opinión.
Saludos.
Ojo por ojo y todo el mundo acabará ciego - Mahatma Gandhi -

Desconectado juaperser1

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 2979
Re:Building Bare-Metal ARM Systems with GNU
« Respuesta #6 en: 10 de Octubre de 2015, 07:44:46 »
Hola,

bajo mi punto de vista lo interesante del bare-metal es cuando tienes al menos 2 cores: uno corre un linux para comunicarse con el "mundo real" de forma sencilla y el otro corre tareas de tiempo real (el core en bare-metal). Esto se conoce como AMP:

https://en.wikipedia.org/wiki/Asymmetric_multiprocessing

También es muy usual un core con linux y el otro con RTOS (freeRTOS, xenomai, etc.). De todas formas muchos procesadores nuevos incluyen cores muy potente (A7, A8, A9, A15, etc.) y otros más pequeñitos para las tareas de tiempo real (M4, M7, etc.) con lo que ya no hace falta utilizar el grande para tareas simples de tiempo real ya que normalmente se infrautilizan recursos.

Mi opinión.
Saludos.

Hazle caso a mawenwe que el fue el que me enseño lo que es baremetal y el que me hizo interesarme por los procesadores xd

De lo que comentas a mi me encantaría hacerme un proyecto con el i.mx6solox con un A9 y un M4 sería estupendo para muchos proyectos que tengo en mente para un futuro. Pero todavía no estoy preparado para algo tan complejo. Y empiezo por cosas mas simples

Un saludo
« Última modificación: 10 de Octubre de 2015, 07:46:49 por juaperser1 »
Visita mi canal para aprender sobre electrónica y programación:

https://www.youtube.com/channel/UCxOYHcAMLCVEtZEvGgPQ6Vw

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Building Bare-Metal ARM Systems with GNU
« Respuesta #7 en: 10 de Octubre de 2015, 07:53:39 »
Curiosamente hoy cree un archivo assembler de ARM, no hace nada tiene un loop infinito pero el compilador me lo tomo como si nada :P, eso si teniendo a C en el startup + utilizando el vector de resete y demas tambien con C. No es puro ASM. Pero algo es algo.. al menos ahora el main es ASM xD.. Me olvide decir que con GCC. y ahi que probarlo en el micro :P.

Asi que por lo menos vamos a intentar  a hacer algo mas interesante antes que meter eso solo xD

Desconectado juaperser1

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 2979
Re:Building Bare-Metal ARM Systems with GNU
« Respuesta #8 en: 10 de Octubre de 2015, 08:05:23 »
Curiosamente hoy cree un archivo assembler de ARM, no hace nada tiene un loop infinito pero el compilador me lo tomo como si nada :P, eso si teniendo a C en el startup + utilizando el vector de resete y demas tambien con C. No es puro ASM. Pero algo es algo.. al menos ahora el main es ASM xD.. Me olvide decir que con GCC. y ahi que probarlo en el micro :P.

Asi que por lo menos vamos a intentar  a hacer algo mas interesante antes que meter eso solo xD

Así me gusta killer, que quiero un guía tutorial completa de asm-c para Arm como las que me gustan a mi, ...para tontos.... Haha y rapidito o como tu dices, le meto fuego al foro :D
Visita mi canal para aprender sobre electrónica y programación:

https://www.youtube.com/channel/UCxOYHcAMLCVEtZEvGgPQ6Vw

Desconectado Carl47D

  • PIC16
  • ***
  • Mensajes: 160
Re:Building Bare-Metal ARM Systems with GNU
« Respuesta #9 en: 10 de Octubre de 2015, 12:34:18 »
Que tal, como van?

Pensaba que bare-metal era programar el micro escribiendo directo en los registros xD.
Pero bue les hago caso, nunca he programado con RTOS y menos algun Cortex A, asi que tambien le voy a meter a eso :mrgreen:

Gracias por las aclaraciónes y también estoy a la espera del tutorial de ASM  ((:-))


Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Re:Building Bare-Metal ARM Systems with GNU
« Respuesta #10 en: 10 de Octubre de 2015, 16:10:45 »
Independientemente de algunos nuevos términos marketineros esta buena la guía porque se aplica para cualquier procesador y microcontrolador. Es bueno saber que pasa cuando el micro recibe alimentación y empieza a arrancar así como también que pasa cuando arranca un programa hecho en C. Obvio que no es lo mismo arrancar un microcontrolador que un procesador.

Saludos !

Desconectado manwenwe

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2211
Re:Building Bare-Metal ARM Systems with GNU
« Respuesta #11 en: 10 de Octubre de 2015, 16:26:13 »
Richi,

no te creas que es tan distinto. Es mucho más complejo por dentro pero al final son registros. Yo como vengo de los microcontroladores a veces cuando hago un driver en linux (muy de vez en cuando) y no se como encender un gpio, por ejemplo, me cabreo y directamente remapeo los registros y escribo en ellos como si fuera un PIC. Luego llega mi socio que sabe un montón de Linux y me dice que soy un animal :P. Pero al final funciona igualmente....

Saludos!
Ojo por ojo y todo el mundo acabará ciego - Mahatma Gandhi -

Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Re:Building Bare-Metal ARM Systems with GNU
« Respuesta #12 en: 10 de Octubre de 2015, 17:18:19 »
Richi,

no te creas que es tan distinto. Es mucho más complejo por dentro pero al final son registros. Yo como vengo de los microcontroladores a veces cuando hago un driver en linux (muy de vez en cuando) y no se como encender un gpio, por ejemplo, me cabreo y directamente remapeo los registros y escribo en ellos como si fuera un PIC. Luego llega mi socio que sabe un montón de Linux y me dice que soy un animal :P. Pero al final funciona igualmente....

Saludos!

jajajajaa ! Igual no siempre que funcione significa que este bien echo.

Desconectado manwenwe

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2211
Re:Building Bare-Metal ARM Systems with GNU
« Respuesta #13 en: 10 de Octubre de 2015, 17:22:26 »
jajajaja: que razón tienes!!!
Ojo por ojo y todo el mundo acabará ciego - Mahatma Gandhi -