предлагаю что-то типа бесплатного и бесполезного соревнования по получению кода минимального размера с заданными параметрами, этакий хелловорд для 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 - это, соответственно, наибольшее и наименьшее из двух значений. это для того, чтобы оценить точность формирования меандра
посоревнуемся? кто первый, у кого меньше? если будут другие идеи - предлагайте.
проверять можно в протеусе
_________________ если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется...
_________________ "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)
Можно поставить и "весовой коэффициент" за: количество строк в программе (с указание того, что следует принимать за строку, или за все строки?).
(часто для внутр. алгор. тестов мне важен не размер памяти, а "скорость" написания кода для тестового кода, потому что потом идет еще один тест, потом еще... до бесконечности ).
не, количество строк не показатель, сишную программу можно в одну строку записать, ничего, кроме невозможности разобраться в ней, это не даёт. цель конкретная - минимальный код, минимальный расход ОЗУ, максимальная точность генерации частоты.
я тут прикинул - вроде, неплохо получилось... только протестировать смогу поздно вечером.
_________________ если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется...
Пазмышления в письменной форм: поэтому я и написал "можно ...". А значит ли или нет - от его "весового" коэффициента в формуле. Конечно, не показатель, но в повседневной практике и из-за самого теста с высокоресурсным MCU предпочитаю "короткий код" перед бесконечными строками (напр. asm). --- В порядке мыслей: в формуле увеличите "вес" оперативной памяти. В данном случае она ограничена и хорошо обем быть маленьким (оставить на другие функции в будущем).
Последний раз редактировалось veso74 Пт мар 25, 2022 11:27:31, всего редактировалось 2 раз(а).
Пять строк верилога, две ноги ПЛИС, один логический элемент. Или даже ни одного, если блоки ввода/вывода уже содержат нужную функциональность. Так как у большинства ПЛИС нет встроенного генератора, нужен внешний. Подаем на вход меандр 1Гц, получаем на выходе меандр 1Гц (со сдвигом фазы) и вуаля! Кто может еще проще?
_________________ I am DX168B and this is my favourite forum on internet!
От симуляции смысла нет, даже "вживую" проверял (на бредборде) . Оставляю другим вычислять. (точно понятия не имею, что имеете в виду под этим: "max и min - это, соответственно, наибольшее и наименьшее из двух значений. это для того, чтобы оценить точность формирования меандра")
А как оценить max min в протеусе, если протеус "тактирует" МК по частоте согласно ДШ? Да и в железе если, то на одном экземпляре МК и тактовая будет одна. соответственно, и погрешность будет константная...
А как оценить max min в протеусе, если протеус "тактирует" МК по частоте согласно ДШ?
протеус тактирует не по ДШ, а по той частоте, что вручную введена. так и тестировать: вводим в протеусе частоту из ДШ (или какая там выбрана фьюзами), и при помощи осциллографа или построения графиков определяем точное значение периода меандра, а уж частоту по периоду понятно как узнать.
затем подставляем в формулу меньшее-большее значение и вычисляем. например, протеус показал, что меандр имеет частоту 1,015 Гц - значит, там где min ставим 1, а там где max ставим 1,015
veso74 писал(а):
Оставляю другим вычислять.
доберусь до протеуса, просимулирую ваш код, раз вам лень. надеюсь, там в архиве есть готовый hex?
Добавлено after 1 minute 7 seconds: само собой, принимаем, что встроенный RC-генератор даёт строго частоту по даташиту
_________________ если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется...
А вот инженеры 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)
Да да, как сказали некие инженеры "ручками, ручками, не надорветесь"
_________________ "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)
вообще-то так не честно... я предлагаю каждому желающему выносить на обсуждение свой вариант с исходником, hex-ом, примечаниями и т.п., в том числе с расчетом баллов.
а вот это вот "как-то так" - всего лишь догадки, и дают они что-то или нет - никто не знает.
_________________ если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется...
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 10
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения