предлагаю что-то типа бесплатного и бесполезного соревнования по получению кода минимального размера с заданными параметрами, этакий хелловорд для 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-ом, примечаниями и т.п., в том числе с расчетом баллов.
а вот это вот "как-то так" - всего лишь догадки, и дают они что-то или нет - никто не знает.
_________________ если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется...
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения