(Решено) CH-340 USB в серийную загрузку

Jbforrer
Пн 22 февраля 2016 г., 7:04
Geetings,

ОБНОВЛЯТЬ: ----
Похоже, проблема с драйвером Linux.
Серийная загрузка работала нормально на моей коробке XP, но не удалась на Linux.
Проводится дискуссия об этих китайских arduino щитах на базе CH340
проблема. Решение состоит в том, чтобы установить другой драйвер, поставляемый производителем.
Они поставляют драйверы для Windows, Linux и OSX.
Я скачал драйвер Linux, построил драйвер и установил его.
Серийный скачать теперь отлично работает с новым драйвером.
----

Надеюсь, кто -то сможет помочь. Это касается последовательного метода загрузки, который не удается с CH-340.

У меня есть плата STM32F103VET6, которая включает в себя удобную, борту CH-340 USB в серийный чип.
По какой -то причине серийный загрузчик STM32Duino, кажется, не любит этот чип. См. Вывод консоли ниже.

При дальнейшем расследовании у Правления есть прыгуны, чтобы отключить RX/TX от чипа CH-340 и позволить HARDWIRINE в заменительном USB в серийный конвертор.
Я заменил кабель на основе PL-2302 и обнаружил, что последовательная загрузка хорошая и надежная.

Странно то, что после загрузки хорошего кода можно изменить перемычки назад, и CH340 просто передает данные вперед и назад через последовательный интерфейс.

Похоже, есть ли проблема рукопожатия во время загрузки, когда используется чип CH-340? Или что -то с моей установкой IDE?

заранее спасибо.
JBF.


---Консольная отладка следует ниже------------

ST32MF103VET6 с CH-340 USB-to-Serial
-----------------------------------------------------------------
Не удалось прочитать ACK Byte <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
Неожиданный ответ с устройства на команде 0x01 <<<<<<<<<<<<<<<
STM32FLASH ARDUINO_STM32_0.9

http: // GitHub.com/rogerclarkmelbourne/arduino_stm32

Использование анализатора: необработанный двоичный файл
Интерфейс serial_posix: 230400 8e1

ST32MF103VET6 с PL-2302 USB-to-Serial
------------------------------------------------------------------
Использование анализатора: необработанный двоичный файл
Интерфейс serial_posix: 230400 8e1
Версия: 0x22
Вариант 1: 0x00
Вариант 2: 0x00
Идентификатор устройства: 0x0414 (высокая плотность)
- ОЗУ: 64KIB (512b зарезервировано загрузчиком)
- Flash: 512Kib (размер сектора: 2x2048)
- Опция ОЗУ: 16B
- Системная ОЗУ: 2KIB
Напишите в память
Стирание памяти
Написал адрес 0x08002034 (100.00%) сделано.

Начало выполнения по адресу 0x08000000... сделанный.

Rogerclark
Пн 22 февраля 2016 г., 9:20 утра
Вы пробовали флэш -загрузчик STM «демонстратор» (я, их серийный флэш -загрузчик) ?

Вы также можете попытаться снизить скорость, и если это не удается, есть версия Python, но в обоих этих случаях вам придется отредактировать файл BAT серийного загрузчика (при условии, что вы запускаете Windows)

КСТАТИ. У нас были различные проблемы с версией PC EXE, и мне пришлось сделать несколько исправлений ошибок, но не на самом деле каких -либо серьезных изменений кода.
К сожалению, исходные коды, кажется, не поддерживаются первоначальным автором тоже.

Mrburnette
Пн 22 февраля 2016 г., 13:31
Jbforrer написал: <...>
Странно то, что после загрузки хорошего кода можно изменить перемычки назад, и CH340 просто передает данные вперед и назад через последовательный интерфейс.

Похоже, есть ли проблема рукопожатия во время загрузки, когда используется чип CH-340? Или что -то с моей установкой IDE?

заранее спасибо.
JBF.

Jbforrer
Пн 22 февраля 2016 г., 17:31
Спасибо за предложения.

Кстати, доска, описанная @Madias в этом посте:
http: // www.STM32duino.com/viewtopic.PHP?F = 28&t = 490
Мне нужны почти все эти дополнительные выводы для ввода/вывода для моего проекта, больше, чем предлагает клоны с низким уровнем листьев.

1) Я попробовал трюк «сбросить толкание» перед загрузкой (знаком с процедурой в моих домашних проектах Atmel Arduino). Не помог.

2) Программа «STM FlashLoader Demo» действительно распознает CH-340 и позволяет вспыхнуть. Я пропустил загрузчик в качестве примера. Работает нормально.

3) Загрузки загрузчика через USB работает нормально, так же как и ST-Link, также BMP работает нормально.

Для меня это не на самом деле шоу-Stopper, так как есть несколько рабочих методов загрузки, мне просто любопытно, почему есть эта проблема с CH340, а не с некоторыми другими, например, с USB PL-2303 для серийного интерфейса. Я могу сделать, как предлагает Рэй, и использовать встроенный CH340 для серийного ввода-вывода для моего приложения, но не для серийной загрузки.

Цените проблемы с кодом загрузки, как упомянуто Roger... вероятно, не стоит тратить время на это.

Большое спасибо за все усилия.
JBF.

Rogerclark
Пн 22 февраля 2016 г., 20:07
Я думаю, что STMS Flash Loader также имеет версию CLI, так что вы также можете просто изменить серийный файл BAT загрузки, чтобы использовать CLI вместо этого.

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

Если у вас есть более одной платы STM32, вы можете пропустить зонд Black Magic на другую плату и использовать его для загрузки SWD.

ZMEMW16
Пн 22 февраля 2016 г., 8:52 вечера
Jbforrer написал: Кстати, доска, описанная @Madias в этом посте:
http: // www.STM32duino.com/viewtopic.PHP?F = 28&t = 490

Jbforrer
Вт 23 февраля 2016 г., 11:30 вечера
Пожалуйста, смотрите обновленную информацию о первом сообщении, касающемся решения.

Спасибо,
JBF.

Rogerclark
Вт 23 февраля 2016 г., 11:51 вечера
Спасибо

Ахулл
Ср 24 февраля 2016 г. 16:14
Jbforrer написал:Пожалуйста, смотрите обновленную информацию о первом сообщении, касающемся решения.

Спасибо,
JBF.

Mrburnette
Ср 24 февраля 2016 г. 16:58
Ахулл написал: У вас есть ссылка на обновленный драйвер Linux?

Sheepdoll
Ср 24 февраля 2016 г., 17:47
Интересная нить.

Вчера вечером я был в местном Makerspace и взял дешевый клон Arduino, который они продавали. У меня все еще есть yousemite на моем ноутбуке. Потратил большую часть времени на установку драйвера. Первая доска не удалось загрузить мигание, вторая работала. Я в основном хотел горелку Arduino. Мне также было любопытно об этом чипе моста. Я могу вытащить части от клона, если CH-340 работает. (Вполне вероятно, что клон отсутствует загрузчик.)

Mrburnette
Ср 24 февраля 2016 г., 18:27
Sheepdoll написал:Интересная нить.
<...>
Я могу вытащить части от клона, если CH-340 работает. (Вполне вероятно, что клон отсутствует загрузчик.)

Jbforrer
Чт 25 февраля 2016 г., 12:49
Как указано @mrburnette, водители можно загрузить с сайта производителя:
http: // www.wch.CN/Download/CH341SER_EXE.HTML

Детали на китайском языке. Пакет Linux содержит исходный код драйвера (.CPP) и Makefile.
Будучи Linux, нужно создать загружаемый модуль, который будет работать с вашим конкретным ядром.

Я понимаю, что у некоторых дистрибутов в Linux уже есть правильный драйвер. Подключите устройство к USB -порту и проверьте список модулей Kernal, i.эн.,
>$ lsmod | Греп USBSerial.
Если вы обнаружите, что «CH341» связан с «USBERIAL», это станет проблемой с USB-серии CH-340 и STM32DUINO Serial Download.

К сожалению, все еще кажется сложным, чтобы правильно работать. Я не эксперт Linux, так что ваш пробег может варьироваться. Это то, что я нашел:
В моей системе «сделать» не удастся из -за несовместимых «Printk», посыпанных через источник водителя. Думаю, они служат для целей отладки.
Комментируя все затронутые линии "Printk", удалось построить водителя, заканчивая "CH34X.ko ".

Хотя Makefile позволяет загружать/разгрузить новый драйвер, сначала нужно разгрузить старый драйвер, «CH341», иначе он столкнется с новым, "CH34X". Есть различные способы очистить это, но будьте очень осторожны, как вы продолжаете.

Модули моих драйверов ядра находятся в/lib/modules/3.13.0-24-Генерика/ядра/драйверы/USB/Serial ... (У вас, вероятно, будет другое ядро).
"CH341.KO "был переименован" CH341.носитель.Старый », затем новый водитель скопировал и назван как« CH341.ko ".

Подключение устройства к USB -порту автоматически загружает правильные драйверы ядра. Проверьте действия с «LSMOD», как показано ниже.
----------------------------------
$ lsmod | Grep CH34X
CH34X 17618 0
USBSerial 45014 1 CH34X
-----------------------------------

Пример результатов серийной загрузки:
Sketch использует 23 872 байта (4%) пространства для хранения программы. Максимум составляет 524 288 байтов.
Глобальные переменные используют 2760 байт динамической памяти.
STM32FLASH ARDUINO_STM32_0.9

http: // GitHub.com/rogerclarkmelbourne/arduino_stm32

Использование анализатора: необработанный двоичный файл
Интерфейс serial_posix: 230400 8e1
Версия: 0x22
Вариант 1: 0x00
Вариант 2: 0x00
Идентификатор устройства: 0x0414 (высокая плотность)
- ОЗУ: 64KIB (512b зарезервировано загрузчиком)
- Flash: 512Kib (размер сектора: 2x2048)
- Опция ОЗУ: 16B
- Системная ОЗУ: 2KIB
Напишите в память
Стирание памяти
Написал адрес 0x08005D40 (100.00%) сделано.

Начало выполнения по адресу 0x08000000... сделанный.
------------------------------------------------------------------


Надеюсь, это поможет.
С наилучшими пожеланиями.
JBF.

ZMEMW16
Чт 25 февраля 2016 г. 1:20 утра
не вызовы printk, контролируемые записи номера где -то под /proc?

С тех пор, как я играл с кодом ядра, когда интерфейс PCI получил массовое изменение 2.2/2.4/2.6?? Эоны назад - мне пришлось
Обновить/переписать драйверы устройств PCI. О'Рейли переиздал свой библейский томе на эту тему, уверен, что они оба на моей книжной полке. с тех пор обновляется. 3 -й 2000, вероятно, нет, я к тому времени перешел к другому проекту.

Итак, я погуглил «ядра Linux, управляющий выводом printk»

первый 2
http: // elinux.org/kernel_debugging_tips
http: // elinux.org/debugging_by_printing
И в распаде поиска есть в нем /proc/sys/kernel/printk
уход
http: // man7.org/linux/man-страницы/man2/syslog.2.HTML

Стивен

клавиатура
Пт, 02 июня 2017 г., 8:27 вечера
Я полагаю, что у меня такая же проблема после того, как я попробовал много разных комбинаций (булавки TX/RX, PA9/10, кнопку сброса, инвертировать TX/RX, которые не должны быть перевернуты, 3.3 через USB TTL -адаптер, 3.3V через HID USB без HID USB, Connected и др.

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

Постоянный результат проблемы: Sketch uses 8828 bytes (13%) of program storage space. Maximum is 65536 bytes. Global variables use 1984 bytes of dynamic memory. Failed to init device. stm32flash Arduino_STM32_0.9 http://github.com/rogerclarkmelbourne/arduino_stm32 Using Parser : Raw BINARY Interface serial_posix: 230400 8E1 An error occurred while uploading the sketch

клавиатура
Пт, 02 июня 2017 г. 9:59 вечера
Быстрое обновление.

Я искал драйвер CH341: ls -ls total 44 36 -rw-r--r-- 1 root root 35398 Sep 12 2015 ch34x.c 4 -rw-r--r-- 1 root root 331 Aug 12 2015 Makefile 4 -rw-r--r-- 1 root root 531 Sep 12 2015 readme.txt

клавиатура
SAT 03 июня 2017 г. 3:43
Я нашел STM32FLASH Билет № 81 это может быть полезно.

Похоже, это связан с Linux. Проблема была на той же машине с голой металлической окна, Windows под виртуальной машиной Linux и Linux Fine с платой STM32 в Windows и Arduino, а затем выбрали проблемы STM32, связанные в Linux. Похоже, проблема была связана с даже паритетом, где Предложение применить патч ядра Это, возможно, не дошло до ядра Mainline Linux. А OP для STM32Flash Ticket #81 сообщил Предложение применить патч ядра Решить проблему использования STM32Flash в Linux.

Одна заметная разница Ошибка OP для билета STM32Flash #81 указано Interface serial_posix: 57600 8E1

клавиатура
SAT 03 июня 2017 г., 18:28
Мне удалось проверить Даже патч паритета ядра отметил в STM32FLASH Билет № 81. А Даже паритет ядра паритета Не применимо к самым последним источникам CH340/1 от чипсов. Я взял источник CH340 из ядра и пробежал Даже паритет паритета как сухой пробег сначала и Даже паритет паритета применил никаких проблем. Я применил патч, скомпилированный, разгруженный оригинальный драйвер ядра CH340, переместил драйвер ядра Ordigianl из дерева модулей ядра, поместил новый исполненный драйвер CH340 в дерево ядра и загрузил новый драйвер CH340.

К сожалению, та же проблема Sketch uses 8828 bytes (13%) of program storage space. Maximum is 65536 bytes. Global variables use 1984 bytes of dynamic memory. Failed to init device. stm32flash Arduino_STM32_0.9 http://github.com/rogerclarkmelbourne/arduino_stm32 Using Parser : Raw BINARY Interface serial_posix: 230400 8E1 An error occurred while uploading the sketch