собственный кленовый клон, заставляющий меня с ума

Макбет
Пт 17 июня 2016 г., 13:35
Привет,
После прочтения 100 сообщений здесь я решил опубликовать свой собственный вопрос...

Я расположил 3 разных кленовых-клона-PCBS. Первые две доски запущены и работают. Но № 3 не сводит меня с ума, и я не могу найти ошибку.

Моя обычная процедура после пайки:

1) Flash Bootloader Generic_boot20_pa1.корзин с
const byte ledPin=PB1; boolean led; void setup() { pinMode(ledPin, OUTPUT); // delay(1000); } void loop() { long s; int c=0; long d; bool broken=false; while(!broken) { c++; s=millis(); Serial.print("X"); d=millis()-s; if (d >= 50) { broken=true; } // delay(100); } digitalWrite(ledPin,HIGH); while(1) { Serial.println(c); delay(500); } }

Ахулл
Пт 17 июня 2016 г. 15:18
У вас есть хрустальный генератор на доске? Осциллятор действительно делает что -нибудь?

На первый взгляд, похоже, что вы подключитесь и загружаете код OK, так что после загрузки кода происходит что-то странное, так что, возможно, внешний генератор не работает или не работает надежно, или штифты генератора повторно назначенный... или что -то вытаскивается, когда выписки распределяются... Какой именно код вы загружаете? * Точно ли * такая же работа кода составлена ​​* точно так же на другой плате .. трудно отлаживать на основе предоставленной ограниченной информации. Как у вас есть boot0 и boot1 с перемычки? Вы правильно прошивали Bootloader2? Вы используете загрузчик?

Олли
Пт 17 июня 2016 г. 15:24
Моя рекомендация состоит в том, чтобы использовать бесплатный Embitz IDE вместе с устройством ST-Link для отладки SWD.

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

Ура, Олли

Mrburnette
Пт 17 июня 2016 г., 19:19
Ахулл написал:У вас есть хрустальный генератор на доске? Осциллятор действительно делает что -нибудь?
<...>

Rogerclark
Пт 17 июня 2016 г. 22:11
Были другие люди, сообщившие о подобных проблемах, но никто, кажется, не сработал, что происходит.

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

Вы пытались стирать весь процессор. эн.g Использование программы USB -серийного адаптера и STS Flash Loader.

Я думаю, что STM32 поддерживает блокировку отдельных страниц Flash, поэтому есть вероятность, что у вашего процессора есть несколько страниц, заблокированных.
Кроме того, существует регистр параметров, который можно изменить с помощью программы Flash STM (или Stlink и т. Д.), И возможно, что один из других вариантов вызывает проблемы

Макбет
Пн 20 июня 2016 г., 10:04
Спасибо за ваш вклад.
Я все еще в темноте...

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

Мысль о генераторе:
Я использую внешний генератор (XO53), подключенный к OSC_IN с OSC_OUT Left Unlired (HI-Z, как указано в спецификациях STM). Сигнал на OSC_IN выглядит нормально на прицеле (от 0,3 .. 3,2V). Я до сих пор не смотрел код загрузчика. Мне нужно изменить некоторые OSC-сеттинг?
Я не подумал, потому что загрузчик работает просто отлично на моих других досках (с тем же генератором). И загрузчик, кажется, работает, потому что он мигает светодиод (очень быстро после сброса, затем медленнее при 5 Гц).

Что я узнал, что я узнал:
У меня есть светодиод на PA1. Когда я использую generic_boot20_pa1.Бин, светодиод мигает, и я могу прошить свои программы через USB (но тогда они не начинаются).
Когда я использую одно из других двоичных файлов (e.глин. generic_boot20_pb7.bin) USB-Upload не работает (PB7 ни с чем не подключен). Почему???

У меня заканчиваются идеи. Может, я перенаправляю свою доску. У меня есть некоторые виды, очень близкие к булавкам STM, которые мне не нравятся. Но я хотел бы понять, что происходит первым :(

Rogerclark
Пн 20 июня 2016 г., 10:47
Какую частоту работают в ?

Макбет
Пн 20 июня 2016 г., 10:51
8.000 МГц

Rogerclark
Пн 20 июня 2016 г., 11:00 утра
Ммм


Вы пробовали загрузку с помощью USB на серийный.

Установите Boot0 на 1, убедитесь, что Boot1 не плавает высокой (потяните его низко)

Прикрепите USB к сериалу к USART1 TX и RX

Силовой цикл доска

Выберите STM32F103C8 и метод загрузки в качестве последовательного

Загрузите эскиз

Примечание. Если вы используете сериал.print () его следует отправлять через USART1, чтобы вы могли видеть сообщения отладки через USB в сериал

Макбет
Пн 20 июня 2016 г. 14:43
Хорошо. Мне пришлось сначала установить ваш Arduino Toolchain.
Когда я прошиваю простую программу без загрузчика (с «серийным»), доска работает. Я могу вспыхивать светодиоды и поговорить через USART. Большой!
Но мне нужен загрузчик, чтобы работать. Это все еще не работает, как раньше.
Я попробую еще раз

Макбет
Пн 20 июня 2016 г., 16:05
Просто чтобы убедиться...

Ваш "generic_boot20_pa1.bin "-bootloader ожидает, что пользовательский код будет на 0x8005000, справа?

Martinayotte
Пн 20 июня 2016 г. 16:53
Загрузчик 2.0 загружает эскизы на 0x8002000, (0x8005000 - оригинальный загрузочный загрузчик Leaflab)
См. VECT_TAB_ADDR в Arduino-1.6.5/hardware/arduino_stm32/stm32f1/щиты.текст.
А также в сценарии LD Arduino-1.6.5/armware/arduino_stm32/stm32f1/variants/maple_mini/ld/bootloader_20.лд

Макбет
Пн 20 июня 2016 г., 19:19
Ну, я использую инструмент eClipse на коробке Linux.

Я пытался // wait for serial monitor to be connected. while (!(Serial.isConnected() && (Serial.getDTR() || Serial.getRTS()))) { digitalWrite(33,!digitalRead(33));// Turn the LED from off to on, or on to off delay(100); // fast blink }

Макбет
Пн 20 июня 2016 г., 8:31 вечера
ОКОНЧАТЕЛЬНО!!

Я решил это. Конечно это было действительно просто. Но потом... Может быть, нет.

Глядя на конфигурацию.H В загрузчике я обнаружил, что кнопка определяется для каждой цели.
Я использовал target_generic_f103_pa1, который имеет PC14, определенную как кнопку.

Теперь мое оборудование использует подтягивание на PC14 (= D22 на Maple Rev3). Это пинает загрузчик в «вечный режим» каждый раз, когда начинается. Нет выхода!

Я должен был подумать об этом напрямую.

Мой быстрый& Грязный обходной путь: я определил кнопку в другом месте на булавке, который мне не нужен.
Было бы намного приятнее, если бы мы могли иметь общий #define has_button (например, has_maple_hardware).

Но это просто незначительная вещь, если смотреть на общую картину и отличную работу, которую вы здесь делаете! Большое спасибо за это!!

Rogerclark
Пн 20 июня 2016 г., 21:45
Кнопка для ввода вечного загрузчика определяется в загрузке, а не на эскизе, и вы можете изменить его или полностью удалить его

Если вы посмотрите в репо Bootloader в моей учетной записи GitHub, в конфигурации.h, все варианты MAKE TARGET определяются с использованием #IFDEFS

Одна или две цели не имеют определенных кнопок, и из того, что я помню, если он не определен, код предполагает, что кнопка нет


Просто сделайте свою новую цель Make и добавьте ее в конфигурацию.H и перекомпилируйте для вашей конкретной платы

Макбет
Вт 21 июня 2016 г., 6:12
Спасибо за вашу помощь здесь!
Это то, что я сделал вчера вечером. Я скомпилировал свой собственный загрузчик с фиктивным штифтом.
Я постараюсь скомпилировать без определения кнопок сегодня. Но сейчас я счастлив. : D

Rogerclark
Вт 21 июня 2016 г., 7:03
Макбет написал:Спасибо за вашу помощь здесь!
Это то, что я сделал вчера вечером. Я скомпилировал свой собственный загрузчик с фиктивным штифтом.
Я постараюсь скомпилировать без определения кнопок сегодня. Но сейчас я счастлив. : D

Задержать менее 1 мкс ?