roboforum.ru

Технический форум по робототехнике.
Текущее время: 01 мар 2025, 13:42

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 16 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Доступ к коду бутлоадера AVR из главной программы
СообщениеДобавлено: 26 июн 2010, 16:44 
Не в сети
Аватара пользователя

Зарегистрирован: 29 апр 2008, 21:15
Сообщения: 4130
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич
Есть МК с подключенной картой SD. С карты играются звуковые файлы, туда пишутся логи и прочее. Хочу сделать возможность обновления прошивки через файл на карте. Размещать отдельные копии библиотеки для работы с файловой системой в основной программе и бутлоадере не хочется. Возможно ли как-то сделать, чтобы основная программа как-то "знала" по каким адресам в бутлоадере находятся определенные функции? Компилятор - avr-gcc.

Пока вижу 2 варианта:
1. в бутлоадер зашивать сильно усеченную либу для работы с файловой системой, а в основную программу - полноценную. Но как я уже говорил, это нежелательно
2. В бутлоадер зашить полноценную либу, а основную программу с этой либой не линковать. Сделать набор указателей на функции в секции .noinit. Бутлоадер при старте инициализирует эти переменные, и при переходе в основную программу уже имеем готовые указатели. Проблема - не знаю, как сделать, чтобы и в основной программе, и в бутлоадере эти переменные были по одному адресу.

Есть у кого-нибудь мысли по этому поводу?

_________________
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!



Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Доступ к коду бутлоадера AVR из главной программы
СообщениеДобавлено: 26 июн 2010, 17:01 
Не в сети
Аватара пользователя

Зарегистрирован: 07 окт 2009, 00:29
Сообщения: 6028
Откуда: СПб
blindman писал(а):
Возможно ли как-то сделать, чтобы основная программа как-то "знала" по каким адресам в бутлоадере находятся определенные функции?

Прямо в хеадере указать конкретные адреса.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Доступ к коду бутлоадера AVR из главной программы
СообщениеДобавлено: 26 июн 2010, 17:07 
Не в сети
Аватара пользователя

Зарегистрирован: 29 апр 2008, 21:15
Сообщения: 4130
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич
Не, это не по-джедайски :) - во-первых. А во-вторых, есть еще и глобальные переменные в либе. Запись в эти переменные будет портить переменные основной программы, и наоборот

_________________
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!



Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Доступ к коду бутлоадера AVR из главной программы
СообщениеДобавлено: 26 июн 2010, 17:10 
Не в сети
Аватара пользователя

Зарегистрирован: 07 окт 2009, 00:29
Сообщения: 6028
Откуда: СПб
Ну, тогда в одельную секцию выделить указатели и вручную их разместить...
Хотя я бы все таки воспользовался статичными указателями в флэшке...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Доступ к коду бутлоадера AVR из главной программы
СообщениеДобавлено: 26 июн 2010, 17:20 
Не в сети
Аватара пользователя

Зарегистрирован: 29 апр 2008, 21:15
Сообщения: 4130
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич
Все "ручное" не канает.

_________________
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!



Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Доступ к коду бутлоадера AVR из главной программы
СообщениеДобавлено: 26 июн 2010, 17:22 
Не в сети
Аватара пользователя

Зарегистрирован: 07 окт 2009, 00:29
Сообщения: 6028
Откуда: СПб
?
вы же секцию бутлоадера точно так же вручную размещаете. Какая разница?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Доступ к коду бутлоадера AVR из главной программы
СообщениеДобавлено: 26 июн 2010, 17:29 
Не в сети
Аватара пользователя

Зарегистрирован: 29 апр 2008, 21:15
Сообщения: 4130
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич
Но при этом мне абсолютно пофигу конкретные адреса, по которым компилятор разместит функции и глобальные переменные. Мне же нужно, чтобы в обоих программах определенный набор глобальных переменных был по одинаковым адресам.

_________________
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!



Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Доступ к коду бутлоадера AVR из главной программы
СообщениеДобавлено: 26 июн 2010, 17:57 
Не в сети
Аватара пользователя

Зарегистрирован: 07 окт 2009, 00:29
Сообщения: 6028
Откуда: СПб
Что-то, то ли лыжи не едут...

Еще раз - В флэшке создаете отдельную секцию, размещаете в ней массив с указателями на функции бутлоадера. Линкером размещаете эту секцию по абсолютному адресу (где-то рядом с бутом, например, или внутри него выкроить). Зашиваете бутлоадер вместе с этой таблицей.

Эту же секцию линкером цепляете к программе по тем же абсолютным адресам.

Получается, что вы отдельно можете компилять программу. И отдельно компилять бутлоадер.
И только таблица "точек входа" у вас сидит по абсолютному адресу один раз вписанному в линкер.
Ну навроде таблицы векторов прерываний.

Добавлено спустя 2 минуты 10 секунд:
Про какой "набор глобальных переменных" вы говорите, я не понял...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Доступ к коду бутлоадера AVR из главной программы
СообщениеДобавлено: 26 июн 2010, 18:01 
Не в сети
Аватара пользователя

Зарегистрирован: 29 апр 2008, 21:15
Сообщения: 4130
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич
Это-то понятно. А с глобальными переменными как быть?

Добавлено спустя 3 минуты 18 секунд:
В либе есть глобальные переменные - вот про них и говорю

_________________
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!



Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Доступ к коду бутлоадера AVR из главной программы
СообщениеДобавлено: 26 июн 2010, 18:02 
Не в сети
Аватара пользователя

Зарегистрирован: 07 окт 2009, 00:29
Сообщения: 6028
Откуда: СПб
Много?
Нельзя ли их разместить в регистрах, например?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Доступ к коду бутлоадера AVR из главной программы
СообщениеДобавлено: 26 июн 2010, 18:05 
Не в сети
Аватара пользователя

Зарегистрирован: 29 апр 2008, 21:15
Сообщения: 4130
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич
Нет. Это полноценная либа для работы с файловой системой, это не одна-две переменные. Да и нужно решение для общего случая.

_________________
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!



Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Доступ к коду бутлоадера AVR из главной программы
СообщениеДобавлено: 26 июн 2010, 18:49 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
Наверное это уже сам находил?
http://www.avrfreaks.net/index.php?name ... ic&t=72303

_________________
Проект [[Open Robotics]] - Универсальные модули для построения роботов


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Доступ к коду бутлоадера AVR из главной программы
СообщениеДобавлено: 26 июн 2010, 20:34 
Не в сети
Аватара пользователя

Зарегистрирован: 29 апр 2008, 21:15
Сообщения: 4130
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич
Там не про то

Добавлено спустя 1 час 39 минут 6 секунд:
Пока не придумал ничего лучшего, чем поместить все глобальные переменные бутлоадера в одну секцию, разместить ее с нулевого адреса, а .data разместить с адреса, равного размеру глобальных переменных бутлоадера.

_________________
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!



Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Доступ к коду бутлоадера AVR из главной программы
СообщениеДобавлено: 26 июн 2010, 20:53 
Не в сети
Аватара пользователя

Зарегистрирован: 07 окт 2009, 00:29
Сообщения: 6028
Откуда: СПб
Да, как мне кажется, вы пытаетесь решить неподходящую задачу неподходящими инструментами...
И удивляетесь, что неудобно.

Вариантов куча - от переписать либу без глобальных переменных или с динамическим выделением, до выделить в бутлоадер самый минимум, или либу всю засунуть в отдельную секию флэша, юзать асм...
В конце концов вписать в мэйк разбор мэпа и генерацию дефайнов...

Я писал бутлоадер, который работал через ethernet и при этом использовал только 4 регистра и одну ногу... Инструменты должны выбираться под задачу, а не наоборот.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Доступ к коду бутлоадера AVR из главной программы
СообщениеДобавлено: 27 июн 2010, 05:22 
Не в сети
Аватара пользователя

Зарегистрирован: 29 апр 2008, 21:15
Сообщения: 4130
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич
Я пока еще не решаю, а всего лишь ищу способ решения.

Либу переписал без использования глобальных переменных, указатели на функции засуну в конец флэша.

_________________
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!



Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 16 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO