Go Down

Topic: Eliminando el bootloader (Read 803 times) previous topic - next topic

DoctorTracker

Hola a todos.

Ya tengo desarrollado un proyecto con Arduino. Ahora quiero grabar el ATMega168 sin bootloader para ahorrar espacio en memoria. Ayer conseguí grabar el .hex que me deja el IDE dentro de "applet" con AVRStudio en un chip sin bootloader, pero claro, el .hex incluye el bootloader. Lo máximo que he conseguido es programar los fusibles de modo que el programa arranque después del bootloader (en $1C00).

Claro que me gustaría ganar los 2Kb que ocupa el bootloader.

¿Alguien sabe como compilar con el IDE y crear un .hex que no tenga bootloader?

Gracias por vuestra ayuda.

hj43us

Si no recuerdo mal el hex generado con el IDE no incluye el bootloader.  Pero para grabarlo en el chip debes utilizar un programador ICSP (yo he usado el programador que usa el puerto paralelo).

Saludos,

Miguel

DoctorTracker

Ummm. No, el IDE compila con el bootloader, porque de hecho si compilo un sketch básico ocupa mucho. Eso creo, por lo menos. Gracias por la ayuda.

hj43us

No parece que tenga sentido cargar un programa que incluya el bootloader.

Si lo piensas el bootloader tiene que estar cargado ANTES para facilitar la carga del programa posterior.

Aunque tu programa sólo tenga un par de líneas el tamaño del código que incluye diferentes librerías puede ser considerable pero eso no significa que el bootloader se incluya.

El bootloader esta diseñador para que el sketch se cargue en la memoria inmediatamente superior pero evitando que la carga lo destruya.

Si en algún momento el bootloader tiene que ser restaurado esto hay que hacerlo con la conexión ICSP.

Si mi explicación no te convence puedes hacer fácilmente una comprobación: descarga el cargador (mediante conexión ICSP) y busca ese código en el HEX compilado.

Saludos,

Miguel

DoctorTracker

Hola Miguel.

Muchas gracias por tu ayuda. Lo que antes quise explicar, y no me expliqué bien, es que cuando compilo con el IDE el tamaño máximo que me permite es de unos 14000 bytes cuando el ATMEGA168 permite 16kb.

De hecho ya he grabado con el AVRISPmkII el .hex que genera el IDE y puedo hacer (cambiando los fusibles con AVRStudio) que el programa arranque inmediatamente [Seleccionando en las opciones BOOTSZ = Boot Flash Size = 128 words start address at $1F80] o que tarde en arrancar el tiempo de espera del bootloader [Seleccionando en las opciones BOOTSZ = Boot Flash Size = 1024 words start address at $1C00].

Tambien he probado a grabar con el AVRISPmkII el .hex que genera el IDE y luego sigue incorporando la zona del bootloader ya que puedo cargar el programa con el IDE.

La realidad es que en los proyectos en los que ando metido, esos bytes que ocupa el bootloader me vendrían muy bien.

Igual ando liado con algo, pero no encuentro que es lo que hago mal.

Gracias.

Rafa

DoctorTracker

#5
Sep 16, 2008, 08:21 am Last Edit: Sep 16, 2008, 08:22 am by DoctorTracker Reason: 1
Aunque después de pensar en lo que me propones, es posible que el .hex que he grabado con el AVRISPmkII via ICSP fuese el leído por ICSP de un micro previamente grabado con el IDE (por eso ese .hex tiene bootloader).

Creo que empiezo a ver la luz.

Esta tarde probaré a compilar un esquema sencillo, luego grabo el .hex con AVRISPmkII via ICSP, y desmarco la casilla de BOOTRST que es la que hace que el micro arranque en la posición $0000.

El problema es que sigo sin saber como hacer para que el IDE me deje compilar llegando a 16384 bytes de ejecutable.

Saludos.

Rafa

Go Up