www.open-tager.ru

открытый лазертаг форум
Текущее время: 25 ноя 2024, 07:45

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


Реклама

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


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



Начать новую тему Ответить на тему  [ Сообщений: 1076 ]  На страницу Пред.  1 ... 71, 72, 73, 74, 75, 76, 77 ... 108  След.
Автор Сообщение
 Заголовок сообщения: Re: Система Caustic
СообщениеДобавлено: 03 июн 2016, 05:46 
Не в сети
Аксакал форума
Аватар пользователя

Зарегистрирован: 12 авг 2011, 16:55
Сообщений: 7514
Откуда: Барнаул, Алтайский край (не путать с республикой Алтай) :-)
С флагами разобрался.
Но теперь говорит - не влазит прошивка в отведённый размер флеша.
Может компилятор нужен свежий?
Ща ещё попробую под Росой.

P.S. Собрал, наконец то! :) Под Росой (тут компилятор посвежее) в Кеплере.

Invoking: Cross ARM GNU Create Flash Image
arm-none-eabi-objcopy -O binary "bootloader-usb.elf" "bootloader-usb.bin"
Finished building: bootloader-usb.bin

Invoking: Cross ARM GNU Print Size
arm-none-eabi-size --format=berkeley "bootloader-usb.elf"
text data bss dec hex filename
35040 388 9944 45372 b13c bootloader-usb.elf
Finished building: bootloader-usb.siz


09:06:01 Build Finished (took 15s.226ms)

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


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

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

Ведь загрузчик расположен в конце флеша (там же и Ресет хандлер и Стек поинтер), а контроллер после ресета ищет по стандартному адресу - в начале флеша.
Как Вы их туда помещаете?

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


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

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

Ведь загрузчик расположен в конце флеша (там же и Ресет хандлер и Стек поинтер), а контроллер после ресета ищет по стандартному адресу - в начале флеша.
Как Вы их туда помещаете?


У меня так:

Загрузчик не пользуется прерываниями, поэтому его таблица прерываний пуста, за исключением первых двух векторов - это инициализация стек-поинтера и reset_handler (указтель на точку входа в программу). Там в коде есть кусок (isr-vector-stub.c):
Код:
__attribute__ ((section(".isr_vector_stub"),used))
pHandler isr_vectors_stub[2] =
{
   // Core Level - CM3
   (pHandler) &_estack, // The initial stack pointer
   Reset_Handler        // The reset handler
   // Other vectors are unnecessary
};

Для этого массива из двух указателей явно указано, в какую секцию класть: section(".isr_vector_stub"). В скрипте линкера указано, где эта секция находится (в самом начале флеша). А для всего остального кода в линкер-скрипте сказано, что класть в конец флеша.
Reset_Handler указывает куда-то на конец флеша, где расположен код.

Затем, когда загрузчик прошивает контроллер, он сначала записывает все страницы, кроме первой. Если процесс прервется, ничего с ним не произойдёт, в следующий раз ещё раз запишет. Затем, он записывает первую страницу, но перед этим исправляет её так, чтобы вместо SP и Reset_handler-a оригинальной прошивки были SP и Reset_handler загрузчика. Таким образом, управление всегда сначала будет передаваться ему. Значения SP и Reset_handler оригинальной прошивки загрузчик запоминает и записывает себе куда-то в конце. Когда он решает, что пора передать управление пользовательскому коду, он использует эти запомненные значения.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Система Caustic
СообщениеДобавлено: 03 июн 2016, 16:27 
Не в сети
Старожил

Зарегистрирован: 18 мар 2015, 13:19
Сообщений: 574
Откуда: Нижний Новгород
Я добавил возможность сборки через CMake. Теперь не нужно настраивать никакой эклипс, достаточно просто запустить скрипт build.sh.
Проект для Eclipse можно сгенерировать автоматически скриптом, который тоже есть в репозитории.


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

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


Вложения:
bluetooth_bridge_err.png
bluetooth_bridge_err.png [ 64.6 KiB | Просмотров: 7688 ]

_________________
Ваше оружие становиться значительно эффективней, если его снять с предохранителя!
Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Система Caustic
СообщениеДобавлено: 06 июн 2016, 13:34 
Не в сети
Старожил

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


Точно! Большое спасибо! С9 должен минусом к земле идти...

Ещё там номиналы электролитов не всегда верные. Тут производитель микросхемы-зарядника рекомендует всего 4.7uF. Видимо точку забыл.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Система Caustic
СообщениеДобавлено: 06 июн 2016, 13:39 
Не в сети
Старожил

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

Сгруппировано на 1 комплект: 2 "мозга", 1 повязка, 1 оружие. Один такой блок обходится примерно в 165р. Ничего не нужно резать, ломается пальцами легко.
Вложение:
2016-06-06 10-45-15.JPG
2016-06-06 10-45-15.JPG [ 142.19 KiB | Просмотров: 7670 ]


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

Зарегистрирован: 12 авг 2011, 16:55
Сообщений: 7514
Откуда: Барнаул, Алтайский край (не путать с республикой Алтай) :-)
Потестил ваш бутлоадер на Армаде - работает! 8-)
Красиво грамотно все оформлено - прям академически, молодцом! :ugeek:
Шьётся бинарик быстрее, чем HEX.
Но я хочу разобраться - в чем проблема с моим, который тоже в конце флеша располагается.
Вроде все тоже самое делал для запуска прошивки (кроме HAL_Deinit()), и прошивка стартовала и работала, кроме настрой к Блютус модуля.
Странно... :?

И такой вопрос - как задать другое расположение вашему загрузчику?
Хочу повыше поднять.
Только в скрипте линкера переопределить FLASH и FLASH_SIZE?

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


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Система Caustic
СообщениеДобавлено: 07 июн 2016, 00:35 
Не в сети
Старожил

Зарегистрирован: 18 мар 2015, 13:19
Сообщений: 574
Откуда: Нижний Новгород
Pingvin писал(а):
Потестил ваш бутлоадер на Армаде - работает! 8-)
Красиво грамотно все оформлено - прям академически, молодцом! :ugeek:
Шьётся бинарик быстрее, чем HEX.
Но я хочу разобраться - в чем проблема с моим, который тоже в конце флеша располагается.
Вроде все тоже самое делал для запуска прошивки (кроме HAL_Deinit()), и прошивка стартовала и работала, кроме настрой к Блютус модуля.
Странно... :?

И такой вопрос - как задать другое расположение вашему загрузчику?
Хочу повыше поднять.
Только в скрипте линкера переопределить FLASH и FLASH_SIZE?


Возможно не работает USART из-за того, что использует прерывания, а таблица не перенесена корректно в новое место, и контроллер ищет вначале флеша.

Я выше не правильно написал: прерывания у моего загрузчика есть. Они необходимы, например, для USB. Перенос таблицы прерываний внутри SystemInit:
Код:
#define VECT_TAB_OFFSET  ((uint32_t) &_isr_real - 0x8000000)
...
SCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET;

&_isr_real определена внутри линкер-скрипта. Уже забыл с тех пор, как писал код)

Расположение кода можно менять тут:
Код:
MEMORY
{
/*FLASH (rx)           : ORIGIN = 0x8000000, LENGTH = 512K*/ - ну эта строчка закомменчена, она ничего не делает
INTERRUPTS_STUB (rx) : ORIGIN = 0x8000000, LENGTH = 4K - сюда кладется заглушка для таблицы прерываний, которая при запуске без прошивки передаёт управление загрузчику. После первой прошивки эта страница перезапишется.
FREE_SPACE (rx)      : ORIGIN = 0x8001000, LENGTH = 462K - это свободное место, куда будет зашиваться программа
FLASH (rx)           : ORIGIN = 0x8074800, LENGTH = 44K - вот отсюда начинается загрузчик. Можно подвинуть, главное не забыть исправить LENGTH у этой и предыдущей секции
STATE (rx)           : ORIGIN = 0x807F800, LENGTH = 2K - это - страница состояния загрузчика, типа как eeprom. К сожалению, меньше 2кб  нельзя сделать...
RAM (xrw)            : ORIGIN = 0x20000000, LENGTH = 64K - это не нужно менять, начало ОЗУ
}


Только сильно ужать не получится. Много место занимает USB и Fat


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Система Caustic
СообщениеДобавлено: 07 июн 2016, 05:55 
Не в сети
Аксакал форума
Аватар пользователя

Зарегистрирован: 12 авг 2011, 16:55
Сообщений: 7514
Откуда: Барнаул, Алтайский край (не путать с республикой Алтай) :-)
Спасибо!
Мне не ужимать надо, наоборот - хочу кое-какой функционал добавить.

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


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 1076 ]  На страницу Пред.  1 ... 71, 72, 73, 74, 75, 76, 77 ... 108  След.

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


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

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


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

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