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

 
 
> самописный бутлоадер для 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 13 2014, 11:53
Сообщение #2


Гуру
******

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



Цитата
По поводу опций линкера не совсем понял что значит параметр ".text" в примере -Wl,--section-start=.text=0x30000 ?,
Это имя секции. В GCC (точнее в ELF, но не суть) все данные (включая код и переменные) располагаются в каких то именованных секциях, и никак иначе. Линкер, в процессе генерации исполняемого образа, собирает вместе именованные секции, и располагает их по заданным адресам, как именно - описывается в скрипте линкера. Если вы не подаете скрипт - линкер все равно берет скрипт по умолчанию.
Секция .text содержит код программы (имя секции выбрано по историческим причинам).
Цитата
Не пойму - что здесь такое - "атрибут" ?
Это атрибут функции (в понимании GCC). В GCC есть масса разных атрибутов, в вашем случае это атрибут 'section'. Он задает имя секции (в выходном объектном файле), куда будет помещен код функции.
Цитата
и здесь ".bootloader" это произвольное название секции которое указываем в опции линкера: -Wl,--section-start=.bootloader=0x1E000 ?
Т.е. в любом случае нужно указывать название и адрес области в линкере?
Именно так.

Цитата
А, кстати, где скрипт лежит?
Увы, установленного AVRGCC у меня нет. Но можно выковырять из исходников binutils, там есть (шаблон в ld/scripttempl/avr.sc)
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 25th July 2025 - 22:12
Рейтинг@Mail.ru


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