ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Суббота
23 ноября
94748 Топик полностью
Evgeny_CD (21.07.2007 23:09, просмотров: 1) ответил AlexandrY на Да, согласен. Стиль стал яснее, но работать над ним еще много надо. ;-)
Да нет, синтетика гораздо лучше, чем кажется. "Одиночкам или компактным коллективам пофиг многослойность и абстрактность." Вот как только спустя пару лет придется перехачивать свой собственный код, написанный "по бырому", так вся несистемность подхода ой как боком вылезет. Собственно, с осознания этой простой истины и начались мои поиски философского камня 3 года назад. Если говоирить серьезно, то писать надо в protoC. Т.е. C с вставками для COG или templater. Вот написали Вы device_port= чему то там, а зря. Писать надо в виде некоей заготовки, которую COG откомпилит в целевой С код (дебажится С код в целевой IDE). И тогда переход синтетика <-> реал станет почти незаметен. Зато в синтетике Вы в 3 секунды напишите эмулятор железа, и тут же все протестируете. И почти всегда в синтетике можно легко сделать тесты, которые Вы в реале умаетесь делать. Мне приходилось много иметь дела с коммуникационными софтами, там без синтетики - сразу вилы (физически 100 контроллеров уместить в одном помещении и заставит работать вместе - ЗАДАЧА, а софтово я хоть 1к контроллеров отсимулирую). Нет, конечно функции, жестко завязанные на аппаратуру, надо писать "в лоб", но вот обработку данных надо отделять от таких кусков всегда. Реальное время в синтетике недоступно, а вот последовательность - очень даже реально отследить. Гораздо реальнее, чем в реале :). Это, кстати, одна из классических трудно уловимых ошибок - когда при одном наборе данных задачи пришли "к финишу" в одной последовательности, а при другом - в другой. Код нужно писать с синхронизацией (если она реально необходима)!!!! Это не обсуждается. Для этого ОСи и нужны. А так не трудно в каждой задаче сделать тестовые переменные (которые задефайниваются в боевом варианте), и при стремных операциях просто делать дамп таких переменных в отдельную область памяти (OS_enter_critical, задампили данные, разлочили секцию). Тут синтетика на пЫсюке самое то - хоть 2Г данных надампил, а затем смотри скриптом - а правильно ли там все было. Кстати, а есть ОСи, которые имеют битовые мьютексы? Т.е. чтобы совсем мало места в памяти занимало, и можно было бы этих мьютексов наплодить пруд? Хотя все равно таблицы для работы с мьютексами место займут... Ну и хрен с ним. ATmega88 1.5 бакса стоит мелким оптом, => контроллеров с ОЗУ <1к не бывает. Проверка мьютекса в ОСи обязательно должна быть макросом (т.е. если мьютекс не взведен - то теряем пару тактов на чтение данных из памяти и сравнение, а вот если взведен - то тогда уже вызов внутрь ОСи). На самом деле, спор о синтетике - это спор C <-> asm. Некоторое время назад повсеместно был подход - а нафига мне С, мне на асме все понятно, я лучше сам все напишу, а то что-то там компилятор наколбасит. Сейчас как-то желающих такое делать резко убавилось. Так и синтетика. Я убежден, что на ее освоение придется затратить немало времени (легко ли было С освоить?), но потом это сторицей окупится.