Страница 1 из 4
Соревнование "свободных художников" по мини-хелловорду
Добавлено: Пт мар 25, 2022 10:13:14
ARV
есть желающие просто помериться письками?
предлагаю что-то типа
бесплатного и бесполезного соревнования по получению кода минимального размера с заданными параметрами, этакий хелловорд для AVR.
идея навеяна многократными вопросами о размерах и постоянном упоминании размеров прошивки практически в любой теме о МК.
вот, пока идея такая:
1. условия:
- код на С/С++, любой доступный компилятор Си/С++;
- запрещается ассемблер, ассемблерные вставки (ключевое слово asm), кроме входящих в "стандартный" комплект компилятора (aka libc);
- запрещаются любые "хаки" с использованием линкера типа линковки готового бинарного файла;
- разрешаются любые документированные и недокументированные фичи компилятора/линкера, которые можно повторить "стандартными" методами, т.е. командной строкой или makefile;
- разрешается использование любых фьюзов и т.п. аппаратных нюансов МК, которые могут быть повторены каждым без спец-приспособлений;
- МК тактируется только от любого доступного
внутреннего источника тактирования.
2. задача:
- код генерации меандра 1 Гц для микроконтроллера attiny13
3. оценка результата:
- предлагаю оценивать результат в баллах по формуле:
(2048 + 64) / ((size + ram) * max(1, F)/min(1, F)), где:
size - размер прошивки в байтах;
ram - количество байт статически занятой памяти;
F - частота генерируемого сигнала.
max и
min - это, соответственно, наибольшее и наименьшее из двух значений. это для того, чтобы оценить точность формирования меандра
посоревнуемся? кто первый, у кого меньше?

если будут другие идеи - предлагайте.
проверять можно в протеусе
Re: Соревнование "свободных художников" по мини-хелловорду
Добавлено: Пт мар 25, 2022 10:32:17
astrahard
Здравая идея. Еще хочу хелловорд для ASIC.
Re: Соревнование "свободных художников" по мини-хелловорду
Добавлено: Пт мар 25, 2022 10:36:46
ARV
astrahard писал(а):хочу хелловорд для ASIC
если это то, о чем написано в
вики, то это не для раздела AVR
Re: Соревнование "свободных художников" по мини-хелловорду
Добавлено: Пт мар 25, 2022 10:45:39
veso74
Можно поставить и "весовой коэффициент" за: количество строк в программе
(с указание того, что следует принимать за строку, или за все строки?).
(часто для внутр. алгор. тестов мне важен не размер памяти, а "скорость" написания кода для тестового кода,
потому что потом идет еще один тест, потом еще... до бесконечности

).
Re: Соревнование "свободных художников" по мини-хелловорду
Добавлено: Пт мар 25, 2022 11:06:11
ARV
не, количество строк не показатель, сишную программу можно в одну строку записать, ничего, кроме невозможности разобраться в ней, это не даёт. цель конкретная - минимальный код, минимальный расход ОЗУ, максимальная точность генерации частоты.
я тут прикинул - вроде, неплохо получилось... только протестировать смогу поздно вечером.
Re: Соревнование "свободных художников" по мини-хелловорду
Добавлено: Пт мар 25, 2022 11:14:05
veso74
Пазмышления в письменной форм: поэтому я и написал "можно ...". А значит ли или нет - от его "весового" коэффициента в формуле.
Конечно, не показатель, но в повседневной практике и из-за самого теста с высокоресурсным MCU предпочитаю "короткий код" перед бесконечными строками (напр. asm).
---
В порядке мыслей: в формуле увеличите "вес" оперативной памяти. В данном случае она ограничена и хорошо обем быть маленьким (оставить на другие функции в будущем).
Re: Соревнование "свободных художников" по мини-хелловорду
Добавлено: Пт мар 25, 2022 11:26:07
ARV
лучше бы выложили свои достижения в этом соревновании

я свои вечером выложу.
Re: Соревнование "свободных художников" по мини-хелловорду
Добавлено: Пт мар 25, 2022 11:34:58
pyzhman
В сторону: -Сейчас полгода будут мурыжить условия...
Re: Соревнование "свободных художников" по мини-хелловорду
Добавлено: Пт мар 25, 2022 12:10:59
DX168B
[uquote="astrahard",url="/forum/viewtopic.php?p=4203497#p4203497"]Здравая идея. Еще хочу хелловорд для ASIC.[/uquote]
ASIC не только лишь все могут себе позволить. Мало кто может себе позволить.
Давай хотя-бы ПЛИС.
Код: Выделить всё
module Generator();
input wire sig_in;
output wire sig_out;
assign sig_out = !sig_in;
endmodule
Пять строк верилога, две ноги ПЛИС, один логический элемент.
Или даже ни одного, если блоки ввода/вывода уже содержат нужную функциональность.
Так как у большинства ПЛИС нет встроенного генератора, нужен внешний.
Подаем на вход меандр 1Гц, получаем на выходе меандр 1Гц (со сдвигом фазы) и вуаля! Кто может еще проще?

Re: Соревнование "свободных художников" по мини-хелловорду
Добавлено: Пт мар 25, 2022 12:16:17
ARV
DX168B писал(а):Подаем на вход меандр 1Гц, получаем на выходе меандр 1Гц (со сдвигом фазы) и вуаля! Кто может еще проще?
еще проще могу я: проводок от места, из которого подаем, до места, в котором смотрим.
только раздел посвящен микроконтроллерам AVR, и было бы здорово придерживаться темы.
Re: Соревнование "свободных художников" по мини-хелловорду
Добавлено: Пт мар 25, 2022 12:17:26
veso74
Начнем с Blink. Attiny13, через Arduino IDE, Microcore для ATtiny13A.
выход 4, pin 3, 1 Hz
Код: Выделить всё
// ATtiny13A
// _____
// RST/5 -| ^ |- VCC
// 3 -| |- 2
// 4 -| |- 1
// GND -|_____|- 0
void setup() {
pinMode(4, OUTPUT); // ATtiny13a pin 3
}
void loop() {
digitalWrite(4, HIGH);
delay(500);
digitalWrite(4, LOW);
delay(500);
}
Код: Выделить всё
Скетч использует 90 байт (8%) памяти устройства. Всего доступно 1024 байт.
Глобальные переменные используют 0 байт (0%) динамической памяти, оставляя 64 байт для локальных переменных. Максимум: 64 байт.
Re: Соревнование "свободных художников" по мини-хелловорду
Добавлено: Пт мар 25, 2022 12:22:11
ARV
отлично, первый пошёл!

теперь просимулируйте в протеусе и рассчитайте свои баллы по упомянутой в первом посте формуле.
Re: Соревнование "свободных художников" по мини-хелловорду
Добавлено: Пт мар 25, 2022 12:24:54
veso74
От симуляции смысла нет, даже "вживую" проверял (на бредборде)

. Оставляю другим вычислять.
(точно понятия не имею, что имеете в виду под этим: "max и min - это, соответственно, наибольшее и наименьшее из двух значений. это для того, чтобы оценить точность формирования меандра")
Re: Соревнование "свободных художников" по мини-хелловорду
Добавлено: Пт мар 25, 2022 13:05:48
>TEHb<
Ну блин, и машинные коды нельзя? Ладно, сейчас на С накропаю...
Re: Соревнование "свободных художников" по мини-хелловорду
Добавлено: Пт мар 25, 2022 13:50:24
GoldenAndy
А как оценить max min в протеусе, если протеус "тактирует" МК по частоте согласно ДШ?
Да и в железе если, то на одном экземпляре МК и тактовая будет одна. соответственно, и погрешность будет константная...
Re: Соревнование "свободных художников" по мини-хелловорду
Добавлено: Пт мар 25, 2022 14:04:49
ARV
GoldenAndy писал(а):А как оценить max min в протеусе, если протеус "тактирует" МК по частоте согласно ДШ?
протеус тактирует не по ДШ, а по той частоте, что вручную введена. так и тестировать: вводим в протеусе частоту из ДШ (или какая там выбрана фьюзами), и при помощи осциллографа или построения графиков определяем точное значение периода меандра, а уж частоту по периоду понятно как узнать.
затем подставляем в формулу меньшее-большее значение и вычисляем. например, протеус показал, что меандр имеет частоту 1,015 Гц - значит, там где min ставим 1, а там где max ставим 1,015
veso74 писал(а):Оставляю другим вычислять.
доберусь до протеуса, просимулирую ваш код, раз вам лень.
надеюсь, там в архиве есть готовый hex?
Добавлено after 1 minute 7 seconds:
само собой, принимаем, что встроенный RC-генератор даёт строго частоту по даташиту
Re: Соревнование "свободных художников" по мини-хелловорду
Добавлено: Пт мар 25, 2022 14:15:01
astrahard
А вот инженеры Apple посчитали, что исключения, множественное наследование, шаблоны, динамическая идентификация типа данных (typeid), виртуальное наследование и спецификатор класса хранения в стандартном C++ либо недостаточны, либо недостаточно эффективны для использования в высокопроизводительном многопоточном ядре.
P.S. Бьёрн Страуструп сразу же стал кричать и топать ногами желая похоронить всех инженеров Apple.
Re: Соревнование "свободных художников" по мини-хелловорду
Добавлено: Пт мар 25, 2022 14:26:47
Martian
Код: Выделить всё
// ATtiny13A
// _____
// RST/5 -| ^ |- VCC
// 3 -| |- 2
// 4 -| |- 1
// GND -|_____|- 0
//void setup() {
// pinMode(4, OUTPUT); // ATtiny13a pin 3
//}
void loop() {
pinMode(4, OUTPUT); // ATtiny13a pin 3
delay(500);
pinMode(4, INPUT); // ATtiny13a pin 3
delay(500);
}
я не знаю AVR, но где-то так... выкинуть как минимум один вызов функции уже плюс
Re: Соревнование "свободных художников" по мини-хелловорду
Добавлено: Пт мар 25, 2022 14:31:35
astrahard
Да да, как сказали некие инженеры "ручками, ручками, не надорветесь"
Re: Соревнование "свободных художников" по мини-хелловорду
Добавлено: Пт мар 25, 2022 14:34:00
ARV
Martian писал(а):но где-то так
вообще-то так не честно... я предлагаю каждому желающему выносить на обсуждение свой вариант с исходником, hex-ом, примечаниями и т.п., в том числе с расчетом баллов.
а вот это вот "как-то так" - всего лишь догадки, и дают они что-то или нет - никто не знает.