Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
3 / 3 / 1
Регистрация: 18.06.2015
Сообщений: 70

Доступ к Bootloader из приложения

04.08.2016, 16:47. Показов 903. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, есть самостоятельно написанные бутлоадер. Бутлоадер лежит в начале флеш, приложение смещено на 0х4000
В startup файле бутлоадера имеются несколько функций, доступ к которым необходимо осуществить из приложения.
Кто-нибудь сталкивался? Пробовала разные варианты, какие-то не работают, какие-то работают неправильно.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
04.08.2016, 16:47
Ответы с готовыми решениями:

Доступ к SharePoint из приложения Windows Forms или из консольного приложения
Подскажите пожалуйста, возможно ли из приложения Windows Forms (или из консольного приложения) получить доступ к объектам SharePoint ? ...

Доступ к параметрам приложения
В басике это My.Settings, а в C#?

Доступ к БД из контроллера приложения
Есть базовый контроллер (абстрактный), от него расширяется контроллер приложения (тут подразумевается держать общий функционал), от...

12
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,871
04.08.2016, 16:50
Адреса функций известны?
0
3 / 3 / 1
Регистрация: 18.06.2015
Сообщений: 70
04.08.2016, 17:39  [ТС]
Нет, я пыталась по именам достучаться.
Приложение содержит две таблицы векторов, одна с нулевого адреса, другая смещенная
При записи через бутлоадер приложение работает со смещенной таблицей, та которая с нулевого адреса просто не записывается
Я пыталась разместить в первой таблице приложения функции с теми же именами, в этом случае приложение прыгало в бутлоадер, но вне зависимости от имени функции, прыгало в одну и ту же функцию бутлоадера
0
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,871
04.08.2016, 18:08
Цитата Сообщение от Fati_ Посмотреть сообщение
Нет, я пыталась по именам достучаться.
не получится
нужно вызывать функции по адресам, так же как в DLL при динамической загрузке
линкер не знает имен функций, которые линкует не он
3
3 / 3 / 1
Регистрация: 18.06.2015
Сообщений: 70
04.08.2016, 18:24  [ТС]
А мне предложили еще сделать обманным путем.
Функции сделать через векторами, т.е. объявить их в таблице векторов и бутлоадера и в первой таблице векторов приложения в одном и том же месте, как бы должно получиться что они будут размещены по одному и тому же адресу, только вектора бутлоадера будут содержать адрес нужных нам функций, а приложения - какие-нибудь функции заглушки.
И когда приложение запишется через бутлоадер, оно пойдет по этим векторам и наткнется на вектора бутлоадера, т.к. своя таблица не запишется
Такое реализуемо?
0
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,871
04.08.2016, 20:05
Цитата Сообщение от Fati_ Посмотреть сообщение
Такое реализуемо?
честно говоря ничего не понял
ты бутлоадер можешь менять? если нет то какая запись в вектор
если да , то зачем все эти пляски с бубнами
вот путь который я реализовывал, правда он очень скользкий, шаг влево шаг вправо и крах
дизасемблируем бутлоадер
ищем адреса нужных нам функций,
например первая функция по адресу 0x8000101 вторая по адресу 0x8000201( адреса нечетные для TUMB, для АРМ должны быть четные, и кратные 4)
пишем
C
1
2
3
4
void(*func1)(void);
void(*func2)(void);
func1=0x8000101 ;
func2=0x8000201;
А потом просто вызываешь функции
C
1
2
func1();
func2();
Добавлено через 2 минуты
есть еще вариант, просто написать аналоги функций
1
3 / 3 / 1
Регистрация: 18.06.2015
Сообщений: 70
04.08.2016, 20:50  [ТС]
Да, я могу менять код бутлоадера.
Там все очень сложно и я сама местами не до конца понимаю,
Суть в том, что есть переменные которые хранятся в бутлоадере и их надо поменять уже будучи в приложении(ну или узнать их значения).
Из приложения мы передаем в бутлоадер новые значения, он их анализирует и перезаписывает, потом должен вернуться обратно в приложение, по возможности в то место откуда пришел
0
Эксперт .NET
 Аватар для Rius
13237 / 7732 / 1681
Регистрация: 25.05.2015
Сообщений: 23,555
Записей в блоге: 14
04.08.2016, 20:53
Чтобы узнать переменные, можно расположить их в известных секциях скрипта линкера. Каждую по отдельности, либо единой структурой.
0
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,871
04.08.2016, 21:06
Цитата Сообщение от Fati_ Посмотреть сообщение
Суть в том, что есть переменные которые хранятся в бутлоадере и их надо поменять уже будучи в приложении(ну или узнать их значения).
Из приложения мы передаем в бутлоадер новые значения, он их анализирует и перезаписывает, потом должен вернуться обратно в приложение,
это точно бутлоадер?
Bootloader это по русски загрузчик,т.е при старте камня он запускается и решает что делать или запустить программу или обновить прошивку или еще что то
А по этому описанию я даже не знаю как это назвать
0
Эксперт .NET
 Аватар для Rius
13237 / 7732 / 1681
Регистрация: 25.05.2015
Сообщений: 23,555
Записей в блоге: 14
04.08.2016, 21:08
Операционной системой, поверх которой работает приложение )
Или BIOS'ом.
0
 Аватар для Voland_
1983 / 1276 / 131
Регистрация: 04.01.2010
Сообщений: 4,607
04.08.2016, 21:32
обычно обмен данными между двумя проектами выполняется через декларации вызова функций, и через расшаренные области данных.
Чтобы вызвать функция по адресу, можно воспользоваться принципом, приведенным выше (но желательно посмотреть какой код получит линкер - чтобы не получилось слишком запутанно), либо использоваться возможностями компилятора. Если это GCC, то у него есть атрибут "addr", который позволяет указать внешней (объявленной extern) функции ее точку входа. Еще можно использовать ld-скрипт, и указать адреса именованых функций, указанных как extern, директивой PROVIDE. В этом варианте, правда, нужно быть уверенным, что вы подключите хидер с этой функцией, иначе линкер ограничится предупреждением, что конвенция вызова функции выбрана по умолчанию.

Ну, а обратную связь, от бутлоадера приложению можете сделать или общей памятью, либо вызова callback'а с параметрами типа: cb_type, data*, length. Это даст возможность ограничиться одним закрепленным указателем в приложении, которое будет пытаться вызвать бутлоадер в различных случаях...
1
3 / 3 / 1
Регистрация: 18.06.2015
Сообщений: 70
05.08.2016, 14:54  [ТС]
Спасибо за помощь
Посмотрела в map файле адреса, пока буду плясать от этого,
Узнала что-то новое, пойду разбираться
0
 Аватар для Voland_
1983 / 1276 / 131
Регистрация: 04.01.2010
Сообщений: 4,607
05.08.2016, 16:12
Цитата Сообщение от Fati_ Посмотреть сообщение
Посмотрела в map файле адреса, пока буду плясать от этого,
да, обычно приходится плясать от этого. В elf в принципе есть инфа об оффсетах функций, которую можно выдернуть штатными утилитками gcc. Например, типа команды
Bash
1
objdump -x example.elf  | grep .text
Она выведет все офсеты всех функций и данных секции ".text". Ну, и т.д. почитайте возможности вашего компилятора, чтобы понять что и в каком виде он может отдать.

Добавлено через 4 минуты
Bash
1
objdump -x example.elf  | grep ".text" | grep "g " > out.txt
...вот эта даже отдала только список функций. Надо только помнить в какую секцию что вы выложили...
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.08.2016, 16:12
Помогаю со студенческими работами здесь

Доступ к БД из ISAPI приложения
В общем, проблема такая - нужно из ISAPI приложения подключиться к базе данных и соответственно с ней работать. Имеется код : #using...

Доступ к БД из ISAPI приложения
В общем, проблема такая - нужно из ISAPI приложения подключиться к базе данных и соответственно с ней работать. Имеется код : #using...

Доступ к web - приложения
Подскажите на сколько это сложно, есть программа который добавляет в БД названия книги, но есть одно NO там отсутствует разграничения...

Приложения потеряли доступ к интернету
Вчера включил случайно супер режим когда было мало заряда. После этого некоторые приложения (теллеграм х, фейсбук, инстаграм и ещё...

Доступ из ASP приложения к БД Oracle
Господа, я пытаюсь из приложения подключиться к Oracle DB. Мне велено использовать Oracle.ManagedDataAccess.dll. Ок. Библиотеку...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru