Ubuntu MATE на Raspberry Pi 3

Колись давно я був купив Raspberry Pi — ще ту стару, з 512М пам’яті й 700-мегагерцовим одноядерним процесором. Трохи побавився й відклав, бо реального на ній ні́чого було робити, а інші задачі підпирали.

А то до мене звернулися знайомі, які погано знайомі з лінуксами і їм потрібна деяка підтримка. Дали одну платку Raspberry Pi 3 мені. Тепер коли є проблеми — пишуть, я у себе розбираюся і висилаю рекомендації («для себе» я із нею нічого й не роблю).

Оце вчергове щось там треба було перевірити зі свіжим Raspbian 9.1 stretch, поліз по нього і виявив, що є ще й Ubuntu MATE для RPi.
Звісно ж, по тому, як все зробив, вирішив погратися і з цим.

На око наче не повільніша за Raspbian, але займає більше місця на карті micro-SD. Просто тому, що тягне із собою відразу набагато більше софта.

Але ж…
Образ для SD-карти має розділ /boot розміром білизько шестидесяти мегабайт. Він зайнятий лише на третину і наче все нормально, але при оновленні система викинула помилку:

Not enough free disk space. The upgrade needs a total of 48.2 M free space on disk ‘/boot’.

Не вистачає місця на <tt>/boot</tt> для оновлення

Чи варто казати, що отой «clean» робити нема ніякого сенсу, бо це перша операція на «чистій» системі, як вона була записана в образі? Треба збільшити розділ /boot, але краще це робити до першого завантаження, бо тоді убунта збільшує розділ / на все вільне місце і перед тим, як його відсувати, доведеться ще й зменшувати.
У мене не вийшло швиденько розібратися, як змінити розмір розділу ще в образі, тобто на швидкому вінчестері, тому це робилося на SD-карті поки я читав різні розсилки. Посунув/збільшив відразу на 400 мегабайт, «хай клята комаха вдавиться».

Пересування основного розділу системи і зміна розміру завантажувального

По дорозі gparted спитав: залишати розділ /boot у FAT16 чи переробити на FAT32. Чесно попередив, що для FAT32 треба буде перевстановити завантажувач. Тому залишився FAT16.

Все побігло, оновилося, працює.

Одного не розумію — навіщо їй треба було більше місця на /boot, якщо після оновлення там залишилося практично стільки, скільки й було. Невже тимчасові файли не можна було деінде скласти?

real.kyiv.ua

Нарешті завівся (ну як «завівся» — мені його завели, але, оскільки я сидів і нічого не робив, для мене він завівся) дзеркальний до real.kiev.ua домен real.kyiv.ua. Тепер сайт сидить на обох адресах.

Оболонка Arduino українською

Потихеньку завершив переклад оболонки Ардуіно українською мовою. Станом на кінець літа там близько третини (із майже шестисот) рядків у .po-файлі було ще не перекладено. Дещо було перекладене, але не потрапляло в оболонку жодною мовою, довелося шукати проблемне місце, виправляти і робити pull-request.

Дещо з перекладеного раніше також довелося виправити. Напевне ж, ще треба виправляти, як старе, так і зроблене мною. Хоча б тому, що в англійській мові нема відмінків, а я сам не пройшов всю оболонку, не викликав усі можливі повідомлення і не знаю контексту, у якому вони виникають. У дуже підозрілих місцях я просто по java-коду оболонки здогадувався про цей контекст.
От цікаво, де виникає повідомлення «Як сюрреалістично!» (в оригіналі «How very Borges of you»), але в код не ліз, такий квест треба проходити чесно ;-)

Зараз з сайту Arduino можна завантажити Arduino IDE «стабільної» версії 1.8.5 від кінця вересня, туди частина перекладу вже увійшла.
У чергову preview-версію 1.8.6 від 30 жовтня (нижче, розділ HOURLY BUILDS) ще не потрапили дві фрази (див. issue), тепер вони є в перекладі. В релізі (чи наступному пре-релізі) 1.8.6 мають бути.

Будь-ласка, хто використовує Arduino, беріть найсвіжішу збірку (зараз ота 30 October 2017) звертайте увагу на меню і всі повідомлення, які трапляються у реальній роботі. Як щось криве побачите — пишіть. Хочу підчистити до релізу. Ну і потім продовжувати підтримувати стан.

Зовнішні відносно Arduino плагіни для роботи з платами/бібліотеками, навіть якщо вони прямо із сайту завантажуються разом з оболонкою, не мають можливості перекладу. Але пишіть про все, а я вже розбиратимуся — то щось нове додали і треба перекласти, чи воно не вміє бути перекладеним.

До речі, довідка в Arduino IDE, на відміну від власне оболонки, існує лише англійською. Так і не зрозумів, чи збираються додавати перемикання. Пізніше питатиму, зараз інша в чомусь близька робота час забрала.

Запобіжник в Ardunio Nano

Часом треба щось нашвидкоруч перевірити і найпростіше те зробити через ардуінку та безпаєчну макетку. Біда в тому, що я («досі»? чи «вже»? ;-) ) не завжди акуратно тикаюся тестером або забуваю перемкнути його зі струму на напругу чи роблю ще дурнішу помилку.

Тут треба відволіктися і нагадати, як на платі Ardunino Nano організоване живлення. Живитися вона може або від USB, або від запаяного на неї стабілізатора, на вхід якому через ніжку Vin подається нестабілізована напруга. Розв’язано ці два живлення дуже просто — одним діодом від USB на внутрішню шину «+5V».

Тамтешнього діода Шоткі MBR0520 з головою вистачає для роботи, але він спрацьовує як одноразовий запобіжник коли я підкорочую живлення. Двічі я його міняв, на третій раз вирішив нарешті поставити туди самовідновлюваний запобіжник. З’ясувалося, що MF-NSMF020 розміру 1206 дуже добре стає на місце діода, тільки трохи незручно паяти сторону, яка ближча до штирів:

Запобіжник в Arduino Nano

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 і вчитися її відпускати у потрібний момент :-)

Писанкарі й писачкарі

Ну тобто я точно не писанкар, я писачкар, бо лише роблю писачки, сам ними не користуюся.
Але цього вистачило, щоб тепер і я потрапив у телевізор у гарну компанію писанкарів у статті на сайті «Маєш право знати»:
Броварські писанкарки з писанками

Знову шукають писачки

«Оце вже весна», тобто знову люди шукають інформацію про писачки.
Когось цікавить як його зробити самому. Когось — де купити готовий.
Днями перевірив кіоск у Києві в переході метро «Палац Україна», про який вже писав раніше. Таких, писачків, як 2012 року, там не було, але кіоск на місці, писачки є отакі:

Писачки, куплені навесні 2017 року

Ліворуч — точений з латунного прутка, праворуч — зроблений по технології, схожій на описану мною раніше.
Точений з дуже акуратним носиком, маленький отвір — підійде робити воском тонкий розпис.
Другий грубіший, швидше під парафін із звичайних свічок. Кінчик загорнутий не дуже акуратно, треба б вставити голку і ще обтиснути (заразом і тонший отвір можна зробити). Дроту намотано менше, ніж у мене (так я ж не на продаж, то ж для своїх ;-) ), і він не старанно пропаяний, а просто зафіксований. Тому відношення ефективної теплоємності до об’єму резервуара у нього має бути гіршим, ніж у того точеного з латуні й тих, що роблю я. Відповідно, має швидше вистигати віск.

Ціни, здається, 60 і 30 гривень відповідно, але і я можу помилитися (брав ще дещо), і вони можуть помінятися.

Полювання на нейтрино

Іноді я тут згадував про навчання доньки, але рідко. А вона вже не студентка NCTU, а продовжує навчання і паралельно ловить нейтрино (50%/50% за умовами контракту) в RWTH Aachen University.

Подробиці в інтерв’ю, яке у неї взяла Світлана Яцив, «Маєш право знати».

А ще моя донька випадково зустрілася у Німеччині з ученицею моєї мами.
Марічка повернулася на пару днів з лабораторії Гран Сассо в інститут, бо їй хтось десь щось наплутав з документами, треба було терміново виправити. І тут їй подзвонив знайомий індус з проханням допомогти під час ділової зустрічі з «іншою дівчиною, яка теж з України».
Ну і тепер вже підтримують зв’язок.
Моя донька випадково зустрілася у Німеччині з ученицею моєї мами
Глобалізація…

Китайський ST-Link v2 проти STM32F3-Discovery

Щоб вже закінчити вчорашню тему.

Витягнув із шухлядки плату STM32F3-Diіcovery — на ній є вбудований ST-Link, який можна відключити від процесора на платі і використовувати для програмування інших плат. На штирі виведено всі сигнали, включно з RESET і SWO. До речі, перемички розривають лише лінії SWCLK і SWDIO, тому свою плату можна скидати, натиснувши кнопку на платі Discovery.

Ну що — все працює, RESET піднімає мікроконтролер зі Stop-у і перепрошиває. Тобто проблема в тому, що клон ST-Link з Ali-Express-у не вміє виконувати відповідні команди.

Коли вже знову сів за макетку з STM32L051, то перевірив і роботу команд stm32lx lock / stm32lx unlock і швидкість програмування. У клонованого ST-Link тут теж щось в генотипі порушене, бо набагато повільніший. Хоча в ньому стоїть STM32F101, тобто USB зроблене програмно, тому швидким він і не може бути, але ж одиниці кілобайт на секунду не така вже й велика швидкість.

Результати тестування на швидкість (файли для прошивки 2-12kB).
Команда “reset init” перемикає STM32L0x з внутрішнього MSI 2 MHz на HSI 16 MHz і піднімає частоту обміну.

Програматор Fswclk = 300 kHz
(-c “reset halt”)
Fswclk = 2.5 MHz
(-c “reset init”)
Клон ST-Link 1.5-1.7 KiB/s 1.5-1.7 KiB/s
F3-Discovery 4.9-5.0 KiB/s 5.2-5.3 KiB/s
FT2232H 3.8-4.2 KiB/s 8.0-8.3 KiB/s


Платку з FT2232D діставати було ліньки, на цих швидкостях має бути не набагато повільніша за FT2232H, хіба ото не зможе виставити 2.5 MHz частоти SWCLK, буде 2.

Китайський ST-Link v2, STM32L011 і Stop

Точніше, «Stop і не-Reset».
І не STM32L011F4, бо у Імраді їх нема. Граюся на а STM32L051C8T, поки дрібніші кристали їдуть.

Cortex-M, зокрема STM32F10x і трохи раніше LPC176x, я вже трохи помацав у невеликих «одноразових» проектах. У виробах досі йшли ATmega48PA, хоча не все влаштовувало і поглядав на нові можливості нових ATtiny (можна погортати назад, я писав, що мене цікавить). Запитуючи про ціни-доступність цих кристалів, мимоволі роззирався навкруги, як на старіші MSP430 та 8-бітні PIC-и, так і на STM8L, які теж мають цікаві можливості. Та останнім заважає біда — вибір між 16-мегагерцовим RC (забагато, навіть якщо для ядра поділити частоту — багато їсть сам генератор) і низькочастотним low consumption, якого малувато і який має доволі великі початковий розкид і нестабільність частоти.

Так потихеньку доповз і до STM32L0. Аналоговий компаратор, хоч і повільніший, ніж в AVR, але ж пару мікроампер, а не 70, LPTIM1, який може слухати компаратор при зупиненому ядрі і маршевому RC, і, головне, MSI-генератор, який зменшує споживання при зменшенні частоти (привіт, MSP430, я вас ціную, та так до вас і не дійшов). Все, «беру».

Ті «товстіші» Cortex-M я програмував через OpenOCD/JTAG і платки на FT2232D/FT2232H, яких у мене вистачає. Тут же потрібен SWD. Ну що, «досить самому ліпити адаптери», Ali-express, копійчаний клон ST-Link v2, побігли.

І тут вилізла проблема. Якщо програма використовує ніжки SWCLK/SWDIO для себе, або якщо ядро йде у Stop, зупиняючи генератор, то для перепрошивки необхідно смикнути кристал за Reset і потримати на ньому під час з’єднання, параметр connect_assert_srst для OpenOCD. І от чи то всі ці китайські клони, з якими взагалі йдуть 4 дротики (SWDIO, GND, SWCLK, VCC для STM32 і RESET, GND, SWIM, VCC для STM8), не вміють смикати за Reset, чи ще що, але з моїм ST-Link v2 для перепрошивки в потрібний момент необхідно тицяти у кнопку скидання вручну.
Не діло.

Згадав, що опис OpenOCD згадував resistor hack, який дозволяє для FTDI-них адаптерів працювати з SWD. Дописав потрібні рядки у конфіг для своєї плати на FT2232H, спробував — все чудово працює. Ото недаремно мені такі адаптери завжди подобалися ;-)

Десь у мене лежить кілька незапаяних FT2232D і ще 2-4 штуки можна зняти із зоопарку платок, який зібрався за минулі роки. Накидаю я luminary-icdi-подібну плату і притулю її до чергового замовлення експериментальних зразків.

[flagcounter image]