Зажрались

Кучу лет назад у меня был прекрасный компьютер с отличными характеристиками - 166 мегагерц процессора, 32 мегабайта оперативной памяти и 3D ускоритель на 8 мегабайт. Жесткий диск вмещал в себя либо среду программирования Borland C++ Builder с обвязкой + игру Герои Меча и Магии 3, либо игру Parkan. Когда мне хотелось поиграть - я удалял билдер и ставил паркан. Затем, конечно, родители достали мне ОЧЕНЬ большой жесткий диск на 1800 мегабайт. Я уже мог держать там музыку и не удалять игры при желании заняться программированием. Общая медлительность этого компьютера позволила прочесть мне Френка Херберта, а конкретно, его роман «Дюна». Так как игр на этот компьютер было мало, я неплохо знал Borland C++, понимал логику установщика Install Shield (у меня была идея фикс: моя программа должна уметь устанавливаться и удалятся через установку-удаление программ) и как-то пытался делать свои карты для Doom.

Компьютеры сменяли себя, первый пентиум ушел сначала к сестре, а затем на продажу, мне купили отличный Celeron 2000. Затем был AMD Athlon64 3500, потом Core 2 Duo E6400, ну и сейчас Core i7.
Удивительно конечно, но на старых компьютерах я не замечал главной детали - хорошее управление ресурсами системы. У меня было 32 мегабайта, которые успешно использовались какой либо игрой на 50-60%, но я даже не задумывался что она жрет излишек. То-же самое касается видеокарты - запуская игру в 2006м году, а конкретно World of Warcraft, на 64 мегабайта видеопамяти, я мог поставить разрешение 1280х1024 и играть на 30 FPS. Это было удивительно. Запуская сейчас среднюю по качеству стратегию, Planetbase, где на экране отображается пару миллионов полигонов, и я искренне удивляюсь тому что одна из моих видеокарт начинает жрать 400 ватт энергии. Там полигонов в разы менее чем во всем Вестфалле, который умудрялся сидеть в памяти в 256 мегабай RAM + 64 мегабайта видео и еще иметь пару участков соседней локации для корректного перехода! Надо-ли говорить что в эти 256 мегабайт были загружены еще и система, веб-сервер и антивирус Касперского? Впрочем я не про это...

В данный я делаю проект на МК. Задача простая: GPS устройство отдает данные в NMEA протоколе. Надо принять координаты раз в 10 секунд, обработать их в МК, вычленить latitude и longitude, из этого всего сформировать пакет и записать в EEPROM, если все успешно получено. Через каждые пять минут, другой таймер, берет данные из EEPROM, кодирует их специальным алгоритмом и шлет их уже в двоичной системе на усилитель антенны. Там сигнал кодируется в LPD диапазон и шлется через радиоканал. Усложним задачу: Устройство автономное в 24 часа минимум. Еще более усложним: Устройство носимое человеком не должно мешать передвижению никак. Еще более усложним, уже и так непростую задачу: Передача данных по GSM-каналу нереальна, так как связи в месте использования нет, а цена конечного устройства должна быть меньше 2к рублей.

Именно тут я наконец начал постигать цзен жесткого ограничения - я намеренно отказываюсь от STM32 в сторону простых 8-ми битных МК. Я уже сто лет не считал байты, не экономил на функциях в поисках более быстрой альтернативы. Есть какое-то в этом всем извращение - урезать все и вся, дабы поместить в пару килобайт памяти... Жаль что современные разработчики забывают об этом.