www.open-tager.ru
http://www.open-tager.ru/forum/

Система Caustic
http://www.open-tager.ru/forum/viewtopic.php?f=5&t=4128
Страница 58 из 108

Автор:  Alexies [ 07 дек 2015, 01:01 ]
Заголовок сообщения:  Re: Система Caustic

Pingvin писал(а):
А можно подробней (фото покрупней) - как разъёмы шлейфа поместились в корпуса датчиков?
Тоже хочу их использовать.
Удобны ли они?


А там нет разъёмов. Это - старая версия датчиков, там просто припаян шлейф. Разъём в корпус от LW не поместится без существенного перепиливания.

Автор:  Pingvin [ 07 дек 2015, 11:05 ]
Заголовок сообщения:  Re: Система Caustic

Alexies писал(а):

Я изначально не планировал выводить USB наружу. Он просто стоит на готовой плате контроллера зарядки, которую я заказывал из Китая за копейки) Для зарядки я вывел штекер - банально соединение надежней.

Однако, в перспективе я всё-таки запилю поддержку USB. Это не повредит, повысит удобство работы с SD-картой. Если уж делать загрузчик, то пусть и USB будет.


Спасибо Alexies - Вы реабилитировли USB!
Теперь в глазах местной публики это будет практично, удобно и вааще - суперская идея!
Ибо Pingvin ничего путного предложить не может априори...

Автор:  Pacifist [ 07 дек 2015, 12:49 ]
Заголовок сообщения:  Re: Система Caustic

Pingvin писал(а):
Alexies писал(а):
Я изначально не планировал выводить USB наружу. Он просто стоит на готовой плате контроллера зарядки, которую я заказывал из Китая за копейки) Для зарядки я вывел штекер - банально соединение надежней.

Однако, в перспективе я всё-таки запилю поддержку USB. Это не повредит, повысит удобство работы с SD-картой. Если уж делать загрузчик, то пусть и USB будет.
Спасибо Alexies - Вы реабилитировли USB!
Теперь в глазах местной публики это будет практично, удобно и вааще - суперская идея!
Ибо Pingvin ничего путного предложить не может априори...

Пингвин тоже молодец! Ведь это он первый предложил суперскую идея делать бутлоадер через радио:
Pingvin писал(а):
А зачем к st-link цеплятся?
Напиши (или давай вместе напишем) свой бутлоадер и прошивай по радио!
С SD-кары уже есть.
;) 8-)
Правда потом про это забыл и воспринял свою-же идею в штыки :)

А Алексис дважды молодец, потому что анонс системы состоялся весной 2015-го, и вот всего через 7 месяцем он имеет на руках 2 готовых к игре устройства! Думаю такими темпами до весны 2016-го это будет уже отлаженый и готовый для работы "из коробки" продукт включая всё необходимое ПО.

Автор:  Pingvin [ 07 дек 2015, 13:14 ]
Заголовок сообщения:  Re: Система Caustic

Где я "в штыки" воспринимал идею обновления по радио?
Не надо!

Alexies трижды молодец!
Но к 7 месяцам добавьте ещё полгода! ;)
Цитата:
Пол года работы в свободное от основной работы время, и появился прототип.

Автор:  Alexies [ 08 дек 2015, 04:18 ]
Заголовок сообщения:  Re: Система Caustic

С бутлоадером разобрался после ещё пары дней втыкания. Пока ничего не прошивает, но в принципе - работает. Пришлось изучить, как устроены скрипты компоновщика ld (я юзаю arm-gcc, тут тремя кликам по меню отделаться не получится). Сейчас делаю так: в Eclipse-е два проекта. Основной и загрузчик в виде статической библиотеки. Загрузчик имеет свою копию стандартной библиотеки. Чтобы при линковке не возникло совпадений имён, все символы статической либы переименовываются при помощи objcopy:
Код:
arm-none-eabi-objcopy --prefix-symbols=bootloader_ libbootloader-stm32f103ret6.a

Также, в скрипте компоновщика основного проекта (скрипт, к слову, не маленький: ~250 строк) нужно явно сказать, что мы хотим.
Сначала определяется дополнительный регион памяти для загрузчика. Регион основной памяти сдвигается.
Потом прописывается, куда класть .text, .data и особливо таблицу прерываний для библиотеки загрузчика. Делается это путем копипасты и исправления :) И добавляются символы для кода, инициализирующего .data и .bss загрузчика.
Кусок всего это выглядит как-то так:
Код:
...
.loader_text :
  {
    . = ALIGN(4);
    *libbootloader-stm32f103ret6.a:(.text .text*)
    . = ALIGN(4);
  } >LOADER
...
/* Initialized data sections goes into RAM, load LMA copy after code */
  .loader_data :
  {
    . = ALIGN(4);
    bootloader__sdata = .;        /* create a global symbol at data start */
    *libbootloader-stm32f103ret6.a: (.data)           /* .data sections */
    *libbootloader-stm32f103ret6.a: (.data*)          /* .data* sections */

    . = ALIGN(4);
    bootloader__edata = .;        /* define a global symbol at data end */
  } >RAM AT> LOADER
...

В общем, после такой "несложной" процедуры, у нас появляется загрузчик. Всё делается вручную, зато - полный контроль, Unix way.
Остались мелочи: написать сам код. В коде можно использовать всё, что угодно. Думаю, скоро будет готово :)

Автор:  Alexies [ 08 дек 2015, 04:22 ]
Заголовок сообщения:  Re: Система Caustic

Продолжая думать над USB, заказал из китая 10 разъёмов USB type B (которые "принтерные") за ~230р всё вместе. Думаю, это оптимальный вариант для установки в таггер. Сломать его куда сложнее, чем mini- и micro-. Прикреплять к корпусу можно хоть даже на термоклей, хотя лучше запилить мини-платку.

Вложение:
s-l1600.jpg
s-l1600.jpg [ 66.17 KiB | Просмотров: 5962 ]

Автор:  Pingvin [ 08 дек 2015, 06:27 ]
Заголовок сообщения:  Re: Система Caustic

Alexies писал(а):
С бутлоадером разобрался после ещё пары дней втыкания. Пока ничего не прошивает, но в принципе - работает. Пришлось изучить, как устроены скрипты компоновщика ld (я юзаю arm-gcc, тут тремя кликам по меню отделаться не получится). Сейчас делаю так: в Eclipse-е два проекта. Основной и загрузчик в виде статической библиотеки. Загрузчик имеет свою копию стандартной библиотеки. Чтобы при линковке не возникло совпадений имён, все символы статической либы переименовываются при помощи objcopy:
Код:
arm-none-eabi-objcopy --prefix-symbols=bootloader_ libbootloader-stm32f103ret6.a

Также, в скрипте компоновщика основного проекта (скрипт, к слову, не маленький: ~250 строк) нужно явно сказать, что мы хотим.
Сначала определяется дополнительный регион памяти для загрузчика. Регион основной памяти сдвигается.
Потом прописывается, куда класть .text, .data и особливо таблицу прерываний для библиотеки загрузчика. Делается это путем копипасты и исправления :) И добавляются символы для кода, инициализирующего .data и .bss загрузчика.
Кусок всего это выглядит как-то так:
Код:


...
.loader_text :
  {
    . = ALIGN(4);
    *libbootloader-stm32f103ret6.a:(.text .text*)
    . = ALIGN(4);
  } >LOADER
...
/* Initialized data sections goes into RAM, load LMA copy after code */
  .loader_data :
  {
    . = ALIGN(4);
    bootloader__sdata = .;        /* create a global symbol at data start */
    *libbootloader-stm32f103ret6.a: (.data)           /* .data sections */
    *libbootloader-stm32f103ret6.a: (.data*)          /* .data* sections */

    . = ALIGN(4);
    bootloader__edata = .;        /* define a global symbol at data end */
  } >RAM AT> LOADER
...

В общем, после такой "несложной" процедуры, у нас появляется загрузчик. Всё делается вручную, зато - полный контроль, Unix way.
Остались мелочи: написать сам код. В коде можно использовать всё, что угодно. Думаю, скоро будет готово :)


Фигасе, куда зарылись! :shock: :o
У меня как то проще все.
В кокосе в свойствах проекта два параметра поправить и в исходниках указать смещение таблицы прерывания.
Но тоже - неплохо бы все раскурить на "молекулярном" уровне.
Где можно почитать про скрипты линкера?

Автор:  Pingvin [ 08 дек 2015, 06:28 ]
Заголовок сообщения:  Re: Система Caustic

Alexies писал(а):
Продолжая думать над USB, заказал из китая 10 разъёмов USB type B (которые "принтерные") за ~230р всё вместе. Думаю, это оптимальный вариант для установки в таггер. Сломать его куда сложнее, чем mini- и micro-. Прикреплять к корпусу можно хоть даже на термоклей, хотя лучше запилить мини-платку.

Вложение:
s-l1600.jpg


Самое то!
На тагер я такие планировал ставить.

Автор:  Pacifist [ 08 дек 2015, 13:44 ]
Заголовок сообщения:  Re: Система Caustic

Alexies писал(а):
С бутлоадером разобрался после ещё пары дней втыкания. Пока ничего не прошивает, но в принципе - работает. Пришлось изучить, как устроены скрипты компоновщика ld (я юзаю arm-gcc, тут тремя кликам по меню отделаться не получится). Сейчас делаю так: в Eclipse-е два проекта. Основной и загрузчик в виде статической библиотеки. Загрузчик имеет свою копию стандартной библиотеки. Чтобы при линковке не возникло совпадений имён, все символы статической либы переименовываются при помощи objcopy:
Код:
arm-none-eabi-objcopy --prefix-symbols=bootloader_ libbootloader-stm32f103ret6.a

Также, в скрипте компоновщика основного проекта (скрипт, к слову, не маленький: ~250 строк) нужно явно сказать, что мы хотим.
Сначала определяется дополнительный регион памяти для загрузчика. Регион основной памяти сдвигается.
Потом прописывается, куда класть .text, .data и особливо таблицу прерываний для библиотеки загрузчика. Делается это путем копипасты и исправления :) И добавляются символы для кода, инициализирующего .data и .bss загрузчика.

В общем, после такой "несложной" процедуры, у нас появляется загрузчик. Всё делается вручную, зато - полный контроль, Unix way.
Остались мелочи: написать сам код. В коде можно использовать всё, что угодно. Думаю, скоро будет готово :)


Как-то действительно сложно у Вас получилось.
Обычно бутлоадер пишут как отдельный проект. А потом уже любую прошивку через него загружают в кристалл без какой-либо ручной настройки.
Ваш бутлоадер сможет загрузить и запустить к примеру прошивку Пингвина?

Автор:  Pingvin [ 08 дек 2015, 14:28 ]
Заголовок сообщения:  Re: Система Caustic

У меня так вообще три разных прошивки получается.
1. Мас сторадж (режим карт-ридера)
2. Бутлоадер
3. Непосредственно сама прошивка

И ничего - все пучком! ;)
Хексы лью по очереди.

Страница 58 из 108 Часовой пояс: UTC + 3 часа [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/