OpenOCD, STM32L011 і всі-всі-всі

Тему так і не закінчено. Доводиться тримати на столі обидва адаптери — і саморобний на FT2232H, і китайський ST-Link.

Мікроконтролери STM32L011, на відміну від інших STM32L0, мають одну особливість. Якщо флеш стерта (точніше, якщо стерте перше слово флеша, у якому початкова адреса стеку сидить), то незалежно від ніжки BOOT0 мікроконтролер стартує у boot-loader. Зроблено це з метою «полегшити початкове прошивання», але мені лише поважчало.

Біди не було б, якби OpenOCD у комбінації з адаптером на FT2232 з цією ситуацією міг упоратися. Але він чомусь не може прошити флеш. Під’єднується по SWD до ядра, показує вміст вказівника команд десь у діапазоні системної пам’яті, каже, який мікроконтролер побачив і обсяг флеш-пам’яті, а от шити відмовляється. Цей же OpenOCD з адаптерами ST-Link, що з «чесним» з плати STM32F3DISCOVERY, що з китайським, — перешиває.

Іноді потрібно стерти геть усе, через що влетіти у бут-лоадер, а плату DISCOVERY, у якої є reset, використовувати як програматор мені трохи незручно.
От тому лежать на столі два адаптери.

p.s. Про всяк випадок повторю: якщо не зупиняти основний генератор (не піднімати біт SLEEPDEEP у регістрі SCB->SCR) і не перепрограмовувати ніжки, потрібні для SWDIO/SWDCLK, то цілком можна обійтися китайським ST-Link-ом. Інакше — доведеться шукати/робити інший програматор або додавати кнопку reset і вчитися її відпускати у потрібний момент 🙂

7 коментарів to “OpenOCD, STM32L011 і всі-всі-всі”

  1. alexey_laa сказав:

    Я нещодавно купив STM32 (https://twitter.com/alexey_laa/status/864907156826578945)- вирішив опанувати, бо поки що у мене найбільш серйозні мікроконтролери – 8 bit AVR. Поки що з новими мікроконтролерами у мене дуже повільно, бо голова увесь час зайнята моїми основними справами. Зараз роблю окремий USB-кабель (подовжувач) з сапресорами ддя захисту від електростатичних розрядів, бо прочитав, що китайський ST-Link від них може швидко вийти з ладу.

    • alexey_laa сказав:

      Іще встиг спробувати плату на FT232RL під Ubuntu, Win 7 x64, Android. Новий драйвер для Win7 x64 з чипом FT232RL працювати не хоче (як я прочитав, вважає чип неоригінальним, ще б пак – “for two bucks” 🙂 ). Прочитав, що з такими чипами працює більш старий драйвер версії 2.08.14. Спробував – дійсно працює. На Ubuntu запрацювало, але з якоїсь причини зв’язок з чипом періодично обривається. На Android через USB OTG працює стабільно.

    • ReAl сказав:

      У тому китайському ST-Link лише 22-омні резистори на лініях D+/D- USB і на лініях програмування. Але точно такий (тобто ніякий) захист і на платі STM32F3 Discovery.

      У мене таке живе довго, можливо, тому, що синтетики мінімум.

      Якщо щось і горить, то не через статику, а через потрапляння куди не треба 9, 12 а то і 24 В 🙂

    • ReAl сказав:

      Саморобні плати USB-RS485 на FT232RL у нас на роботі працюють без проблем вже багато років. Ubuntu, OpenSUSE, Xubuntu (мій, ще одного розробника і технологічний комп’ютери відповідно). Але думаю, що у нас чіпи «чесні».

      По win і «неоригінальні» читав пару років тому, що свіжий драйвер від FTDI взагалі їх лочив, прописуючи у внутрішню EEPROM нульові vid/pid. Після цього їх переставали бачити і старі драйвери, і взагалі будь-що. І був скандал у дусі «кінцевий споживач не винний, розбирайтеся із піратами самостійно», з драйверів це прибрали. Але, як бачимо, лочити не лочить, але й робити не хоче.

      • alexey_laa сказав:

        Чи не знаєте часом – у мене якась дивна проблема з COM-портами на Ubuntu – при підключенні через FT232RL (/dev/ttyUSB0) дані наче проходять (з’єднав RXD і TXD), але через невеликі проміжки часу щось мимовільно з’являється на TXD, спалахують світлодіоди TX/RX, та у терміналі з’являється щось на кшталт “…FDDDFD…”? Потім ще раз вмикав – якісь хаотичні дані. Думав – чи то драйвер не хоче працювати з неоригінальною платою, чи то плата глючить. Але тепер вирішив встановити на комп’ютер звичайну планку з роз’ємом COM-порта, підключився до материнської плати. Коли почав перевіряти (перемичка TXD – RXD) – десь так само приходять якісь “D”, “F” замість того, що я посилав, але тут вже не /dev/ttyUSB0, а /dev/ttySO. Поки що не можу зрозуміти у чому річ.

        • ReAl сказав:

          Наче не помічав такого.
          Лише при підключенні USB-шного пристрою (можливо і з pci 2*COM+LPT те ж саме при завантаженні, не дивився) йде якесь plug-and-play-не опитування — чи не підключене через цей tty щось цікаве. Там по кілька разів 41 54 0D і потім 7E 00 78 F0 7E. Навіть не шукав, що воно — у мене відкидається як биті пакети, лінукс не отримує відповіді і заспокоюється, більше нічого не посилає.

Leave a Reply

[flagcounter image]