Есть ли проблема, выполняющая свежую установку под Linux?

KH123
Пн, 02 апреля 2018 13:51
Придется признать, я совершенно новичок в Arduino для STM32.

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

- Я изменил свою плату Bluepill с 1.Резистор 5K на R10.

- Проверил USB -разъем на доске. (Разрежьте USB -кабель и измеренный впадину до R9 и R10 на плате. ~ 0.6 Ом. Так что должно быть в порядке!)

- Беспоколо с этим постом здесь http: // stm32duino.com/viewtopic.PHP?T = 2755 У меня потребовалось некоторое время, чтобы понять, что это не PB14, но PC14!
(Но это разобралось, установило кнопку и резистор, и теперь, похоже, работают режимы переключения.)

У меня здесь машина с двойной загрузкой. Linux Mint 18.2 64 -битный XFCE и Win 7 64 бит. Вторая «устаревшая» машина с Linux Mint 18.2 64-битный xfce на Stand-by. Arduino on All - 1.8.5. Bootloader Generic_boot20_pc13.мусорная корзина с FTDI на BluePill отсюда https: // github.com/rogerclarkmelbourne/ ... r/двоичные файлы

Установка на обоих машинах Linux:

- Диспетчер доски: Установить пакет Due, скачать arduino_stm32-master.Zip и распаковать до ~/arduino/hardware/
Изменить на ~/arduino/hardware/arduino_stm32-master/tools/linux64/и запустить установку.SH от терминала как корень. Перезагрузить!

Установка на Win 7:
- Диспетчер доски: Установить пакет Due, скачать arduino_stm32-master.Zip и распаковать до ~/arduino/hardware/
Изменено на ~/arduino/hardware/arduino_stm32-master/drivers/win/and undation_drivers.летучая мышь из терминала в качестве администратора. Перезагрузить.
Проверка Win 7 Device Manager, как показано в видео на YouTube https: // www.YouTube.com/watch?v = 0jdjp3tqujy

Поведение под Win 7 с наброском Blink:

Нет проблем переключения режимов при загрузке. Только иногда я вижу сообщение "STM32 Arduino Error Resetting после загрузки: usb_reset не может
сбросить устройство, ошибка выиграть: «Но, как я узнал из поиска форума, это обычное и может быть проигнорировано.

Поведение под Linux с наброском Blink:

Режимы переключения при загрузке не надежны. В большинстве случаев не работает.
dfu-util 0.8 dfu-util: Invalid DFU suffix signature dfu-util: A valid DFU suffix will be required in a future dfu-util release!!! Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc. Copyright 2010-2014 Tormod Volden and Stefan Schmidt This program is Free Software and has ABSOLUTELY NO WARRANTY Please report bugs to [email protected] dfu-util: Cannot open DFU device 1eaf:0003 dfu-util: No DFU capable USB device available Waiting for /dev/ttyACM0 serial...Done

Сжимать
Пн, 02 апреля 2018 г., 20:00
Это не что -то новое для меня....
Всегда у меня есть проблемы с загрузкой под Linux через USB. Иногда работает, но большую часть времени терпит неудачу.
Иногда изменение значения тайм-аута (аргумент о перегрузке в сценарии Maple_upload помогает, но не на всех машинах (мой ноутбук имеет более высокий уровень успеха). Он работает намного лучше, если вы нажмете кнопку сброса в правильное время перед загрузкой.
Наконец я устал от этой проблемы, и я использую только Stlink....

PS: я предполагаю, что вы изменили USB -резистор с правильным значением.

KH123
Пн, 02 апреля 2018 г., 20:53
[Сжимать - Пн, 02 апреля 2018 г., 8:00 вечера] - PS: я предполагаю, что вы изменили USB -резистор с правильным значением.
[KH123 - Пн, 02 апреля 2018 г. 13:51] - - Я изменил свою плату Bluepill с 1.Резистор 5K на R10.
Да, я сделал.
[Сжимать - Пн, 02 апреля 2018 г., 8:00 вечера] - Наконец я устал от этой проблемы, и я использую только Stlink....
Но я думаю, это не идея проекта.
Может быть проблема с временем (я изменил значение в скрипте Maple_upload) или что -то в этом роде с правилами UDEV.

Это доска, у меня есть здесь.

Изображение

Нажатие сброса и сразу после кнопки для постоянного режима работает загрузка.

Но мне не нужно делать это под победой 7. Там эти дополнительные действия (нажатия кнопок) не требуются.

Сжимать
Пн, 02 апреля 2018 г., 21:15
Я согласен с вами, что система AutoReset-Upload должна работать, но проблема здесь долгое время. Я заметил, что иногда программа загрузки-резета сбрасывает MCU, но USB больше не инициализируется. Когда это произойдет единственный способ снова перечислить USB на кнопку сброса.
Я не знаю, есть ли проблема в программе загрузки-резита внутри каталога инструментов или потому, что система UDEV/USB Linux работает по-разному. Некоторое время назад я попытался изменить некоторые аспекты загрузки-ресторана без успеха. Я также попробовал альтернативные методы сброса USB, но результат был более или менее таким же.

Сжимать
Пн, 02 апреля 2018 11:08
Я сделал несколько тестов после последних потоков этой проблемы. Кажется, что почти такая же проблема существует в macOS.
Небольшой патч в загрузчике от Hanyazou значительно улучшает уровень успеха процесса загрузки Autoresetet. Вот вилка:
https: // github.com/hanyazou/stm32duino- ... et_timeout

Я прикрепил «свежий» двоичный бинар для загрузки для Bluepill. Пожалуйста, попробуйте и сообщите о своих результатах.
Пса. Не менять ничего в скрипте upload_maple, я использую последнюю версию 2018.4.2

KH123
Вт, 03 апреля 2018 г., 6:22
Спасибо, я попробую позже и сообщу.

Один вопрос. На данный момент у меня есть только эта доска Bluepill на моем столе. Но больше в пути (Aliexpress).

Существует ли та же проблема с Maple Mini?

О себе. Я инженер -механик в отставке, поэтому мои способности в области электроники ограничены. Я сделал небольшие проекты для своего хобби (RC-моделирования) с Arduinos, такими как измерение RPM Meter или Rudder с ADXL345 или центром тяжести с HX711. Но я знаю, что 8 -бит становится немного устаревшим, поэтому я смотрю в 32 -битный мир. Здесь есть несколько подростков, которые работают нормально (проекты, выполненные другими), а также заказали несколько ESP8266

KH123
Вт, 03 апреля 2018 г., 10:27
Загрузил этот загрузчик.

Linux - такой же, как и раньше. Иногда изменение режима. в большинстве случаев нет.

Win7 - изменение режима всегда работает.

Сжимать
Вторник 03 апреля 2018 г., 20:33
Я провожу некоторое время с загрузчиком, используя различные программы.
Я использую команду "Watch -n 1 lsusb", чтобы увидеть, когда USB появляется как DFU/серийное устройство. После сброса аппаратного обеспечения кнопкой всегда перечислены DFU и после 1-1.5 секунд TTYACM0 появляется.
Проблема в том, что AutoReset всегда не успешен. Например, я загружаю простую программу Blink, иногда, если я пытаюсь загрузить новую программу, процессор не сброшен, а светодиод остается либо включенным или выключенным, нет сброса, но программа замораживается. Отказ чаще, когда есть серийная деятельность USB.

PS: Autoreset работает правильно на кленовой доске. Maple имеет правильную схему USB отключения, приводимой в движение PB9 до двух транзисторов.
Посмотрите схему: https: // github.com/leaflabs/maplemini/b ... Лемини.PDF

KH123
Ср. 04, 2018, 6:32
[Сжимать - Вторник 03 апреля 2018 г. 20:33] - PS: Autoreset работает правильно на кленовой доске. Maple имеет правильную схему USB отключения, приводимой в движение PB9 до двух транзисторов.
Посмотрите схему: https: // github.com/leaflabs/maplemini/b ... Лемини.PDF
Спасибо, Сламмер, это был ответ, я надеялся. Кленовая доска идет. Где -то в Die Indian Ocean на каком -то контейнерном корабле ....

Кроме того, вчера вечером сделали несколько коротких тестов с «подхичением» на USB -кабеле, когда пытались сделать загрузку.

Первые 4 картинки не выполняют загрузки, последние 3 успешных загрузки. Я думаю, снимки очень ясны и могут быть базой, чтобы прояснить, что там происходит ...

KH123
Пт 06 апреля 2018 г. 15:31
Получил свой первый Maple Mini сегодня.

Изображение

Под Win7 без проблем. Автоматически переключение режимов при загрузке.

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

:рулон:

Сжимать
Пт 06 апреля 2018 г., 21:28
Я уверен, что программа для загрузки не очень хорошо работает в Linux. Кажется, это не отправляет «магическую последовательность» (импульсы RTS/DTR и «1 -й» строка), может быть, проблема с новыми ядрами или что -то еще или что -то еще.
Я пытаюсь выделить эту проблему, у меня есть открытая консоль с "Watch -n 1 lsusb", чтобы контролировать состояние USB, в другой консоли я просто отправляю команду "upload -reset /dev /ttyacm0". Bluepill загружен простой программой мигания.
После жесткого сброса или Пайтона, в первый раз, почти всегда работал на загрузке правильно, но после 2-3 раза терпит неудачу, а плата заморожена (светодиод остается либо включенным или выключенным)

Сжимать
SAT 07 апреля 2018 8:24
Я провожу много времени, чтобы отлаживать эту проблему, и внес некоторые изменения в загрузку-резит.c Время сигналов DTR/RTS показано в следующей диаграмме (как я пытался понять из кода загрузки-резита и из кода обнаружения USB сброса в ядре):
// _________________________ // DTR XXXX|__| |______________________________________ // _____________________________________ // RTS XXXX|_______________| |_____________ // ^ ^ ^ ^ ^ ^ ^ // | | Delay | Delay | Delay | Delay | | // | Raise DTR Raise RTS Drop DTR Send 1EAF Drop RTS Close Serial // Open (1) (2)

KH123
SAT 07 апреля 2018 г. 15:51
Привет, Сламмер.

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

Но позвольте мне опубликовать мой последний статус с Bluepill и Maple Mini первым, пожалуйста.

Это содержание моего/и т. Д./Удев/Правила.D/45-Maple.правила на данный момент
ATTRS{idProduct}=="1001", ATTRS{idVendor}=="0110", MODE="664", GROUP="plugdev" ATTRS{idProduct}=="1002", ATTRS{idVendor}=="0110", MODE="664", GROUP="plugdev" ATTRS{idProduct}=="0003", ATTRS{idVendor}=="1eaf", MODE="664", GROUP="plugdev" SYMLINK+="maple", ENV{ID_MM_DEVICE_IGNORE}="1" ATTRS{idProduct}=="0004", ATTRS{idVendor}=="1eaf", MODE="664", GROUP="plugdev" SYMLINK+="maple", ENV{ID_MM_DEVICE_IGNORE}="1" ATTRS{idVendor}=="1eaf", ATTRS{idProduct}=="0004", ENV{ID_MM_DEVICE_IGNORE}="1" ATTRS{idVendor}=="1eaf", ATTRS{idProduct}=="0004", ENV{MTP_NO_PROBE}="1" SUBSYSTEMS=="usb", ATTRS{idVendor}=="1eaf", ATTRS{idProduct}=="0004", MODE:="0664" KERNEL=="ttyACM*", ATTRS{idVendor}=="1eaf", ATTRS{idProduct}=="0004", MODE:="0664"

Сжимать
SAT 07 апреля 2018 г., 16:08
Maple_upload вызывает программу upload-reset, чтобы отправить команду сброса на целевую плату, для функции AutoReset.

Замените программу загрузки-резита в каталоге инструментов (переименование существующего файла на загрузку-резит.оригинал, например) с привязанностью. Измените также время задержки в программе Maple_upload с 750 мсек на 1200 мсек (аргумент roupload-reset). Отключите также (если включено в вашей системе) Modemmanager. Для меня показатель успеха автоматического сброса лучше, чем 9/10. У меня есть некоторые сбои, когда программа на доске интенсивно использует серийный USB, но обычно работает (я думаю, что обнаружение сброса с помощью USB в ядре не очень надежно, но это не главная проблема).
Я думаю, что проблема с Linux связана с различным временем команд ввода -вывода в последовательный порт.
PS: Ваши правила - обходной путь для Modemmanager и можно использовать их.

KH123
SAT 07 апреля 2018 г., 18:43
Спасибо за совет. Постараюсь и сообщить позже.

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

Fredbox
SAT 07 апреля 2018 г., 19:08
Это также может быть что -то в вашей программе, что приводит к выходу из строя.
Простой набросок мигания с использованием задержки обычно можно загрузить 10 раз под строкой без нажатия сброса или использования режима вечного загрузчика.

Вот вариация мигания, которое использует прерывание Systick. Я могу загрузить с помощью загрузчика один раз. После этого я должен нажимать сброс каждый раз перед загрузкой. Синяя таблетка и Maple Mini ведут одинаково. Это, вероятно, какая -то простая ошибка с моей стороны. /* * blink using the systick interrupt */ #define LED_RATE 500 // milliseconds; void setup() { pinMode(LED_BUILTIN, OUTPUT); systick_attach_callback(&blink_led_systick); } void loop() { // nothing to do - blink is handled by systick } void blink_led(void) { static uint8_t led_state = 0; digitalWrite(LED_BUILTIN, led_state); led_state = 1 - led_state; } void blink_led_systick(void) { // this is called 1000 times per second static volatile uint32_t counter = 0; counter++; if (counter >= LED_RATE) { counter = 0; blink_led(); } }

KH123
Солнце 8 апреля 2018 г., 11:00 утра
@Slammer.

Распакованный "rupload-reset" (10.4K) и заменил его в ~/arduino/ardware/arduino_stm32-master/tools/linux64/
Оригинальный "загрузка-резит" 7.9k здесь.
Но извините, теперь успех.

Что работает здесь с обеими версиями - сбросом, а затем загрузите.