avr-ld buffer overflow

Дійсно прикра помилка в avr-ld (binutils-avr 2.25) — та, що спонукала мене до перевірки використання Raspberry Pi як комп’ютера для роботи, — виявилася доволі цікавою.

Почала вивалюватися вона у мене доволі давно, але я помилково вважав, що вона притаманна 64-бітній версії Ubuntu 16.04, бо на роботі в 32-бітній все працювало. Думав, що це якісь проблеми невраховування розмірів чи співвідношення розмірів змінних на зразок «подаруночка від FTDI». Чесно кажучи, у повідомлення не особливо і вчитувався — «та хай, це по роботі, то на роботі й зберу» і вдома більше не запускав аж до того, як нещодавно перезібрати знадобилося негайно, бо це зупиняло термінову роботу. Тоді ж ото зібрав на Raspberry й написав про все це.

Ну й на ключову фразу *** buffer overflow detected *** Іван у коментарях пояснив, як із цим можна боротися.
Докладніше читайте » » »

Raspberry Pi як комп’ютер для роботи

Не від хорошого життя довелося провести тест Raspberry Pi як робочого комп’ютера.

Не знаю, після якого оновлення Ubuntu MATE, але на моєму основному комп’ютері перестав працювати avr-ld, валиться з помилкою «*** buffer overflow detected ***» (це на 64-бітній системі, пізніше я перевірив, що на 32-бітній такій же МАТЕ і з тими ж оновленнями все працює — це не так, залежить не від розрядності, докладніше тут).
А мені терміново знадобилося внести маленьку зміну в прошивку ATtiny13A. Мій «червоненький» ноутбук зараз інтенсивно використовує дружина, то щоб їй не заважати, я згадав про Raspberry, на яку оце ж нещодавно ставив (таку ж!) убунту.

Поставив там avr-gcc, все зібрав, перекинув на основний комп, прошив.

Стало цікаво порівняти швидкість. Цей маленький (близько 400 байт прошивки) асемблерний проект на роль такого тесту геть не годиться, тому я вирішив позбирати більший. Поставив, відповідно, arm-none-eabi-gcc, щоб збирати поточний проект для STM32F105. Там десятки файлів, за 40 кілобайт результат, — час вже можна міряти. Збирав на Raspberry, на основному своєму комп’ютері (AMD A8), на «червоненькому» Dell Vostro V130 (Core i3) і на роботі на Pentium D (дохлий, як на нинішні часи, комп’ютер, але його там цілком вистачає). На всіх системах стоїть Ubuntu MATE 16.04 з усіма оновленнями. Лише на AMD A8 64-бітна, всі інші 32-бітні (і на всіх 32-бітних avr-ld свою роботу чесно робить).

Ось що вийшло (time make -j число_ядер, час у секундах).
Воно від збирання до збирання трохи стрибало, але не принципово.

система
(ядер*ГГц)
real user system
Raspberry Pi 3
(4*1.2)
12.2 32.6 3.3
Pentium E2160
(2*1,8)
9.5 13.3 1.8
Core i3 M380
(4*1,33)
8.2 20.6 2.7
AMD A8-7600
(4*3.1)
3.1 7.7 1.2

Тут у табличці нема ширини і швидкості шини пам’яті, своє слово сказало і те, що Raspberry працює з SD-карти, Pentium-D і AMD A8 з SATA-дисків, а Core-i3 з SSD. Але тут я хочу порівняти все ж таки не кількість зкомпільованих рядків коду на гігагерц-ядро чи DDR-истість пам’яті, а абсолютний час — питання, що турбує: «чи йти заварювати чай, чи воно раніше збере» 🙂

Виявилося, що Pi 3, на відміну від перших Raspberry, цілком придатний для роботи з прошивками такого обсягу.
І що ця плата реально набагато швидша, ніж комп’ютер, на якому років 15 тому я запускав альтерівський Quartus-II 9.1 для збирання прошивок альтер (не можу пригадати, що у мене тоді було… якийсь Athlon-550 чи що). Та й «мікроконтролерні» компіляції там більше часу займали.

Ubuntu MATE на Raspberry Pi 3

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

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

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

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

Тільки от… хтось вирішив, що без проблем буде нецікаво » » »

[flagcounter image]