www.open-tager.ru

открытый лазертаг форум
Текущее время: 24 ноя 2024, 22:04

Часовой пояс: UTC + 3 часа [ Летнее время ]


Реклама

Правила форума


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



Начать новую тему Ответить на тему  [ Сообщений: 1076 ]  На страницу Пред.  1 ... 57, 58, 59, 60, 61, 62, 63 ... 108  След.
Автор Сообщение
 Заголовок сообщения: Re: Система Caustic
СообщениеДобавлено: 09 дек 2015, 10:47 
Не в сети
Аксакал форума
Аватар пользователя

Зарегистрирован: 12 авг 2011, 16:55
Сообщений: 7514
Откуда: Барнаул, Алтайский край (не путать с республикой Алтай) :-)
Alexies писал(а):
Pingvin писал(а):
Что то я не очень понимаю - если прошивка лежит "по умолчанию" в начале флеша, как Вы без выкрутасов с её содержимым заставите после подачи питания запуститься бутлоадер? :? :shock:

Но удачи!
Жду с нетерпением. ;) :)


Как Pacifist расписал. Мы делаем hook: когда бутлоадер прошивает, он запоминает адрес Reset_Handler-а прошивки (он обязательно лежит по 0x08000004), а на его место подставляет свой. То есть, модифицирует в прошивке ровно 4 байта: в качестве точки входа подставляет свою точку входа, а исходную - запоминает. Теперь при старте контроллера запускается загрузчик. Он делает всё, что хочет, а затем - просто передаёт управление по адресу настоящей точки входа прошивки, которую он запомнил.

Единственное требование к прошивке - чтобы он работала сама по себе :) Ну и в конце было место.


Ну это круто, если это работает! ;) :)

А как узнать Reset_Handler бутлоадера?
Его же надо собирать со смещением во флеше?

Спасибо за информацию, может ссылки есть?

_________________
Ваше оружие становиться значительно эффективней, если его снять с предохранителя!


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Система Caustic
СообщениеДобавлено: 09 дек 2015, 11:23 
Не в сети
Старожил

Зарегистрирован: 18 мар 2015, 13:19
Сообщений: 574
Откуда: Нижний Новгород
Pingvin писал(а):
А как узнать Reset_Handler бутлоадера?
Его же надо собирать со смещением во флеше?

Спасибо за информацию, может ссылки есть?

Так же, как и при сборке таблицы прерываний - там он используется.
Просто берем адрес от функции. В процессе линковки он подставится корректный.

А вот с ссылками по теме - беда. Сам кусочно сбирал информацию несколько дней и экспериментировал. Нет такого, чтобы где-то было всё сразу написано, что делать.
Про ld можете тут почитать: https://www.opennet.ru/docs/RUS/gnu_ld/gnuld-3.html Но это само по себе не особо поможет.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Система Caustic
СообщениеДобавлено: 09 дек 2015, 11:31 
Не в сети
Аксакал форума
Аватар пользователя

Зарегистрирован: 12 авг 2011, 16:55
Сообщений: 7514
Откуда: Барнаул, Алтайский край (не путать с республикой Алтай) :-)
Alexies писал(а):
Pingvin писал(а):
А как узнать Reset_Handler бутлоадера?
Его же надо собирать со смещением во флеше?

Спасибо за информацию, может ссылки есть?

Так же, как и при сборке таблицы прерываний - там он используется.
Просто берем адрес от функции. В процессе линковки он подставится корректный.

А вот с ссылками по теме - беда. Сам кусочно сбирал информацию несколько дней и экспериментировал. Нет такого, чтобы где-то было всё сразу написано, что делать.
Про ld можете тут почитать: https://www.opennet.ru/docs/RUS/gnu_ld/gnuld-3.html Но это само по себе не особо поможет.

Спасибо!
На верном пути, ИМХО! ;) :)

_________________
Ваше оружие становиться значительно эффективней, если его снять с предохранителя!


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Система Caustic
СообщениеДобавлено: 09 дек 2015, 13:42 
Не в сети
Аксакал форума
Аватар пользователя

Зарегистрирован: 12 авг 2011, 16:55
Сообщений: 7514
Откуда: Барнаул, Алтайский край (не путать с республикой Алтай) :-)
А представим ситуацию - бутлоадер прошивку то залил (возможно - частично), а вот Ресет Хандл заменить - не успел. :?
Вырубили питание.
Усе - помер бутлоадер! :(

В моём варианте такая ситуация не может наступить.
Бутлоадер всегда жив! ;) :)

P.S. Вроде есть выход - может об этом и писал Пацифист...
Первую (верхнюю) страницу пишем куда-нибудь много ниже или в оперативку.
Таким образом даже если питание вырубят, ресет хендл останется корректным в первой странице.

Только после того, как скопировали первый сектор прошивки во временное хранилище (можно даже в оперативку), меняем хендл и лишь потом пишем во флеш в первую страницу.

Вероятность потерять корректный хендл - минимальна, хотя теоретически возможна.

Решаемо! ;) :)

_________________
Ваше оружие становиться значительно эффективней, если его снять с предохранителя!


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Система Caustic
СообщениеДобавлено: 09 дек 2015, 15:18 
Не в сети
Старожил

Зарегистрирован: 18 мар 2015, 13:19
Сообщений: 574
Откуда: Нижний Новгород
Pingvin писал(а):
А представим ситуацию - бутлоадер прошивку то залил (возможно - частично), а вот Ресет Хандл заменить - не успел. :?
Вырубили питание.
Усе - помер бутлоадер! :(

В моём варианте такая ситуация не может наступить.
Бутлоадер всегда жив! ;) :)

P.S. Вроде есть выход - может об этом и писал Пацифист...
Первую (верхнюю) страницу пишем куда-нибудь много ниже или в оперативку.

Таким образом даже если питание вырубят, ресет хендл останется корректным в первой странице.

Только после того, как скопировали первый сектор прошивки во временное хранилище (можно даже в оперативку), меняем хендл и лишь потом пишем во флеш в первую страницу.

Вероятность потерять корректный хендл - минимальна, хотя теоретически возможна.

Решаемо! ;) :)


Ну мы же по-любому первую страницу сначала в оперативку засунем с диска, а потом только во флеш. Но по-любому останется промежуток времени между стиранием первой страницы и её записью. Очевидно, что он настолько мал, что вероятность пропадания питания ничтожна: время записи одной страницы меньше 0.1 сек даже через программатор с компа. Особенно учитывая, что перепрошиваются люди не каждый день. При записи же остальных страниц проблем не возникнет.

Вероятность поломки системы от других источников гораздо выше: можно наступить ногой, удолбать об асфальт или положить в стиральную машину :) Ваш бутлоадер, к сожалению, не может защитить от этих факторов :)

А писать первую страницу основной прошивки не по нулевому адресу, а в другое место, очевидно, нельзя, поскольку на этой странице не только таблица прерываний помещается, но ещё и куча кода с абсолютной адресацией.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Система Caustic
СообщениеДобавлено: 09 дек 2015, 17:13 
Не в сети
Аксакал форума
Аватар пользователя

Зарегистрирован: 12 авг 2011, 16:55
Сообщений: 7514
Откуда: Барнаул, Алтайский край (не путать с республикой Алтай) :-)
Alexies писал(а):

А писать первую страницу основной прошивки не по нулевому адресу, а в другое место, очевидно, нельзя, поскольку на этой странице не только таблица прерываний помещается, но ещё и куча кода с абсолютной адресацией.


Ну и что?
Прошивка то собирается спецом под конкретный адрес!
Я же выше показал, как это делается - 10 секунд на настройку проекта!

Хоть десять прошивок вряд и прыгай с одной на другую в произвольном порядке.
Нет тут проблем.

_________________
Ваше оружие становиться значительно эффективней, если его снять с предохранителя!


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Система Caustic
СообщениеДобавлено: 09 дек 2015, 18:17 
Не в сети
Старожил

Зарегистрирован: 18 мар 2015, 13:19
Сообщений: 574
Откуда: Нижний Новгород
Pingvin писал(а):
Alexies писал(а):

А писать первую страницу основной прошивки не по нулевому адресу, а в другое место, очевидно, нельзя, поскольку на этой странице не только таблица прерываний помещается, но ещё и куча кода с абсолютной адресацией.


Ну и что?
Прошивка то собирается спецом под конкретный адрес!
Я же выше показал, как это делается - 10 секунд на настройку проекта!

Хоть десять прошивок вряд и прыгай с одной на другую в произвольном порядке.
Нет тут проблем.


Да я понимаю, что так можно сделать.
У меня есть 2 варианта:
1) загрузчик, который может прошить любую бинарную, не подготовленную заранее прошивку, но уязвим для пропадания питания на <0.1 сек.
2) загрузчик, для которого специальным образом нужно компилировать прошивку, зато теоретически неуязвимый по питанию.

Кстати, там будет не 0.1, а гораздо меньше, ибо нужно записать только первые 8 байт (собственно, значение stack pointer-а и адрес reset handler), чтобы загрузчик работал. Всё остальное можно потерять.

А 0.1с - это время записи всей 2Kb страницы. Сужу по тому, что на запись 100 страниц уходит около 10с. через программатор.

Мне кажется очевидным, что первый загрузчик полезнее и универсальнее второго. Кроме того, если рассматривать плату "мозга", как самостоятельный коммерческий продукт, первый загрузчик смотрится хорошим дополнением. Например для тех, кто не хочет разрабатывать, но хочет просто повторить какое-то устройство на "мозге", не связанное даже с лазертагом.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Система Caustic
СообщениеДобавлено: 09 дек 2015, 18:37 
Не в сети
Аксакал форума
Аватар пользователя

Зарегистрирован: 12 авг 2011, 16:55
Сообщений: 7514
Откуда: Барнаул, Алтайский край (не путать с республикой Алтай) :-)
Не надо меня убеждать - я уже сам загорелся попробовать, и что всего 8 байт надо успеть записать - тоже просек. ;) :)
Уже думаю над конкретной реализацией - вроде несложно.
Полагаю - за полдня можно мой бутлоадер сделать "универсальным". ;) :)

Цитата:
Мне кажется очевидным, что первый загрузчик полезнее и универсальнее второго. Кроме того, если рассматривать плату "мозга", как самостоятельный коммерческий продукт, первый загрузчик смотрится хорошим дополнением. Например для тех, кто не хочет разрабатывать, но хочет просто повторить какое-то устройство на "мозге", не связанное даже с лазертагом.


Категорически поддерживаю! ;) :)

_________________
Ваше оружие становиться значительно эффективней, если его снять с предохранителя!


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Система Caustic
СообщениеДобавлено: 10 дек 2015, 01:19 
Не в сети
Старожил

Зарегистрирован: 18 мар 2015, 13:19
Сообщений: 574
Откуда: Нижний Новгород
Тестовая версия загрузчика заработала! Успешно прошил с карточки свою основную прошивку без всякой её подготовки и запустил. Теперь осталось причесать код, довести его до ума, оптимизировать размер. Как только доделаю, выложу на гитхаб!


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Система Caustic
СообщениеДобавлено: 10 дек 2015, 06:46 
Не в сети
Аксакал форума
Аватар пользователя

Зарегистрирован: 12 авг 2011, 16:55
Сообщений: 7514
Откуда: Барнаул, Алтайский край (не путать с республикой Алтай) :-)
Alexies писал(а):
Тестовая версия загрузчика заработала! Успешно прошил с карточки свою основную прошивку без всякой её подготовки и запустил. Теперь осталось причесать код, довести его до ума, оптимизировать размер. Как только доделаю, выложу на гитхаб!

Поздравляю!
;) :)

_________________
Ваше оружие становиться значительно эффективней, если его снять с предохранителя!


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 1076 ]  На страницу Пред.  1 ... 57, 58, 59, 60, 61, 62, 63 ... 108  След.

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на форуме

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


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

Найти:
Перейти:  
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB