Создание загрузчика для общих досок

Rogerclark
Ср 29 апреля 2015 г., 7:40
В разделе «Идеи и предложения» @zoomx предположил, что загрузчик для общих плат стоит изучить

Разница между Maple Mini и Maple Boards и общими платами заключается в том, что на кленовых платах есть дополнительное аппаратное обеспечение для сброса USB и принудительного завода системы (ПК и т. Д.), Чтобы снова посмотреть на USB -идентификатор платы.

Кленовые платы должны сбросить USB, потому что используемый протокол загрузки является DFU, и требует, чтобы плата идентифицировала на USB как устройство DFU, когда он сапоги.

Однако серийный USB, который есть Maple Mini, встроен в эскиз и требует другого идентификационного кода USB -идентификатора устройства VID/PID. Таким образом, чтобы заставить хост -систему (ПК и т. Д.) Признать, что плата является последовательным устройством, когда наброски запускаются, плата должна сбросить шину USB, которая выполняется путем вытягивания одной из линий USB (возможно, до 5 В), используя Небольшая схема, состоящая из двух транзисторов.


Если USB -устройство, не нужно было переходить из DFU для загрузки, на сериал для эскиза, не нужно было бы сбросить USB -шину, и, следовательно, плате не понадобится оборудование сброса.

Похоже, что Leaflabs начали разрабатывать версию загрузчика, которую мы можем использовать, потому что он загружается через последовательный, и использует тот же USB VID/PID, что и набросок

Видеть https: // github.com/jonatanolofsson/mapl ... Эриал-Бут

Существует обширное описание, которое, по -видимому, подразумевает, что с модификацией эскиза не будет необходимости сбросить.

Так что это определенно что-то стоит изучить, поэтому я, вероятно, реорганизую репо, чтобы у нас было 2 разных загрузчика, а просто DFU загружаем один, который мы сейчас используем.

Бобк
Чт 30 апреля 2015 г., 22:31
Я просмотрел «новое» предложение Leaflabs, и мне жаль сказать, что я не думаю, что это очень поможет.

Некоторые предыстории: моя дневная работа включает в себя написание загрузчиков для встроенных микрофонов :) В прошлом они были связаны простым серийным (RS232 или RS485) с периферийным устройством UART. Для наших встроенных продуктов (без внешнего доступа) мы разработали довольно надежный и прост в использовании загрузчика. У него есть одна потенциальная слабость, но до сих пор это не вызвало проблемы, поскольку мы тщательно управляем и тестируют программное обеспечение.

Недавно я перенес наш «стандартный» загрузчик в новый продукт, используя нативный USB. Я столкнулся с теми же проблемами, с которыми сталкивались лифуфальные (и другие) с взаимодействием между устройством, USB и Windows. Я заставил его работать хорошо, но это было не так хорошо, как простая версия UART. Для нас загрузки - случайная вещь, поэтому не имело значения, было ли это немного неуклюже.

Наш опыт работы с местным USB (и другими проблемами, E.глин. водители!) убедить нас сбросить этот маршрут, и в нашем следующем продукте используется встроенный чип USB-серии FTDI, чтобы сделать USB, кормив его в UART на Micro. Это работает намного лучше, и я смог перенести загрузчик через пару недель.

Так или иначе, достаточно обо мне... Что я узнал от всего, что было для того, чтобы избежать загрузчика и обмена приложениями, обмена приложениями USB. Есть некоторые системы, которые реализуют USB -загрузчик довольно бесшовным образом (без дополнительных помощников, таких как MBED), например, контроллеры принтеров сглаживания и R2C2 (у меня была рука в последнее). Они были облегчены некоторыми функциями LPC1768, который имеет встроенный загрузчик «перетаскивать» (хорошая функция).

Получение поистине бесшовного загрузчика, который хорошо работает во всех случаях, вероятно, требует внешнего вспомогательного чипа и конкретного дизайна аппаратного/программного обеспечения. The Teensy 3.1 работает очень хорошо в этом отношении. Если мы не работаем с собственным оборудованием или дизайном программного обеспечения, ему понадобятся некоторые компромиссы.

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

Rogerclark
Чт 30 апреля 2015 г., 22:53
Боб,

ХОРОШО. Это стыдно

Я думал, что, возможно, из -за того, что серийный загрузчик, перечисленный только последовательным устройством, возможно, мы могли бы избежать проблем с их несколькими устройствами в Windows.

На самом деле, я думаю, что есть некоторые проблемы с серийным USB, который встроен в эскиз.

Я изменил репо на прошлой неделе, так что скомпилируется серийный USB на отдельном флаге на флаг загрузчика, на самом деле я удалил -dbootloader_maple, так как это делало слишком много не связанных с ними вещей

и добавлено -deserial_usb вместо этого

Я изменил одно из определений платы (F103ZET), чтобы иметь опцию, в которой был скомпилирован загрузочный загрузчик, и низко и видит общую плату STM32F103ZET, получает последовательный USB, как клен

Однако.....

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

Если я загружаю, то физически отключите, а затем подключите USB -разъем, плата появляется в виде последовательного устройства Maple (используя последовательный драйвер Windows)
И я могу использовать сериал.println () и т. д

Однако, если я загружаю через Stlink, который снова запускает код, - хотя Windows по -прежнему сообщает о последовательном устройстве, текст не отображается в терминале :-(

Я предполагаю, что должно происходить то, что виртуальный серийный драйвер в Windows выходит из синхронизации с тем, что происходит в серийном USB -коде в эскизе

Так что я собираюсь удалить это как вариант, пока мы не сможем придумать исправление.

Или, возможно, для этого нет исправления программного обеспечения?

Знаете ли вы, есть ли что -нибудь, что мог бы сделать серийный код в Libmaple, чтобы дать водителю в Windows знать, что его перезагрузили ?

Или, может быть, Stlink нужно сбросить всю доску, а не просто запустить код в 0x800000 (хотя я даю, что будет иметь какое -либо значение)

Спасибо

Роджер

mrbwa1
Пт, 01 мая 2015 г. 15:06
Роджер,

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

У меня еще нет аппаратного обеспечения STM32, но у доски на основе ATMEGA32U4 также есть проблемы с серийными.

http: // www.Ардуино.cc/en/serial/ifserial

Мне потребовалось время, чтобы получить сериал, чтобы работать прямо на Micro 32U4, даже если он простой код в эскизе.

Вы, вероятно, прошли через это, поэтому, пожалуйста, не обращайте внимания, если у вас,. Это просто звучит так же, как это делает Леонардо/Микро после загрузки эскиза.

Rogerclark
Пт, 1 мая 2015 г., 21:35
В существующем загрузчике устройство USB для загрузки (DFU Protocol) полностью отличается от USB -устройства для последовательного, когда работает эскиз.

Leaflabs имеют отличное описание того, как работает загрузчик Maple.
Видеть http: // Leaflabs.com/docs/bootloader.HTML

По сути, они изначально пытались иметь прошивку DFU и последовательного USB -устройства в загрузчике, а код загрузчика продолжит выполнение после запуска эскиза (так как код загрузчика будет обрабатывать последовательный USB для эскиза)

Но в основном это не сработало бы на Windows.

Таким образом, серийный код USB был перенесен на эскиз.
Следовательно, можно построить эскиз для любой общей платы, которая имеет USB -сериал.
Я попробовал это на своих платах STM32F103ZET и F103RCT, и они появляются в виде последовательных устройств на моем компьютере, и я могу использовать сериал.Печать и т. Д

Однако проблема в том, что каждый раз, когда вы загружаете эскиз на общую плату, вам приходится отключить и воссоединять USB.

И то же самое относится и к загрузчику Maple Bootloader. После загрузки (с помощью протокола DFU) загрузчик отключает весь свой USB -код и переходит к началу эскиза во флэш -памяти.
Однако, если шина USB не сбросится, компьютер не замечает, что устройство DFU было удалено и что плата теперь является последовательным устройством.

Чтобы обойти эту проблему, Leaflabs добавила небольшую схему, которая поднимает одну из линий USB, что отмечает хост ПК, и ПК проверяет, какое устройство подключено сейчас .


Если вы посмотрите на последовательную ветвь загрузчика Maple Bootloader, я связан с ранее в этой теме, эта версия загрузчика всегда остается в качестве последовательного устройства, поэтому технически нет необходимости сбросить шину USB, чтобы сигнализировать об изменении устройства на ПК, когда запускается код в эскизе.

Но... Мой опыт работы с Serial USB на общих досках подчеркнул, что все будет простым парусным спортом, и, как сказал Бобк, очень очень трудно производить хорошие загрузки.

Я сделаю отдельную папку с серийным загрузчиком Maple, из филиала Serial Bootloader, чтобы у нас был код для людей, с которыми они работают, если они хотят играть с ним.

Я также опубликую инструкции о том, как компилировать загрузчик под Windows, чтобы использовать необходимость в установке Mingw.

Конечно, вы можете использовать блоки COOCOX или EM :: для составления загрузчика, но я не уверен, что у меня будет время для настройки проекта EM: блоки

mrbwa1
Пт, 01 мая 2015 г., 22:48
Интересная реализация на кленовых досках. Было бы круто, если бы вы могли сигнализировать о линии USB с кодом, чтобы тянуть высоко, но я думаю, что это все равно потребует оборудования.

Не большой сюрприз, чтобы сократить мощность и вернуть ее, чтобы получить сериал для работы. Жаль, что у нас нет ссылки на производителей CPChines.

Rogerclark
Пт, 1 мая 2015 г., 23:46
Жаль, что у нас нет ссылки на производителей CPChines. Клоны Maple Mini уже имеют аппаратное обеспечение, это просто общие платы, которые не

Но есть нагрузки больше общих типов плат, а Maple Minis - все это F103CB

Он думает, что только Itead Studio продает кленовую доску (13 долларов США по специальному предложению), но он использует чип F103RB, а не F103RE, следовательно, у него нет ЦАП. Таким образом, вы можете также купить общий F103V

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

В любом случае, я добавлю серийный загрузчик в репо и назову его Generic Bootloader и оставлю его для сообщества, чтобы посмотреть на возможности

mrbwa1
Сб 2 мая 2015 г. 1:10
Я все еще, общаюсь с этими досками. Вы и пара других указали на меня на Maple MI против общих плат F103C8.

Может, я попробую дженерики в следующем... Или доска Discovery STM32F4... Так много вариантов!

Rogerclark
Сб 2 мая 2015 г., 3:04
@mrbwa1

Поддержка F4 в данный момент очень ограничена. Статус порта примерно эквивалентен API ARDUINO с 3 или 4 лет назад.

Я не рекомендую получить доску F4, если вы не хотите обновить базовый код ;-)

Если у вас нет Maple Mini, см. Mrbrunettes рекомендации о том, кто.

Если у вас уже есть Mape Mini и вы хотите доски с небольшим количеством вспышки и оперативной памяти, я думаю, что наиболее экономически эффективным решением являются платы STM32F103VET, доступные на Aliexpress.

Для дженериков вам понадобится USB для серийного адаптера, и вы можете подумать о том, чтобы получить STLINK (клон) за несколько $.

Rogerclark
Солнце 3 мая 2015 г., 10:48
Я только что наткнулся на этот интересный фрагмент информации

http: // Stackoverflow.COM/Вопросы/5297 ... Ly-removed

Мне нужно точно выяснить, какой код написать, но в основном это говорит о том, что можно заставить Windows думать, что USB -устройство было отключено и повторно подключено.

Это то, что делает дополнительное оборудование на Maple Mini Poard

@hull уже работает над Linux, используя этот код
/* usb-reset -- send a USB port reset to a USB device Compile with ... gcc usb-reset.c -o usb-reset ... then copy the resulting usb-reset binary to /usr/bin or some other suitable place in your PATH */ #include #include #include #include #include #include int main(int argc, char **argv) { const char *filename; int fd; int rc; if (argc != 2) { fprintf(stderr, "Usage: usbreset device-filename\n"); return 1; } filename = argv[1]; fd = open(filename, O_WRONLY); if (fd < 0) { perror("Error opening output file"); return 1; } printf("Resetting USB device %s\n", filename); rc = ioctl(fd, USBDEVFS_RESET, 0); if (rc < 0) { perror("Error in ioctl"); return 1; } printf("Reset successful\n"); close(fd); return 0; }

mrbwa1
Солнце 3 мая 2015 г., 14:54
Rogerclark написал:@mrbwa1

Поддержка F4 в данный момент очень ограничена. Статус порта примерно эквивалентен API ARDUINO с 3 или 4 лет назад.

Я не рекомендую получить доску F4, если вы не хотите обновить базовый код ;-)

Если у вас нет Maple Mini, см. Mrbrunettes рекомендации о том, кто.

Если у вас уже есть Mape Mini и вы хотите доски с небольшим количеством вспышки и оперативной памяти, я думаю, что наиболее экономически эффективным решением являются платы STM32F103VET, доступные на Aliexpress.

Для дженериков вам понадобится USB для серийного адаптера, и вы можете подумать о том, чтобы получить STLINK (клон) за несколько $.

Rogerclark
Пн, 04 мая 2015 г. 12:08
Обновлять.

Мне удалось получить 64 -битную версию Microsoft DevCon.Exe, и это действительно может заставить удаление USB -устройства Windows, а также отменять, как будто было подключено новое устройство, или оно может индивидуально установить устройство

Теперь это позволяет загружать общие платы через STLINK, но все еще иметь USB -сериал, так как серийный драйвер USB Windows может быть сброшен после загрузки, однако время, похоже, довольно критично

я.e USB -устройство должно быть сразу же сразу же после загрузки (время кажется довольно критическим), в противном случае это не работает.

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

Rogerclark
Вторник 5 мая 2015 г., 7:42
Ребята,

Просто подумал, что опубликую то, что нашел...

Похоже, есть плата STM32, которая запускает JavaScript.

https: // github.com/espruino/espruino

http: // www.эспроино.компонент

Интересно, что его загрузчик-это реализация собственного протокола серийной загрузки STM, но реализовано на бортовой USB.

http: // www.эспроино.com/serial+bootloader

Как ни странно, однако их схема все еще, по -видимому, содержит немного USB -оборудования для сброса.

Их оборудование - это единственный транзистор и 3 резисторы, и, по -видимому, такое же, как и в ядрах.

Я действительно не уверен, зачем им понадобится аппаратное обеспечение сброса USB, если плата работает как визуальная USB и ничего больше, возможно, кроме как при запуске.

Я думаю, мы могли бы опубликовать вопрос на их форуме.

Невозможно загрузить их загрузчик на Maple Mini и т. Д., Поскольку их загрузчик и основная программа являются одной и той же и имеют длину около 256 КБ !

К счастью, у меня есть доска F103Zet, у которой есть много места для этого, поэтому я собираюсь загрузить их прошивку

Я опубликую, когда у меня будет больше информации

Martinayotte
Ср. 6 мая 2015 г., 15:00
Привет, Роджер,

Если вы говорите о переключении транзистора 1.Подтягивание 5K, остерегайтесь того, что его также можно использовать для идентификации USB -устройства как полного скорости.

Цитата от http: // www.за пределами сложности.org/usbnutshell/usb2.SHTML : USB-устройство должно указать его скорость, вытянув либо D+, либо D-линию высокой до 3.3 вольт. Полно скоростное устройство, изображенное ниже. Эти вытягивающие резисторы на конце устройства также будут использоваться хостом или концентратором для обнаружения присутствия устройства, подключенного к его порту. Без подтягивания резистора USB предполагает, что с автобусом ничего не подключено. Некоторые устройства имеют этот резистор, встроенный в его кремний, который можно включать и выключать под управлением прошивки, другим требуется внешний резистор.

Rogerclark
Ср. 06 мая 2015 г., 19:57
Мартин

Спасибо за информацию о USB

Аппаратное обеспечение USB кажется по -разному на различных досках, на которые я смотрел, поэтому приятно знать, почему есть либо подтягивания, либо транзисторы, предвзятые к их делителям в состоянии или резисторах, прикрепленных к различным линиям USB

Большинство общих досок, которые у меня есть, могут быть сделаны для работы с серийным кодом USB (встроенный в эскиз), но одна плата STM32F103C8 не работает. Что говорит о том, что, возможно, у него нет никакой формы подтягивания - но это может быть просто аппаратная ошибка.


Я не уверен, сколько интереса для общего загрузчика, потому что, конечно, людям нужно будет прошить загрузчик в первую очередь.

Возможно, нам было бы лучше создать эквивалент Arduino как ICP. Это было бы просто каким -то проходом через систему, и было бы немного медленным, так как он должен был бы использовать программный сериал на ООН, но это запустит людей, которые хотят перейти от ООН к STM32

Luc_exe
Ср. 06 мая 2015 г., 21:22
Rogerclark написал: Аппаратное обеспечение USB кажется по -разному на различных досках, на которые я смотрел, поэтому приятно знать, почему есть либо подтягивания, либо транзисторы, предвзятые к их делителям в состоянии или резисторах, прикрепленных к различным линиям USB

Большинство общих досок, которые у меня есть, могут быть сделаны для работы с серийным кодом USB (встроенный в эскиз), но одна плата STM32F103C8 не работает. Что говорит о том, что, возможно, у него нет никакой формы подтягивания - но это может быть просто аппаратная ошибка.

Rogerclark
Ср. 06 мая 2015 г., 21:36
Luc Exe

Не уверен, что вы имеете в виду в доске с 2 UARTS ?

Re 2 разные типы эскиза, E.глин. Один со встроенным загрузчиком.

Я думаю, вы имеете в виду, создайте эскиз с встроенной способностью загрузчика.

Я подозреваю, что это возможно. Это как загрузчик с наброском Blink, прикрепленным к началу с ;-)

Ммм
Возможно, я думаю...

Luc_exe
Ср. 06 мая 2015 г., 22:40
@Роджер

Извините, не знаю, где я прочитал о 2 UART на Nano V3 (MEGA328P), но снова проверил, и есть только 1, поэтому, как вы сказали, должен быть реализован виртуальный последовательный порт и, следовательно, низкие скорости скорости.

Да, вот так.

Сначала поместите эскиз с загрузчиком, этот эскиз должен иметь возможность «прыгнуть» на первый адрес после смещения. Так что базовый эскиз теперь является «частью загрузчика». Следующие наброски, которые вы компилируете и загружают, будут записаться после смещения, поэтому «расширенный загрузчик» (загрузчик + начальный эскиз) может выполнить его и просто подумать о его частью исходного эскиза (TE One, который вы загрузили с загрузчиком в первую очередь время).

Не могли бы вы прояснить некоторые сомнения, которые у меня есть?

¿Невозможно загрузить загрузчик без другого кода в эскизе?
¿Где определено или кто говорит первоначальным аддресам начать писать вспышку? это конфигурация MCU выбранной платы в IDE? (Если так, как сложно отредактировать начальный адрес?)
¿Насколько сложно на самом деле редактировать маленькие части загрузчика? ¿Это низкий уровень?

PS: Исправлена ​​ссылка в предыдущем ответе.

Mrburnette
Ср 6 мая 2015 г., 22:55
Luc_exe написал:<...>
Я думаю то же самое, что может помочь людям начать использовать платы STM32.

Рик Кимбалл
Ср. 6 мая 2015 г., 11:02
Mrburnette написал:Нет ничего плохого в концепции общего загрузчика - но это уже в чипе!

Rogerclark
Ср. 06 мая 2015 г., 23:21
Луча,

Я согласен.

Если люди покупают общую доску, на ней вообще ничего не установлено, поэтому им понадобится дополнительное оборудование E.глин. USB для серийного или Stlink

Покупка Maple Mini - лучшая точка входа каждого, но некоторые люди все еще, кажется, идут на общие доски F103C8, возможно, они фракционно дешевле в некоторых странах, но в целом, кажется, Maple Mini кажется

Я лично не понимаю, почему они захотят купить эти общие доски..
Если они не являются опытным разработчиком, как Рик и @ahull. В обоих случаях я думаю, что они используют Stlink, а Рик использует Eclipse

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

Я предполагаю, что единственное, что может быть полезно для поддержки такого рода разработчиков, - это то, что @ahull, а также я делал для использования Stlink в качестве загрузки / отладки, и используйте разъем USB для USB для USB -последовательного.

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

Кажется, что происходит еще одна ветка о пользовательском загрузке ViewTopic.PHP?F = 37&t = 81
Это, вероятно, более полезно, чем пользовательский загрузчик

Luc_exe
Чт, 7 мая 2015 г., 13:56
@Ray
Я согласен, что связь между стоимостью и преимуществами (в данном случае использование против усилий по его приготовлению) не может быть взята из оценки (если у кого -то действительно есть некоторое время). Особенно, когда существует более одной доступной альтернативы, и есть другие приоритеты.

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

@Роджер
Я не согласен с некоторыми моментами. Позвольте мне объяснить мою точку зрения, поскольку я один из многих примеров людей в процессе присоединения к разработке STM32.

В момент покупки (конец марта) не было много мест, где можно было найти информацию. И если я сейчас ищу, Snecario то же самое. Места с информацией не являются новичками, теперь знакомы, но без многократного чтения трудно понять, что для начала работы нужно почти да или да, а также состав или мини -доска. Я знаю, что это одна из целей на форуме, но все еще слишком молод, и мне нужно время, чтобы вырасти, чтобы быть подходящими для 4 уровней (люди еще не решили, что для использования, Hobbyst, начинающих разработчиков и опытных разработчиков).

Arduino отличный из -за двух основных вещей: простые в использовании и дешево, чтобы начать, мы упускаем первую часть. Прямо сейчас панорама "получить опыт, который вам нужен опыт". Слова, которые вы сказали: «Покупка Maple Mini - это лучшая точка входа каждого», должна быть в месте, где каждый посетитель может его увидеть, если бы я был на до меня, я мог бы положить его с большим красным шрифтом в баннере :ржу не могу:

О выборе MCU/Board. Когда вы покупаете совет по разработке для многих проектов, вы можете иметь столько ресурсов (Ram, Flash, IO, периферийные устройства...) как это возможно, если они находятся в бюджете. От идеи до конца разработки многих вещей может измениться, так как они представляют собой платы за прототипирование, и они не заставляются непосредственно в соответствии с конечным продуктом, а для помощи вам в разработке процесс. Вы можете пойти на меньшее устройство, когда вы почти заканчиваете и знаете требования. Большая MCU более гибкая для развития, чем меньший.

PS: Если нелегко начать работу, мне все равно не нравится бир. Я только боюсь взрываться конденсаторами : oops:

Лучано,

Zoomx
Пт, 8 мая 2015 г., 6:06
Я купил общую доску, потому что я не знал, что на кленовых досках есть загрузчик. В любом случае я купил также клон Stlink2, и у меня было много серийных USB -адаптеров, поэтому было легко программировать эти доски.

Rogerclark
Пт, 8 мая 2015 г., 6:12
@zoomx

Какую платформу вы используете ?

У меня есть экспериментальный способ использования встроенного USB в качестве сериала Maple.

Я думаю, что это может быть лучшим вариантом для загрузки Stlink

Я думаю, что загрузка Stlink, вероятно, скоро станет методом выбора (если мы сможем получить работу отладки схемы !)

Zoomx
Пт, 8 мая 2015 г., 18:05
Общий и дешевый!
ViewTopic.PHP?F = 28&t = 37#P221

Я предложил загрузчик, но это не очень важно, так как у меня есть серийный адаптер и stlink. Мне нужно больше времени для экспериментов ;)

РЕДАКТИРОВАТЬ: Следующая плата может быть ядрево-ядро-ядро-F411RE 512KB вспышки и 128 КБ ОЗУ, 10.12 $ из ST Store (не знаю о стоимости доставки), но это F4

Edit2: я не могу найти Maple Mini на eBay до 9.5 $. Есть продавцы, которые продают до 9.5 $, но не отправляйте в Италию :(

Бобк
Солнце 10 мая 2015 12:16
Rogerclark написал:Боб,
Если я загружаю, то физически отключите, а затем подключите USB -разъем, плата появляется в виде последовательного устройства Maple (используя последовательный драйвер Windows)
И я могу использовать сериал.println () и т. д

Однако, если я загружаю через Stlink, который снова запускает код, - хотя Windows по -прежнему сообщает о последовательном устройстве, текст не отображается в терминале :-(

Я предполагаю, что должно происходить то, что виртуальный серийный драйвер в Windows выходит из синхронизации с тем, что происходит в серийном USB -коде в эскизе

victor_pv
Солнце 10 мая 2015 г. 14:42
Я считаю, что нашел простое решение, по крайней мере, для некоторых досок. Это прекрасно работает в моем Vet6 Generic.

РЕДАКТИРОВАТЬ:
Я был неправ, это заставило доску сбросить.

Mrburnette
Солнце 10 мая 2015 г. 15:00
BOBC написал:<...>

JTAG/SWD быстрее и лучше и избегать всех грязных проблем, это также позволяет правильно отладку. Тогда я думаю, что для разработки мы должны использовать адаптер JTAG, и это то, что я использую. Для новичков на самом деле не намного сложнее использовать USB-JTAG, чем USB-сериал.
<...>

Rogerclark
Солнце 10 мая 2015 г., 22:52
Боб

Спасибо за еще одно отличное описание того, как работает Maple Bootloader.

Немного испортившись с этим. Я думаю, что добавление аппаратного обеспечения сброса USB к общей плате, вероятно, будет самым простым и наиболее надежным способом.

Как говорит Рэй, Maple Mini, как правило, очень легко загрузить на. Единственный раз, когда дела идут не так, - это когда эскиз вылетает, а USB -сериал перестает работать, так что он не может ответить на байты команды Reset из IDE
Но использование режима постоянного загрузчика исправляет это, или то, что, кажется, также работает, просто удерживает сброс до тех пор, пока не закончена компиляция, а DFU Util не ищет плату.

я.E Я не думаю, что дополнительная кнопка абсолютно необходима для использования загрузчика Maple, но необходимо оборудование отключения.

На самом деле @victor и несколько других людей предположили, что, возможно, D-пин (извините, не имеет ссылки на руки), может быть переключен на GPIO, а не на его USB-функцию и приводится к высоту, так как это будет иметь тот же эффект оборудование сброса.

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




Луча

Cypress PSOC действительно. Мы, вероятно, могли бы сделать такой же чит.

При создании проекта PSOC вы должны включить модуль загрузчика в свой код.
Если вы не включите его, вы не можете загрузить в следующий раз, потому что в PSOC нет загрузчика

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

Все еще.. Я подумал, что если вы забудете включить модуль загрузчика в свой PSOC Project, разве вы в основном не засыпьте свой PSOC, если у вас нет внешнего программиста .



Рекатация

Интересно, что команда IDE намеревалась сделать с нулем. Им понадобится такая же функциональность, как и мы. И я был бы удивлен, если их решение не использовало GDB на более низких уровнях (или эквивалентном)

У меня есть клон JTAG и клон Stlink, и я действительно нагреваю, чтобы Stlink.

Клоны очень дешевые и работают хорошо, и даже если поставка дешевых клонов Stlink высыхает, будет возможность прошить проблему Black Magic Generic F103C8 и использовать его в качестве инструмента отладки.

На самом деле бинар Stlink сбежал на некоторые российские веб -сайты, поэтому Genie выходит из бутылки для STM, и я думаю, что они должны просто сделать STLINK, а также прошивка процессора CO Nucleo Чипсы, чем они делают из продажи досок в нукле.

Загрузить с помощью STLINK и использование USB на борту USB для Serial работает, но требуется дополнительный код на стороне хоста, чтобы перезапустить драйвер USB.

Это сложнее в Windows, чем Linux, но у меня есть работа на Windows, и @ahull работает на Linux

Mrburnette
Пн 11 мая 2015 г., 2:46
На самом деле @victor и несколько других людей предположили, что, возможно, D-пин (извините, не имеет ссылки на руки), может быть переключен на GPIO, а не на его USB-функцию и приводится к высоту, так как это будет иметь тот же эффект оборудование сброса.
Кажется, я помню, что V-USB делает (может сделать) этот трюк...
http: // www.работа.CA/V-USB-TUTO ... мега-крошка/
Прежде чем включить глобальные прерывания с помощью sei (), вы должны сделать следующее:

Убедитесь, что выводы ввода/вывода, используемые для USB, являются входными данными, а внутренние резисторы для подтягивания для этих выводов отключены. Это состояние по умолчанию после сброса.
Позвоните USBDevIedisconnect (), подождите несколько 100 миллисекунд, а затем позвоните USBDeviceConnect (). Это обеспечивает (повторно) перечисление устройства. Теоретически, вам это не нужно, но это предотвращает несоответствия между хостом и устройством после оборудования или сброса сторожевого пса.
Позвоните USBINIT (), чтобы инициализировать драйвер.

Rogerclark
Пн 11 мая 2015 г., 3:17
Луча

Очень интересно. Интересно, почему Leaflabs решили использовать внешнюю схему для этого... Позор, мы не можем их спросить, но они заняты новыми вещами ;-(

Mrburnette
Пн 11 мая 2015 г., 12:57
Rogerclark написал:Луча

Очень интересно. Интересно, почему Leaflabs решили использовать внешнюю схему для этого... Позор, мы не можем их спросить, но они заняты новыми вещами ;-(

Rogerclark
Пн 11 мая 2015 г., 22:33
Луча

Это интересно.

Я думаю, что Рик заметил, что geneicstm32f103c8 имеют 1.5K резистор между одной из линий USB и 3.3V (я думаю, это была D-линия, но я не могу быть уверен)

Итак, на этих досках звучит так, как будто хост -система должна предположить, что это USB 3.0 Устройство, потому что при холодной загрузке штифт GPIO, к которому прикреплен D-, будет плавать, поэтому резистор будет тянуть D- High.

Затем, когда код настройки USB работает в UP, он переопределяет 1.5K резистор.

Таким образом, может случиться так, что эти платы могут перечислять просто, просто положив D-штифт в режим ввода вверх в режим ввода.


Или я ошибся и 1.5K до 3.3 для USB 1.1 ???

Mrburnette
Вторник 12 мая 2015 г. 2:52 утра
Rogerclark написал:Луча

Это интересно.

Я думаю, что Рик заметил, что geneicstm32f103c8 имеют 1.5K резистор между одной из линий USB и 3.3V (я думаю, это была D-линия, но я не могу быть уверен)

Итак, на этих досках звучит так, как будто хост -система должна предположить, что это USB 3.0 Устройство, потому что при холодной загрузке штифт GPIO, к которому прикреплен D-, будет плавать, поэтому резистор будет тянуть D- High.

Затем, когда код настройки USB работает в UP, он переопределяет 1.5K резистор.

Таким образом, может случиться так, что эти платы могут перечислять просто, просто положив D-штифт в режим ввода вверх в режим ввода.


Или я ошибся и 1.5K до 3.3 для USB 1.1 ???

victor_pv
Вторник 12 мая 2015 г. 18:18
Только что проверил с моей ветеринарной доской, которая имеет 1.5k подтягивает и без схемы управления я могу вызвать реэналирование, установив PA12 в качестве выходного сигнала, установив его низко, немного ожидая и снова установив ее плавание: pinMode (PA12, OUTPUT); digitalWrite (PA12, LOW); delay (100); Serial.println ("Setting PA12 Floating"); pinMode (PA12, INPUT_FLOATING);

Rogerclark
Вторник 12 мая 2015 г., 21:44
Виктор

Можете ли вы застегнуть ваши файлы и доски для ветеринаров.TXT и опубликуйте его на форуме или отправьте мне напишите мне

У меня есть доска Zet, которая является суперсетом ветеринара, поэтому я могу дать вашим файлам на моем доске.

Я подозреваю, что серийный USB не собирается в эскиз, но не видя, как ваша установка трудно понять, что не так

Рик Кимбалл
Ср 13 мая 2015 г. 12:23
victor_pv написал:Только что проверил с моей ветеринарной доской, которая имеет 1.5k подтягивает и без схемы управления я могу вызвать реэналирование, установив PA12 в качестве выходного сигнала, установив его низко, немного ожидая и снова установив ее плавание:

Mrburnette
Ср 13 мая 2015 г. 12:55
: D

victor_pv
Ср 13 мая 2015 г., 4:19
Роджер, я загрузил модифицированные файлы в свой «модифицированный» репо:
https: // github.com/vicopropv/stm32f1_modified/

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

Рик, спасибо за тестирование, я рад узнать на другой доске. Надеюсь, это будет последовательным.
Если это, кажется, работает должным образом, я думаю, что мы могли бы попытаться включить его либо в обычную подпрограмму init (), либо в загрузчик прямо перед вызовом эскиза.

РЕДАКТИРОВАТЬ: Рик, я вижу, что вы установили порт на низком уровне, но не видите, что вы измените PA12 после этого, он возвращается плавающим на установке USD DEV?

Rogerclark
Ср 13 мая 2015 г., 4:30
Виктор

У меня был быстрый ход с моими досками F103ZET, а также с F103C8, но я не смог получить сериал USB для работы над ними

Я уверен, что он работал на днях, поэтому я не знаю, что я изменил :-(

Я останусь в своей основной филиале и добавлю ваши ветеринарные файлы

КСТАТИ. Моя ветеринарная доска прибыла в пост сегодня утром, и это выглядит действительно хорошо.

Меньше того, что у вас есть, и примерно 2/3 размером с Uno. Мне очень нравится размер, это хороший компромисс, так как Zet Chip огромный (излишне большой для большинства рабочих мест, которые я подозреваю)

Он имеет Atmel 24C08 (I2C EEPROM 8K) на спине, а также слот Micro SD -карты

На самом деле у моей Zet Poard также есть Micro SD, но я был слишком занят, чтобы попробовать.


Я добавлю вам v -сериал в репо, если у меня будет время сегодня вечером

Спасибо

Роджер

Редактировать

Я только что заметил, что я был в ветви кода, где был удален весь архивный флаг, возможно, это также ломает серийный USB ;-)

Rogerclark
Ср 13 мая 2015 г. 11:01
Привет, Виктор,

Я обновил файлы (в основном доски.TXT) и включили их в репо для F103V

Я провел некоторое базовое тестирование, но у меня не было шансов проверить на своих v -платах, потому что мне нужно припаять заголовки, и у меня еще не было времени, потому что потребовалось некоторое время, чтобы обновить ваше Новый раздел в досках.TXT, чтобы соответствовать изменениям в платформе.текст

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

См. F103Z/Wirish/Boards_setup.CPP
__weak void board_setup_usb(void) { #ifdef SERIAL_USB //Attempt to reset the USB interface - developed by Victor PV gpio_set_mode(PIN_MAP[PA12].gpio_device, PIN_MAP[PA12].gpio_bit, GPIO_OUTPUT_PP); gpio_write_bit(PIN_MAP[PA12].gpio_device, PIN_MAP[PA12].gpio_bit,0); for(volatile unsigned int i=0;i<5000000;i++) { asm("nop"); } gpio_set_mode(PIN_MAP[PA12].gpio_device, PIN_MAP[PA12].gpio_bit, GPIO_INPUT_FLOATING); Serial.begin();// Roger Clark. Changed SerialUSB to Serial for Arduino sketch compatibility #endif }

victor_pv
Ср 13 мая 2015 г., 15:30
Роджер спасибо за проверку. Я постараюсь скачать из вашего репо и провести некоторое тестирование с моей доской и сообщить обратно.

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

Я больше заинтересован в том, чтобы сначала работать Serialusb, а затем после этого посмотрите, смогу ли я навязать рекуперацию.

Rogerclark
Ср 13 мая 2015 г., 21:01
Виктор

Я полагаю, что вы используете Windows ?

Я не уверен, если вы разместили, если вы использовали 32 или 64 бит.

Дайте мне знать, так как мне нужно написать вам несколько файлов EXE

Редактировать

Пока я помню...

На днях я посмотрел на код загрузчика Maple Bootloader, чтобы увидеть, когда он использует строку отключения, и, кажется, находится в коде, который называется до перемещения до начала кода эскиза

В любом случае, одна вещь, которую я заметил, заключается в том, что это жестко кодировать для использования PC12, в оборудовании.C, т.е. в отличие от светодиодных и «кнопок», для него нет #Define, в конфигурации.час

Это может частично объяснить, почему я не мог использовать PC13 на своей общей плате в качестве светодиода, хотя я изменил все необходимые регистры в конфигурации.час

Мне нужно будет снова просмотреть код загрузчика, потому что в настоящее время я не вижу, где он настраивает RCC для порта C, и где он устанавливает, что PC12 является выходом.

Я подозреваю, что везде, где он устанавливает PC12 в качестве вывода, он, возможно, устанавливает PC13 как вход, если только он не выполняет маску или обновление

Кстати, вот код сброса.

я.e Он не может удержаться в сбросе так долго, потому что GPIO Init все еще будет очищать PIN -код диска

void jumpToUser(u32 usrAddr) { typedef void (*funcPtr)(void); u32 jumpAddr = *(vu32 *)(usrAddr + 0x04); /* reset ptr in vector table */ funcPtr usrMain = (funcPtr) jumpAddr; /* tear down all the dfu related setup */ // disable usb interrupts, clear them, turn off usb, set the disc pin // todo pick exactly what we want to do here, now its just a conservative flashLock(); usbDsbISR(); nvicDisableInterrupts(); setPin(GPIOC, 12); // disconnect usb from host. todo, macroize pin systemReset(); // resets clocks and periphs, not core regs __MSR_MSP(*(vu32 *) usrAddr); /* set the users stack ptr */ usrMain(); /* go! */ }

Rogerclark
Ср 13 мая 2015 г., 22:56
Виктор,

Я прикрепил Windows USB Reset Exe's

Есть 32 -битная и 64 -битная версия, я.e One с x64 в конце - 64 -битный один

Смотрите мою другую публикацию, но в основном, если вы измените свой скрипт загрузки, чтобы запустить DevCon.exe после его завершения, вы и говорите Windows перезагрузить USB -устройство.

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

эн.глин. devconX64.exe restart *1eaf*

victor_pv
Чт 14 мая 2015 г. 14:22
Роджер, до сих пор модификации, которые вы внесли в код V, поэтому сериал выполняет действия PA12, также работает на моей плате RET, мне еще не приходилось использовать инструмент DevCon, но спасибо, что опубликовали его.

Как только я заставлю загрузчик правильно работать на плате RET, я дам вам знать, если он переоборудован при прыжке на эскиз.
Что касается загрузчика RET, я думаю, в основном совпадает с загрузчиком Maple Native, поэтому, если я получаю его работать на один, должен работать для другого.
Основные различия - все в строках определения (размер вспышки, размер страницы, светодиодный номер PIN -код и порт и т. Д.), Поэтому я чувствую, что мы сможем иметь их все в одном репо, и просто иметь все параметры в конфигурации.H файл, как вы делали с Maple и Maple Mini.

victor_pv
Пт 15 мая 2015 г., 4:22
У меня есть загрузчик, работающий нормально на общей плате RCT6. Монгается светодиод, ожидает несколько секунд, чтобы получить загрузки, загружать нормально, запускает код и повторно разъединяется в Windows.
Я установил время ожидания в загрузчике немного дольше, чтобы дать больше времени для Windows и инструмента DFU, чтобы обнаружить его.

Я начал с загрузчика Leaflabs ret6, а затем применил все обновления и оптимизации, которые были применены к добавленному коду Roger, чтобы получить загрузки с id2.

Я почти уверен, что мы можем не построить загрузку в ОЗУ, если это необходимо. В такого типа плат, которые на самом деле могут быть полезны, но прежде чем прикоснуться к большему, я загружаю его в новое репо в своем GitHub.

После тестирования и подтверждения все хорошо, я думаю, мы должны слиться с Mini Bootloader Роджера, потому что различия действительно малы:
-ПИН -контакты для светодиода
-Немного кода, чтобы вызвать повторную секунду с PA12
-не проверяет кнопку, потому что на этой плате нет кнопки
-и размер страницы 2 кб, который уже установлен с определением линии, так легко сделать ее условным

Если кто -то хочет использовать его и испытывать проблемы, дайте мне знать.

РЕДАКТИРОВАТЬ: https: // github.com/Victorpv/Maple-bootl ... nsity-2.0/

Данквел
Чт, 09 июля 2015 г. 14:45
Уважаемый мистер Кларк,

Firstr Я хочу сказать спасибо за всю тяжелую работу на устройствах STM32F... Я вскоре использую ваш Arduino Ide с клоном STM32F103ZET6, но не нравится этот IDE. Итак, я использую либо Eclipse, либо сейчас для развития.

У меня есть этот клон от G&С супермаркетом: http: // www.eBay.com/itm/1pcs-stm32f103z ... 1305557264), для которого /я хотел бы построить общий загрузчик (светодиод на PG15)

Я использую Coide (с Arm-None-Eabi-GCC-4.9.3) На данный момент и получение ошибки ссылки, которую я не могу решить, я надеюсь, что вы сможете дать мне несколько указателей о том, как решить эту ошибку ссылки:

[cc] c: \ users \ dlankvel \ coide \ workspace \ stm32duino-bootloader-master \ stm32f1 \ stm32_lib/c_only_startup.S: 108: множественное определение `default_handler '


Я прокомментировал все не применимые конфигурации в Makefile и сделал #Define Generic-PG15 в конфигурации.час

Вот полный выход Coide (ошибка ссылки - @ end):

GCC Home: C: \ localdata \ eclipse_c ++ \ gcc_arm_eabi \ bin
Скомпилируйте:
[mkdir] Skining C: \ users \ dlankvel \ coide \ workspace \ stm32duino \ stm32duino \ debug \ bin, потому что уже существует.
[mkdir] Skining C: \ users \ dlankvel \ coide \ workspace \ stm32duino \ stm32duino \ debug \ obj, потому что он уже существует.
[CC] 14 общих файлов для составления.
[CC] ARM -None -EABI -GCC -MCPU = CORTEX -M3 -MTHAMB -G2 -WALL -O0 -C -DSTM32F103ZET6 -IC: \ Пользователи \ Dlankvel \ Coide \ Workspace \ STM32DUINO -BOUTLOUDER -MASTER -IC: \ пользователи \ dlankvel \ coide \ workspace -ic: \ users \ dlankvel \ coide \ workspace \ stm32duino -ic: \ users \ dlankvel \ coide \ workspace \ stm32duino -bootloader -master \ stm32f1 -ic: \ users \ dlankvel \ coide \ STM32duino-bootloader-master \ stm32f1 \ stm32_lib -ic: \ users \ dlankvel \ coide \ workspace \ stm32duino-bootloader-master \ stm32f1 \ usb_lib c: \ users \ dlankvel \ coide \ askpace \ stm32duin \ usb_core.c C: \ users \ dlankvel \ coide \ workspace \ stm32duino-bootloader-master \ stm32f1 \ usb_lib \ usb_int.c C: \ users \ dlankvel \ coide \ workspace \ stm32duino-bootloader-master \ stm32f1 \ usb_lib \ usb_regs.c C: \ users \ dlankvel \ coide \ workspace \ stm32duino-bootloader-master \ stm32f1 \ dfu.c C: \ users \ dlankvel \ coide \ workspace \ stm32duino-bootloader-master \ stm32f1 \ stm32_lib \ c_only_startup_user.s c: \ users \ dlankvel \ coide \ workspace \ stm32duino-bootloader-master \ stm32f1 \ usb_lib \ usb_init.c C: \ users \ dlankvel \ coide \ workspace \ stm32duino-bootloader-master \ stm32f1 \ main.c C: \ users \ dlankvel \ coide \ workspace \ stm32duino-bootloader-master \ stm32f1 \ usb.c C: \ users \ dlankvel \ coide \ workspace \ stm32duino-bootloader-master \ stm32f1 \ hardware.c C: \ users \ dlankvel \ coide \ workspace \ stm32duino-bootloader-master \ stm32f1 \ usb_callbacks.c C: \ users \ dlankvel \ coide \ workspace \ stm32duino-bootloader-master \ stm32f1 \ usb_descriptor.c C: \ users \ dlankvel \ coide \ workspace \ stm32duino-bootloader-master \ stm32f1 \ stm32_lib \ c_only_startup.s c: \ users \ dlankvel \ coide \ workspace \ stm32duino-bootloader-master \ stm32f1 \ stm32_lib \ cortexm3_macro.s c: \ users \ dlankvel \ coide \ workspace \ stm32duino-bootloader-master \ stm32f1 \ usb_lib \ usb_mem.в
[cc] в файле, включенном из C: \ users \ dlankvel \ coide \ workspace \ stm32duino-bootloader-master \ stm32f1 \ usb_lib \ usb_lib.H: 22: 0,
[cc] из C: \ users \ dlankvel \ coide \ workspace \ stm32duino-bootloader-master \ stm32f1 \ usb_lib \ usb_core.C: 17:
[cc] c: \ users \ dlankvel \ coide \ workspace \ stm32duino-bootloader-master \ stm32f1 \ usb_lib \ usb_core.C: В функции 'SetDeviceadDress':
[cc] c: \ users \ dlankvel \ coide \ workspace \ stm32duino-bootloader-master \ stm32f1 \ usb_lib \ usb_regs.H: 380: 26: Предупреждение: предложить скобки вокруг арифметики в операнде '|' [-Wparentheses]
[cc] _getendpoint (bepnum) & Epreg_mask | баддр)
[CC] ^
[cc] c: \ users \ dlankvel \ coide \ workspace \ stm32duino-bootloader-master \ stm32f1 \ usb_lib \ usb_regs.h: 204: 10: Примечание: в определении макроса '_setendpoint'
[CC] (U16) WregeValue)
[CC] ^
[cc] c: \ users \ dlankvel \ coide \ workspace \ stm32duino-bootloader-master \ stm32f1 \ usb_lib \ usb_core.C: 997: 5: Примечание: в расширении макроса '_setepaddress'
[cc] _setepaddress ((U8) i, (U8) i);
[CC] ^
[cc] в файле, включенном из C: \ users \ dlankvel \ coide \ workspace \ stm32duino-bootloader-master \ stm32f1 \ usb_lib \ usb_lib.H: 22: 0,
[cc] из C: \ users \ dlankvel \ coide \ workspace \ stm32duino-bootloader-master \ stm32f1 \ usb_lib \ usb_regs.C: 17:
[cc] c: \ users \ dlankvel \ coide \ workspace \ stm32duino-bootloader-master \ stm32f1 \ usb_lib \ usb_regs.C: В функции 'toggledtog_rx':
[cc] c: \ users \ dlankvel \ coide \ workspace \ stm32duino-bootloader-master \ stm32f1 \ usb_lib \ usb_regs.H: 356: 70: Предупреждение: предложить скобки вокруг арифметики в операнде '|' [-Wparentheses]
[cc] ep_dtog_rx | _GetendPoint (bepnum) & Epreg_mask))
[CC] ^
[cc] c: \ users \ dlankvel \ coide \ workspace \ stm32duino-bootloader-master \ stm32f1 \ usb_lib \ usb_regs.h: 204: 10: Примечание: в определении макроса '_setendpoint'
[CC] (U16) WregeValue)
[CC] ^
[cc] c: \ users \ dlankvel \ coide \ workspace \ stm32duino-bootloader-master \ stm32f1 \ usb_lib \ usb_regs.C: 401: 3: Примечание: в расширении Macro '_toggledtog_rx'
[cc] _toggledtog_rx (bepnum);
[CC] ^
[cc] c: \ users \ dlankvel \ coide \ workspace \ stm32duino-bootloader-master \ stm32f1 \ usb_lib \ usb_regs.C: В функции 'toggledtog_tx':
[cc] c: \ users \ dlankvel \ coide \ workspace \ stm32duino-bootloader-master \ stm32f1 \ usb_lib \ usb_regs.H: 358: 70: Предупреждение: предложить скобки вокруг арифметики в операнде '|' [-Wparentheses]
[cc] ep_dtog_tx | _GetendPoint (bepnum) & Epreg_mask))
[CC] ^
[cc] c: \ users \ dlankvel \ coide \ workspace \ stm32duino-bootloader-master \ stm32f1 \ usb_lib \ usb_regs.h: 204: 10: Примечание: в определении макроса '_setendpoint'
[CC] (U16) WregeValue)
[CC] ^
[cc] c: \ users \ dlankvel \ coide \ workspace \ stm32duino-bootloader-master \ stm32f1 \ usb_lib \ usb_regs.C: 412: 3: Примечание: в расширении макроса '_toggledtog_tx'
[cc] _toggledtog_tx (bepnum);
[CC] ^
[cc] c: \ users \ dlankvel \ coide \ workspace \ stm32duino-bootloader-master \ stm32f1 \ usb_lib \ usb_regs.C: В функции 'cleardtog_rx':
[cc] c: \ users \ dlankvel \ coide \ workspace \ stm32duino-bootloader-master \ stm32f1 \ usb_lib \ usb_regs.H: 356: 70: Предупреждение: предложить скобки вокруг арифметики в операнде '|' [-Wparentheses]
[cc] ep_dtog_rx | _GetendPoint (bepnum) & Epreg_mask))
[CC] ^
[cc] c: \ users \ dlankvel \ coide \ workspace \ stm32duino-bootloader-master \ stm32f1 \ usb_lib \ usb_regs.h: 204: 10: Примечание: в определении макроса '_setendpoint'
[CC] (U16) WregeValue)
[CC] ^
[cc] c: \ users \ dlankvel \ coide \ workspace \ stm32duino-bootloader-master \ stm32f1 \ usb_lib \ usb_regs.H: 368: 5: Примечание: в расширении макроса '_toggledtog_rx'
[cc] _toggledtog_rx (bepnum)
[CC] ^
[cc] c: \ users \ dlankvel \ coide \ workspace \ stm32duino-bootloader-master \ stm32f1 \ usb_lib \ usb_regs.C: 423: 3: Примечание: в расширении макроса '_cleardtog_rx'
[cc] _cleardtog_rx (bepnum);
[CC] ^
[cc] c: \ users \ dlankvel \ coide \ workspace \ stm32duino-bootloader-master \ stm32f1 \ usb_lib \ usb_regs.C: В функции 'cleardtog_tx':
[cc] c: \ users \ dlankvel \ coide \ workspace \ stm32duino-bootloader-master \ stm32f1 \ usb_lib \ usb_regs.H: 358: 70: Предупреждение: предложить скобки вокруг арифметики в операнде '|' [-Wparentheses]
[cc] ep_dtog_tx | _GetendPoint (bepnum) & Epreg_mask))
[CC] ^
[cc] c: \ users \ dlankvel \ coide \ workspace \ stm32duino-bootloader-master \ stm32f1 \ usb_lib \ usb_regs.h: 204: 10: Примечание: в определении макроса '_setendpoint'
[CC] (U16) WregeValue)
[CC] ^
[cc] c: \ users \ dlankvel \ coide \ workspace \ stm32duino-bootloader-master \ stm32f1 \ usb_lib \ usb_regs.H: 370: 5: Примечание: в расширении макроса '_toggledtog_tx'
[cc] _toggledtog_tx (bepnum)
[CC] ^
[cc] c: \ users \ dlankvel \ coide \ workspace \ stm32duino-bootloader-master \ stm32f1 \ usb_lib \ usb_regs.C: 434: 3: Примечание: в расширении макроса '_cleardtog_tx'
[cc] _cleardtog_tx (bepnum);
[CC] ^
[cc] c: \ users \ dlankvel \ coide \ workspace \ stm32duino-bootloader-master \ stm32f1 \ usb_lib \ usb_regs.C: В функции 'setepaddress':
[cc] c: \ users \ dlankvel \ coide \ workspace \ stm32duino-bootloader-master \ stm32f1 \ usb_lib \ usb_regs.H: 380: 26: Предупреждение: предложить скобки вокруг арифметики в операнде '|' [-Wparentheses]
[cc] _getendpoint (bepnum) & Epreg_mask | баддр)
[CC] ^
[cc] c: \ users \ dlankvel \ coide \ workspace \ stm32duino-bootloader-master \ stm32f1 \ usb_lib \ usb_regs.h: 204: 10: Примечание: в определении макроса '_setendpoint'
[CC] (U16) WregeValue)
[CC] ^
[cc] c: \ users \ dlankvel \ coide \ workspace \ stm32duino-bootloader-master \ stm32f1 \ usb_lib \ usb_regs.C: 446: 3: Примечание: в расширении макроса '_setepaddress'
[cc] _setepaddress (bepnum, baddr);
[CC] ^
[cc] c: \ users \ dlankvel \ coide \ workspace \ stm32duino-bootloader-master \ stm32f1 \ usb_lib \ usb_regs.C: В функции 'freeuserbuffer':
[cc] c: \ users \ dlankvel \ coide \ workspace \ stm32duino-bootloader-master \ stm32f1 \ usb_lib \ usb_regs.H: 358: 70: Предупреждение: предложить скобки вокруг арифметики в операнде '|' [-Wparentheses]
[CC] ^
[cc] ep_dtog_tx | _GetendPoint (bepnum) & Epreg_mask))
[cc] c: \ users \ dlankvel \ coide \ workspace \ stm32duino-bootloader-master \ stm32f1 \ usb_lib \ usb_regs.h: 204: 10: Примечание: в определении макроса '_setendpoint'
[CC] (U16) WregeValue)
[CC] ^
[cc] c: \ users \ dlankvel \ coide \ workspace \ stm32duino-bootloader-master \ stm32f1 \ usb_lib \ usb_regs.C: 711: 5: Примечание: в расширении макроса '_toggledtog_tx'
[cc] _toggledtog_tx (bepnum);
[CC] ^
[cc] c: \ users \ dlankvel \ coide \ workspace \ stm32duino-bootloader-master \ stm32f1 \ usb_lib \ usb_regs.H: 356: 70: Предупреждение: предложить скобки вокруг арифметики в операнде '|' [-Wparentheses]
[cc] ep_dtog_rx | _GetendPoint (bepnum) & Epreg_mask))
[CC] ^
[cc] c: \ users \ dlankvel \ coide \ workspace \ stm32duino-bootloader-master \ stm32f1 \ usb_lib \ usb_regs.h: 204: 10: Примечание: в определении макроса '_setendpoint'
[CC] (U16) WregeValue)
[CC] ^
[cc] c: \ users \ dlankvel \ coide \ workspace \ stm32duino-bootloader-master \ stm32f1 \ usb_lib \ usb_regs.C: 715: 5: Примечание: в расширении макроса '_toggledtog_rx'
[cc] _toggledtog_rx (bepnum);
[CC] ^
[cc] в файле, включенном из C: \ users \ dlankvel \ coide \ workspace \ stm32duino-bootloader-master \ stm32f1 \ common.H: 36: 0,
[CC] из C: \ users \ dlankvel \ coide \ workspace \ stm32duino-bootloader-master \ stm32f1 \ hardware.H: 30,
[CC] из C: \ users \ dlankvel \ coide \ workspace \ stm32duino-bootloader-master \ stm32f1 \ dfu.C: 33:
[CC] C: \ users \ dlankvel \ coide \ workspace \ stm32duino-bootloader-master \ stm32f1 \ config.H: 86: 16: Предупреждение: отсутствует пробел после названия макроса
[cc] #define generic-pg15
[CC] ^
[CC] C: \ users \ dlankvel \ coide \ workspace \ stm32duino-bootloader-master \ stm32f1 \ dfu.C: В функции 'dfucopystate':
[CC] C: \ users \ dlankvel \ coide \ workspace \ stm32duino-bootloader-master \ stm32f1 \ dfu.C: 374: 9: Предупреждение: возврат отбрасывает «нестабильный» отборочный квалификатор из целевого типа указателя
[CC] возврат (&(dfuappstatus.Bstate));
[CC] ^
[cc] в файле, включенном из C: \ users \ dlankvel \ coide \ workspace \ stm32duino-bootloader-master \ stm32f1 \ common.H: 36: 0,
[CC] C: \ users \ dlankvel \ coide \ workspace \ stm32duino-bootloader-master \ stm32f1 \ config.H: 86: 16: Предупреждение: отсутствует пробел после названия макроса
[CC] из C: \ users \ dlankvel \ coide \ workspace \ stm32duino-bootloader-master \ stm32f1 \ main.C: 34:
[cc] #define generic-pg15
[CC] ^
[CC] C: \ users \ dlankvel \ coide \ workspace \ stm32duino-bootloader-master \ stm32f1 \ main.C: В функции 'Main':
[CC] C: \ users \ dlankvel \ coide \ workspace \ stm32duino-bootloader-master \ stm32f1 \ main.C: 51: 2: Предупреждение: неявное объявление функции «readbuttonstate» [-wimplicite-function-declaration]
[cc] bool no_user_jump = (!CheckUsercode (user_code_flash0x8005000) && !CheckUsercode (user_code_flash0x8002000)) || readbuttonstate ();
[CC] ^
[cc] в файле, включенном из C: \ users \ dlankvel \ coide \ workspace \ stm32duino-bootloader-master \ stm32f1 \ common.H: 36: 0,
[CC] из C: \ users \ dlankvel \ coide \ workspace \ stm32duino-bootloader-master \ stm32f1 \ usb.H: 27,
[CC] из C: \ users \ dlankvel \ coide \ workspace \ stm32duino-bootloader-master \ stm32f1 \ usb.C: 33:
[CC] C: \ users \ dlankvel \ coide \ workspace \ stm32duino-bootloader-master \ stm32f1 \ config.H: 86: 16: Предупреждение: отсутствует пробел после названия макроса
[cc] #define generic-pg15
[CC] ^
[cc] в файле, включенном из C: \ users \ dlankvel \ coide \ workspace \ stm32duino-bootloader-master \ stm32f1 \ common.H: 36: 0,
[CC] из C: \ users \ dlankvel \ coide \ workspace \ stm32duino-bootloader-master \ stm32f1 \ hardware.H: 30,
[CC] из C: \ users \ dlankvel \ coide \ workspace \ stm32duino-bootloader-master \ stm32f1 \ hardware.C: 33:
[CC] C: \ users \ dlankvel \ coide \ workspace \ stm32duino-bootloader-master \ stm32f1 \ config.H: 86: 16: Предупреждение: отсутствует пробел после названия макроса
[cc] #define generic-pg15
[CC] ^
[cc] в файле, включенном из C: \ users \ dlankvel \ coide \ workspace \ stm32duino-bootloader-master \ stm32f1 \ common.H: 36: 0,
[CC] из C: \ users \ dlankvel \ coide \ workspace \ stm32duino-bootloader-master \ stm32f1 \ usb_descriptor.H: 28,
[CC] из C: \ users \ dlankvel \ coide \ workspace \ stm32duino-bootloader-master \ stm32f1 \ usb_descriptor.C: 35:
[CC] C: \ users \ dlankvel \ coide \ workspace \ stm32duino-bootloader-master \ stm32f1 \ config.H: 86: 16: Предупреждение: отсутствует пробел после названия макроса
[cc] #define generic-pg15
[CC] ^
[cc] в файле, включенном из C: \ users \ dlankvel \ coide \ workspace \ stm32duino-bootloader-master \ stm32f1 \ usb_lib/usb_lib.H: 21: 0,
[CC] из C: \ users \ dlankvel \ coide \ workspace \ stm32duino-bootloader-master \ stm32f1 \ usb.H: 28,
[CC] из C: \ users \ dlankvel \ coide \ workspace \ stm32duino-bootloader-master \ stm32f1 \ common.H: 40,
[CC] из C: \ users \ dlankvel \ coide \ workspace \ stm32duino-bootloader-master \ stm32f1 \ usb_descriptor.H: 28,
[CC] из C: \ users \ dlankvel \ coide \ workspace \ stm32duino-bootloader-master \ stm32f1 \ usb_descriptor.C: 35:
[cc] c: \ users \ dlankvel \ coide \ workspace \ stm32duino-bootloader-master \ stm32f1 \ usb_lib/usb_type.H: 23: 14: Предупреждение: инициализация делает целое число из указателя без актера
[cc] #define null ((void *) 0)
[CC] ^
[CC] C: \ users \ dlankvel \ coide \ workspace \ stm32duino-bootloader-master \ stm32f1 \ usb_descriptor.C: 201: 28: Примечание: в расширении макрос
[CC] U8 U8_USBStringInterface = null;
[CC] ^
[CC] 0 Общая сумма файлов для составления.
[CC] Начальная ссылка
[CC] ARM-None-EABI-GCC -MCPU = CORTEX-M3 -MTHAMB -G2 -WL, -MAP = STM32DUINO.map -o0 -wl, -gc -sections -lc: \ users \ dlankvel \ appdata \ roaming \ coocox \ coide \ configuration \ programdata \ stm32duino -wl, -tc: \ users \ dlankvel \ appdata \ roaming \ coocox \ coide \ configuration \ ProgramData \ STM32DUINO/ARM-GCC-LINK.ld -g -o stm32duino.эльф ..\ obj \ usb.о ..\ obj \ usb_regs.о ..\ obj \ cortexm3_macro.о ..\ obj \ c_only_startup_user.о ..\ obj \ usb_mem.о ..\ obj \ usb_init.о ..\ obj \ usb_int.о ..\ obj \ usb_descriptor.о ..\ obj \ usb_core.о ..\ obj \ usb_callbacks.о ..\ obj \ c_only_startup.о ..\ obj \ dfu.о ..\ obj \ hardware.о ..\ obj \ main.о
[CC] ..\ obj \ c_only_startup.o :(.isr_vector+0x0): множественное определение `g_pfnvectors '
[CC] ..\ obj \ c_only_startup_user.o :(.isr_vector+0x0): сначала определено здесь
[CC] ..\ obj \ c_only_startup.O: В функции `usbwakeup_irqhandler ':
[cc] c: \ users \ dlankvel \ coide \ workspace \ stm32duino-bootloader-master \ stm32f1 \ stm32_lib/c_only_startup.S: 108: множественное определение `default_handler '
[CC] ..\ obj \ c_only_startup_user.o: c: \ users \ dlankvel \ coide \ workspace \ stm32duino-bootloader-master \ stm32f1 \ stm32_lib/c_only_startup_user.S: 109: впервые определено здесь
[CC] ..\ obj \ c_only_startup_user.o :(.isr_vector+0x0): неопределенная ссылка на `_estack '
[CC] ..\ obj \ c_only_startup_user.o :(.isr_vector+0x8): неопределенная ссылка на `_magicrate '
[CC] ..\ obj \ c_only_startup.o :(.isr_vector+0x0): неопределенная ссылка на `_estack '
[cc] collect2.EXE: Ошибка: LD вернул 1 статус выхода

Сборка не удалась
Общее время: 3 секунды


С уважением и заранее спасибо.

Rogerclark
Чт, 09 июля 2015 г., 21:37
Вы пытаетесь построить загрузчик сборщика эскиза для запуска на плате.

Repo содержит содержит множество вещей, не только ядра для STM32F103, но и для F3 и F4, а также загрузчика, а также источники для всех инструментов, которые используются для загрузки

Если вы просто пытаетесь создать загрузчик, файл Make работает нормально (по крайней мере, в Windows).

Если вы не пытаетесь создать загрузчик, не добавляйте файлы загрузчика в свой проект.

Я думаю, что разные другие люди использовали Eclipse, чтобы построить ядро ​​и наброски E, G, Рик Кимбалл, вы могли бы попробовать PMING

Однако я боюсь, что я не могу поддержать затмение как IDE, так как весь репо предназначен только для работы с Arduino IDE

Данквел
Пт 10 июля 2015 г. 16:58
Спасибо за ответ, мистер Кларк.

Я просто пытаюсь создать загрузчик. Я скачал Zipfile из GitHub с SourceCode загрузчика, создал новый проект в Coide и добавил все файлы и каталоги из Zip вручную. Затем начал сборку и получил ошибку...

Я попробую это в IDE STM32 Arduino, посмотрите, не работает ли это для меня...

С уважением,

victor_pv
Пт 10 июля 2015 г., 18:10
Dlankvel написал:Спасибо за ответ, мистер Кларк.

Я просто пытаюсь создать загрузчик. Я скачал Zipfile из GitHub с SourceCode загрузчика, создал новый проект в Coide и добавил все файлы и каталоги из Zip вручную. Затем начал сборку и получил ошибку...

Я попробую это в IDE STM32 Arduino, посмотрите, не работает ли это для меня...

С уважением,

Rogerclark
Пт 10 июля 2015 г., 8:54 вечера
Если вы хотите просто создать загрузчик

Просто используйте файлы в отдельном STM32Duino-Bootloder Repo, а не в под папке в репозиторе arduino_stm32

Bootloader создан из Makefile, существует несколько целей сборки и несколько конфигураций
Поэтому, если вы хотите построить его с помощью Eclipse, вам нужно будет выяснить, как повторить, что делает файл Make.

Я не использую Eclipse так часто, поэтому я предлагаю вам опубликовать на форуме, связанном с затмением, и спросить их, как создать проект, который использует файл Make с несколькими целями сборки

Данквел
Пн 13 июля 2015 г. 10:54
>Мы не строим загрузчик с помощью Arduino IDE или любой другой IDE, но прямо с GCC в командной строке.

Проверять!! Я действительно мог бы построить загрузчик с CLI без каких -либо проблем :-)

Спасибо за помощь !

С уважением,

Данквел
Пн 13 июля 2015 г., 11:02
И в затмении он работает нормально из коробки. Я только что импортировал репозиторий в качестве нового проекта Makefile и установил команду сборки C/C ++, чтобы «сделать все», а затем создать проект без каких -либо дополнительных проблем.

Таким образом, моя главная проблема заключалась в том, что COIDE не имеет возможности к команде сборки вручную, как Eclipse..

Проблема решена..

Спасибо..

Rogerclark
Пн 13 июля 2015 г., 11:31
КСТАТИ.

Цель Makefile по умолчанию может либо ничего не делать, либо построить Maple Mini.

Если вы хотите построить другую цель, E.глин. Плата, у которой нет аппаратного обеспечения Maple USB, вам может потребоваться что -то изменить в своем проекте Eclipse, который имеет тот же эффект, что и указание цели сборки при запуске из командной строки

Валерия
Пт 08 января 2016 г., 8:57 вечера
Роджер, почему вы используете PC14 для кнопки по умолчанию?
PC14 - PC15 подключены к RTC OSC, и я хочу использовать RTC.

Я попытался сделать Generic-PC13 с измененным банком кнопок на порт и кнопкой PIN-код 9 (например, Maple Mini), но не работает. (Похоже, работа, светодиод мигает, но ПК не может распознать USB -устройство)
Я попытался сделать Generic-PC13 с настройками по умолчанию (кнопку на PC14) и сравнить результат с файлом bin из /binares, а мой полученный .Файл корзины был на 20 байтов меньше... Это мигает светодиод, но DFU не работает...

Может ли кто -нибудь сделать загрузчик для PC13_button_pb9?

#ELIF определял target_generic_f103_pc13_button_pb9

#define led_bank gpioc
#define led_pin 13
#define LED_ON_STATE 0

// кнопка (если у вас есть)

#define button_bank gpiob
#define button_pin 9
#define button_pressed_state 1

Валерия
Сб 09 января 2016 г., 9:33
Проблема была решена путем обновления бинутилов :-)
Я счастлив, он работает идеально!!!

Rogerclark
Сб 09 января 2016 г., 21:17
хорошо

Я не уверен, что вы имеете в виду в бинутиле, но пока вы исправили проблему, я думаю, это нормально.

Ахулл
Сб 09 января 2016 г., 23:46
Rogerclark написал:хорошо

Я не уверен, что вы имеете в виду в бинутиле, но пока вы исправили проблему, я думаю, это нормально.

ZMEMW16
Солнце 10 января 2016 г. 12:02
binutils 2.25-5 i386 GNU assembler, linker and binary utilities binutils-avr 2.24+Atmel3.4.4-1 i386 Binary utilities supporting Atmel's AVR targets binutils-multiarch 2.25-5 i386 Binary utilities that support multi-arch targets

Rogerclark
Солнце 10 января 2016 г. 9:29 утра
ХОРОШО.

Я только когда -либо строил загрузчик в Windows, и у меня не было никаких проблем.

Я просто положил на свой путь компилятора Arduino GCC Arm, и все, казалось, работало нормально.

ZMEMW16
Солнце 10 января 2016 12:03
Как обычно, для меня, где -то, когда я видел предупреждение, говорящее не добавлять каталог в системный путь.

Я думаю, что это были связаны с Windows и Eclipse/GDB/OpenOCD.

SRP

Валерия
Солнце 10 января 2016 г., 19:06
Ахулл написал:Rogerclark написал:хорошо

Я не уверен, что вы имеете в виду в бинутиле, но пока вы исправили проблему, я думаю, это нормально.

ZMEMW16
Пн 11 января 2016 г. 12:51
Если вы делаете сборку загрузчика для цели STM32F1, я не понимаю, почему бинутилы «системы» будут
Влиять на цель STM32F1?

Я идиот, эльф, чтобы конвертировать?

Стивен

Валерия
Пн 11 января 2016 г. 14:34
Я не знаю.
Я просто искал зависимость, и сначала я попробовал "Sudo Apt-Get Install Binutils".
Так что это помогло.
Может это: Binutils-Arm-None-Eabi
Ассемблер GNU, линкеры и двоичные утилиты для процессоров ARM Cortex-A/R/M

ZMEMW16
Пн 11 января 2016 г., 17:44
У меня нет ничего «рука», хотя и кажется странным, а затем я использую Arduino с STM32, и это будет где -то под ./.Arduino15

Стивен

evildave_666
Солнце 23 октября 2016 г. 2:22
Я сталкиваюсь с проблемами, скомпилирующим загрузчик на Ubuntu xenial (16.04 LTS). В конечном итоге за то, что сделал изображение PB12 для черной таблетки, но я еще не получил так далеко, я даже не могу получить рабочее изображение для существующей доски.

Перекомпиляция синей таблетки PC13 приводит к изображению, которое, когда вспыхнуло, выглядит нормально до такой степени, что он выполняет последовательность фаст-пластины при сбросе, но никогда не перечисляется на USB. (Правление, конечно, уже изменило значение резистора)

Я использую стандартный ксениал Arm-None-Eabi Crosscompile Chchain инструментария.

Rogerclark
Солнце 23 октября 2016 г., 3:12
Какую версию GCC вы используете.

Никогда не версии e.глин. 5.x имеет более жесткую оптимизацию кода в стандартной комплектации, а код не работает.

Смотрите readme в GitHub

evildave_666
Солнце 23 октября 2016 г. 5:48 утра
Я использовал стандартный ксениал-поставлен 4.9.3. Спасибо, я смог сделать бинарник Bluepill, который работал с использованием 4.8 Arduino CrossCompiler Toolchain. Надеюсь, версия Blackpill тоже будет работать.

Редактировать: Blackpill работает:
#elif defined TARGET_GENERIC_F103_PB12 // Blackpill #define LED_BANK GPIOB #define LED_PIN 12 #define LED_ON_STATE 0

Fredbox
Вт 25 октября 2016 г. 1:29
Я добавил инструкции по созданию загрузчиков с помощью Linux Mint 17.3 и Arduino 1.6.12 с STM32duino в загрузчик вики. Необходимый инструмент уже включен в стандартную установку STM32Duino.

evildave_666
Вт 25 октября 2016 г. 1:49
Меня как-то обеспокоен, что произойдет, когда набор инструментов, поставленных в Ардуно.9 или выше, шаг уже произошел для AVR в 1.6.10.

Поддерживать несколько ручных инструментов-это боль для поддержания, и 4.8 уже не связан вверх по течению.

Rogerclark
Вт 25 октября 2016 г., 6:05
Старая GCC ARM доступна, но на самом деле, если есть ошибка, ее следует исправить.

У меня просто нет времени, чтобы сделать это в данный момент, тем более что нет никакой насущной необходимости делать это, если невозможно скачать GCC 4.8.3 (что, я думаю, будет доступно еще на несколько лет)

Стивестронг
Вт 25 октября 2016 г. 8:43
Кто -нибудь попробовал 5.1.x или 4.9.y GCC с использованием оптимизации "-O2", чтобы увидеть, генерирует ли он хороший код?

Rogerclark
Вт 25 октября 2016 г. 9:25 утра
Нет. Но я попробую.

Rogerclark
Вт 25 октября 2016 г. 10:29
Нет.

-O2 с 4.9.3 не работает

Первоначально он перечисляется как устройство Libusb, но не будет загружать.

Если я сбросил это так же, как IDE собирается загрузить, то он загружается, но, похоже, не прыгает на код эскиза

Кроме того, размер кода с использованием -O2 на 500 байтов больше. Это было бы нормально, если бы это сработало, так как у нас почти 1K свободно, но, поскольку это не работает, нет смысла использовать эту опцию, и код действительно должен быть отладкой, чтобы найти проблему (вероятно, VAR или регистры должны быть как нестабильный

Стивестронг
Вт 25 октября 2016 г. 12:07
Просто идея...
Можно ли составить источники "usb_lib" в либерацию с 4.8.3, а затем используйте эту предварительно скомпилированную LIB с другими источниками, чтобы сгенерировать новый код загрузчика с 4.9.x (или новее)?
Таким образом, можно определить, возникает ли новый компилятор в LIB или других частях кода.

П.С. Теперь, когда я был в последнее время вовлечен в проблему с USB -основным, я вижу пару мест, где можно оптимизировать/улучшить код.

Rogerclark
Вт 25 октября 2016 г., 8:23 вечера
Запуск 2 разных версий компилятора в одном и том же файле Make Shile сделает его намного сложнее, так как вам нужно было бы указать пути для каждого из них

Действительно, решение - просто исправить ошибку.


КСТАТИ.

Как 4.9.3 ломает загрузчик, я подозреваю, что он сильно перерыл холодный, если другой код, E.глин. эскизы и, возможно, части ядра и т. Д

Я попробовал обновить свой главный компилятор Arduino до 5.x (как часть некоторых вещей NRF51, которые я делал), но я помню, что ядро ​​даже не компилировалось.

Я подозреваю Ардуино.У CC, возможно, будут похожие проблемы со своими досками Arduino Arm, поэтому они, возможно, не захотят обновлять компилятор тоже

Rogerclark
Вт 25 октября 2016 г., 22:13
Еще одна мысль.

Libusb, который использует загрузчик, датируется 2008 год.

Я знаю, что есть более поздние версии этого, которые могут иметь исправления ошибок, но я не нашел полного набора файлов Libusb для STM32F103

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

Стивестронг
Ср 26 октября 2016 г. 13:08
Я думаю этот пакет Есть библиотека устройств класса DFU от ноября 2015 года.
Я не знаю, насколько это завершено.

РЕДАКТИРОВАТЬ
Я также нашел здесь Устройство FS LIB 4.0.0, что является наиболее близким к файлам ядра загрузчика. Я сделал быстрое сравнение, помимо Typedefs есть незначительные изменения, которые я не знаю, как они могут влиять на функциональность.
И, кстати, у них до сих пор нет маленьких эндианских вещей, от января 2013 года.

Rogerclark
Чт 10 ноября 2016 г., 11:28 вечера
Проблема была исправлена ​​Филиппом Люк

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


КСТАТИ.

Может ли кто -нибудь вспомнить, кто написал модифицированную версию загрузчика, которая использовала NVRAM, чтобы определить, запускается ли загрузчик в ответ на команду загрузки с IDE или загрузился от Cold ?

Я думаю, что было бы хорошо внедрить это изменение в загрузчику, но я не могу вспомнить, кто его написал (я проверю вилки на случай, если кто -то растет и изменит его)

Джри
Чт 12 января 2017 г. 1:26
Это сработало для нас:
https: // github.com/j1rie/maple-bootload ... 416dd0e0d6