Соревнование "свободных художников" по мини-хелловорду

Обсуждаем контроллеры компании Atmel.
Ответить
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18678
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение 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 - это, соответственно, наибольшее и наименьшее из двух значений. это для того, чтобы оценить точность формирования меандра

посоревнуемся? кто первый, у кого меньше? ;) если будут другие идеи - предлагайте.

проверять можно в протеусе
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Реклама
Это не хвост, это антенна
Аватара пользователя
Сообщения: 1405
Зарегистрирован: Чт фев 19, 2015 12:41:04

Сообщение astrahard »

Здравая идея. Еще хочу хелловорд для ASIC.
"Every profession is a conspiracy against the uninitiated" (B. Shaw)
"A textbook can be defined as a book unsuitable for reading" (B. Shaw)
Tautology is humor in "this" place (Vigo Carpathian)
Реклама
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18678
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

astrahard писал(а):хочу хелловорд для ASIC
если это то, о чем написано в вики, то это не для раздела AVR
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Поставщик валерьянки для Кота
Сообщения: 1916
Зарегистрирован: Сб май 05, 2012 20:24:52
Откуда: KN34PC, Болгария

Сообщение veso74 »

Можно поставить и "весовой коэффициент" за: количество строк в программе
(с указание того, что следует принимать за строку, или за все строки?).

(часто для внутр. алгор. тестов мне важен не размер памяти, а "скорость" написания кода для тестового кода,
потому что потом идет еще один тест, потом еще... до бесконечности :) ).
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18678
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

не, количество строк не показатель, сишную программу можно в одну строку записать, ничего, кроме невозможности разобраться в ней, это не даёт. цель конкретная - минимальный код, минимальный расход ОЗУ, максимальная точность генерации частоты.

я тут прикинул - вроде, неплохо получилось... только протестировать смогу поздно вечером.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Реклама
Поставщик валерьянки для Кота
Сообщения: 1916
Зарегистрирован: Сб май 05, 2012 20:24:52
Откуда: KN34PC, Болгария

Сообщение veso74 »

Пазмышления в письменной форм: поэтому я и написал "можно ...". А значит ли или нет - от его "весового" коэффициента в формуле.
Конечно, не показатель, но в повседневной практике и из-за самого теста с высокоресурсным MCU предпочитаю "короткий код" перед бесконечными строками (напр. asm).
---
В порядке мыслей: в формуле увеличите "вес" оперативной памяти. В данном случае она ограничена и хорошо обем быть маленьким (оставить на другие функции в будущем).
Последний раз редактировалось veso74 Пт мар 25, 2022 11:27:31, всего редактировалось 2 раза.
Контактная информация:
Реклама
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18678
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

лучше бы выложили свои достижения в этом соревновании :) я свои вечером выложу.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск

Сообщение pyzhman »

В сторону: -Сейчас полгода будут мурыжить условия...
Docendo discimus
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 4468
Зарегистрирован: Вс янв 24, 2010 19:19:52
Откуда: Главный Улей России (Moscow)

Сообщение 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Гц (со сдвигом фазы) и вуаля! Кто может еще проще? :))) :))) :)))
I am DX168B and this is my favourite forum on internet!
Контактная информация:
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18678
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

DX168B писал(а):Подаем на вход меандр 1Гц, получаем на выходе меандр 1Гц (со сдвигом фазы) и вуаля! Кто может еще проще?
еще проще могу я: проводок от места, из которого подаем, до места, в котором смотрим.

только раздел посвящен микроконтроллерам AVR, и было бы здорово придерживаться темы.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Поставщик валерьянки для Кота
Сообщения: 1916
Зарегистрирован: Сб май 05, 2012 20:24:52
Откуда: KN34PC, Болгария

Сообщение 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 байт.
Вложения
blink.zip
(853 байт) 419 скачиваний
attiny13_blink.gif
(30.34 КБ) 88 скачиваний
Последний раз редактировалось veso74 Пт мар 25, 2022 14:09:44, всего редактировалось 1 раз.
Контактная информация:
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18678
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

отлично, первый пошёл! :))) теперь просимулируйте в протеусе и рассчитайте свои баллы по упомянутой в первом посте формуле.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Поставщик валерьянки для Кота
Сообщения: 1916
Зарегистрирован: Сб май 05, 2012 20:24:52
Откуда: KN34PC, Болгария

Сообщение veso74 »

От симуляции смысла нет, даже "вживую" проверял (на бредборде) :). Оставляю другим вычислять.
(точно понятия не имею, что имеете в виду под этим: "max и min - это, соответственно, наибольшее и наименьшее из двух значений. это для того, чтобы оценить точность формирования меандра")
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 5751
Зарегистрирован: Ср ноя 11, 2009 17:19:30
Откуда: Воронеж

Сообщение >TEHb< »

Ну блин, и машинные коды нельзя? Ладно, сейчас на С накропаю...
Усложнять просто. Упрощать сложно.
Контактная информация:
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 1925
Зарегистрирован: Чт июл 28, 2016 07:58:37
Откуда: Kyiv, UA

Сообщение GoldenAndy »

А как оценить max min в протеусе, если протеус "тактирует" МК по частоте согласно ДШ?
Да и в железе если, то на одном экземпляре МК и тактовая будет одна. соответственно, и погрешность будет константная...
ИзображениеИзображение
Изображение
 
Telegram               Лучшая благодарность ->
[+]
Контактная информация:
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18678
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

GoldenAndy писал(а):А как оценить max min в протеусе, если протеус "тактирует" МК по частоте согласно ДШ?
протеус тактирует не по ДШ, а по той частоте, что вручную введена. так и тестировать: вводим в протеусе частоту из ДШ (или какая там выбрана фьюзами), и при помощи осциллографа или построения графиков определяем точное значение периода меандра, а уж частоту по периоду понятно как узнать.

затем подставляем в формулу меньшее-большее значение и вычисляем. например, протеус показал, что меандр имеет частоту 1,015 Гц - значит, там где min ставим 1, а там где max ставим 1,015
veso74 писал(а):Оставляю другим вычислять.
доберусь до протеуса, просимулирую ваш код, раз вам лень.
надеюсь, там в архиве есть готовый hex?

Добавлено after 1 minute 7 seconds:
само собой, принимаем, что встроенный RC-генератор даёт строго частоту по даташиту
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Это не хвост, это антенна
Аватара пользователя
Сообщения: 1405
Зарегистрирован: Чт фев 19, 2015 12:41:04

Сообщение astrahard »

А вот инженеры Apple посчитали, что исключения, множественное наследование, шаблоны, динамическая идентификация типа данных (typeid), виртуальное наследование и спецификатор класса хранения в стандартном C++ либо недостаточны, либо недостаточно эффективны для использования в высокопроизводительном многопоточном ядре.

P.S. Бьёрн Страуструп сразу же стал кричать и топать ногами желая похоронить всех инженеров Apple.
"Every profession is a conspiracy against the uninitiated" (B. Shaw)
"A textbook can be defined as a book unsuitable for reading" (B. Shaw)
Tautology is humor in "this" place (Vigo Carpathian)
Друг Кота
Сообщения: 12867
Зарегистрирован: Сб дек 18, 2021 19:25:32

Сообщение 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, но где-то так... выкинуть как минимум один вызов функции уже плюс
Контактная информация:
Это не хвост, это антенна
Аватара пользователя
Сообщения: 1405
Зарегистрирован: Чт фев 19, 2015 12:41:04

Сообщение astrahard »

Да да, как сказали некие инженеры "ручками, ручками, не надорветесь"
"Every profession is a conspiracy against the uninitiated" (B. Shaw)
"A textbook can be defined as a book unsuitable for reading" (B. Shaw)
Tautology is humor in "this" place (Vigo Carpathian)
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18678
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

Martian писал(а):но где-то так
вообще-то так не честно... я предлагаю каждому желающему выносить на обсуждение свой вариант с исходником, hex-ом, примечаниями и т.п., в том числе с расчетом баллов.

а вот это вот "как-то так" - всего лишь догадки, и дают они что-то или нет - никто не знает.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Ответить

Вернуться в «AVR»