реклама на сайте
подробности

 
 
> самописный бутлоадер для m128, самописный бутлоадер для m128
IVN2013
сообщение Dec 25 2013, 21:32
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 27
Регистрация: 12-08-13
Пользователь №: 77 889



Доброго времени суток! После написания простенького бутлоадера на ассемблере для m8515 начал писать бутлоадер на си++
в atmel studio 6 для m128. До этого использовал stk500, теперь работаю с jtag ice. С си++ дела раньше не имел. Возник ряд вопросов. Не понимаю
как перейти в область бутлоадера, для написания его части кода, пробовал "jmp адрес"" или объявлял "bootloader section;" но при пошаговой отладке по
jtag просматривал память и не видел чтобы дальнейший код шел в области лоадера. Подскажите пожалуйста что может быть не так и как лучше осуществить этот переход. Или он произошел но не отображается?

И еще подойдет ли boot_page_fill(address, data); для ввода данных в память а boot_page_erase ( address ) чтобы стирать страницы? Если можно бросьте какой нить образец или ссылку на ресурс где это обсуждается!



Заранее спасибо!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
XVR
сообщение Jan 10 2014, 07:36
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата
В опциях линкера сместить text в область boot-а(может и не лучший способ...наверняка):
Лучше сделать файл с линкерным скриптом (*.ld). Возьмите стандартный, сделайте копию и отредактируйте под свои нужды

Go to the top of the page
 
+Quote Post
_Артём_
сообщение Jan 10 2014, 08:33
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(XVR @ Jan 10 2014, 09:36) *
файл с линкерным скриптом (*.ld)

А, кстати, где скрипт лежит? Как-то искал его - не нашёл...понятно, что плохо искал, но всё же, где он лежит по умолчанию? Для AVRGCC...
Go to the top of the page
 
+Quote Post
IVN2013
сообщение Jan 12 2014, 15:23
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 27
Регистрация: 12-08-13
Пользователь №: 77 889



Цитата(_Артём_ @ Jan 10 2014, 11:33) *
А, кстати, где скрипт лежит? Как-то искал его - не нашёл...понятно, что плохо искал, но всё же, где он лежит по умолчанию? Для AVRGCC...



Я не так давно имею дело с AVR GCC и С++ вообще, до этого работал с ассемблером. Насколько понял опции линкера доступны в проект > свойства...>toolchain >AVR/GNU linker> miscellaneous или > memory settigs . Не понял правда как все это настраивать. И что будет давать -Wl,--section-start=.text=0x30000? - адрес с которого будет заливаться весь код?, это ведь не определяет принадлежность кода к области загрузчика? или я что-то не так понимаю?
Смысл того что я хочу сделать это: исполняемая бесконечно программа application части, которая стартует сразу, и после прихода по USART определенной команды - переход в бутлоадер, после чего можно либо вернуться обратно, либо залить другую прошивку application части, после чего - сразу переход к ее выполнению. Пример записи во flash память из оперативки вроде есть в свободном доступе и я его как раз выше и привел, но вот как разместить код в области лоадера - не могу понять. В ассемблере с этим было проще: .org 0x0F00 и весь следующий код - уже в бутлоадере (к примеру для m8515). Только как быть здесь, с С++?

Может быть следующая инфа из boot.h описывает именно как разместить код в лоадер?: #define BOOTLOADER_SECTION __attribute__ ((section (".bootloader"))) Used to declare a function or variable to be placed into a new section called .bootloader. This section and its contents can then be relocated to any address (such as the bootloader NRWW area) at link-time. Не понял правда как это применить, т.к. си++ пока только знакомлюсь.

Если у кого есть какие мысли по этому поводу, пишите. Заранее спасибо!
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th August 2025 - 06:11
Рейтинг@Mail.ru


Страница сгенерированна за 0.01414 секунд с 7
ELECTRONIX ©2004-2016