Недавно с тоски решил вспомнить навыки программирования контроллеров. Все мои старые платы предназначены только для того, для чего были предназначены, так что решил заказать отладочную плату. Так как дух старой школы живет только в контроллерах 8051 (и ничем другим я не успел позаниматься), то его и заказал. Выбор был невелик, так что выбрал что подешевле (а выбрал 8051F380 потому что надо было два порта I2C).
Почта
09.04 заплачено
17.04 отправлено
04.05 получил
What i expected
Того что придется напаивать вилки PLD на контакты входов/выходов;
Того что придется паять или покупать драйвер RS232;
Какой-нибудь документации;
Небольшого чуда, что в комплекте будет программатор (если долго смотреть на фотографию и описание, то можно себя обмануть что будет).
What i got
Не надо напаивать вилки;
Драйвер RS232 есть на плате;
Документы на саморезной болванке все на китайском и столетней давности;
USB serial communication оказалось тем, что и должно быть: уникальным кабелем USB / microUSB;
По плате
— Размер 45х60;
— Стоит стабилизатор 1117 (т.е. до 15В). Питание через разъем «толстой Nokia», через USB (перемычка между VBAT и входом стабилизатора наглухо залита диким количеством припоя), от контактов +5/GND через стабилизатор, напрямую от контактов +3.3/GND и порт программатора. Светодиод на стабилизированном напряжении;
— Стоит драйвер RS232 (3232CBNZ) на два порта, оба выведены на раъем;
— Есть два светодиода и две кнопки на входах/выходах;
— Внешнего кварца нет;
— Запитаться через мой Silabs USB Debug Adapter не получается, потому что контакт +3.3В в вилке на плате находится в другом месте (ошиблись что ли?) — но это можно подпаять;
— Флюс плохо смыт, фуфуфу;
— Маска радикально черная вместо голубой как на фото — дорожки видно плохо (хотя чего их смотреть);
— Пайка контроллера тоже так себе.
Выглядит всё это вот так:
Идущий в комплекте диск весь на китайском. Но он весь забит скаченными с сайтов Silabs и Cygnal бесплатными утилитами, китайскими документами на фирменные отладочные платы и какими-то самодельными инструкциями к IDE. В корне лежат три схемы отладочных плат от этой китайской компании. Схемы на английском, но моя оказалась несколько устаревшей.
Плата подключилась быстро (пришлось додуматься что питание с программатора не приходит), диоды заморгали, консоль через Гипертерминал заработала.
В общем за такие деньги можно брать — альтернативой были платы от WaveShare, но я их не оценил, хотя и внешне они выглядят лучше.
Я из чистого любопытства спрашиваю, контроллер вроде достойный, но в моих реалиях MSP430 и STM32 гораздо дешевле, легче достать, проще с отладкой, функциональней.
Писать — можно, у того же IAR в те времена был неплохой компилятор.
Но с учетом архитектуры — не хватит никакой памяти.
Я писал довольно сложные программы на ассемблере, и мне хватало 2к памяти программ (в то время не было флешь, не было 8051 с бешеным количеством памяти — 2к и УФ стирание), товарищи из соседнего отдела писали на С программы, пожалуй, попроще моих.
Вот они во внутреннюю память не укладывались, и когда я им нарастил внешнюю до максимума — 64к эмулятор ПЗУ пришлось спаять — им и ее не хватило.
И память данных, что основное в данном случае — на С улетает махом, при вызове каждой подпрограммы регистры (все) пихались в стек…
Про быстродействие я вообще молчу.
Вообще тогда я считал, что писать для контроллеров такого типа (и не только такого) надо на ассемблере, при этом зная структуру контроллера.
Муторно, но если ресурсов ограниченно…
Правда, давно этим не занимаюсь, может, что и изменилось — но вряд ли это коснулось достаточно древней штуки, как 8051…
А MSP430 тоже тогда собирался заняться, но все времени не хватало, текучка заела, до сих пор жалею — очень интересный чип, особенно сточки зрения энергопотребления…
К чему я… то ли я-как раз тот парень из вашего соседнего отдела, только в наше время, то ли сейчас проблема с производительностью и объёмом ПЗУ сильно сократилась.
Кстати, если не секрет, чем Вы в данный момент занимаетесь? И почему решили сменить род деятельности?
Интересно, чем эта гонка закончится?
А ехал он после командировки к немцам.
И рассказал: надоим сделать стерилизационный шкаф.
Железо не берем, не про него разговор — берут они готовое ядро на чем то, ценой в зеленую штуку, и пишут простейшую программу на С.
За пару часов.
И стоит потом этот шкаф не по детски, но и потребность в них — хорошо, если 10000 в од, большене надо, даже меньше, скорее.
Они взялись для немцев сделать этот шкаф, а я для этого завода набросал структуру на 8051 и программу.
Структуру — прям в электричке, программу — кода они сделали макет, за пару дней.
Программист, который за пару дней это напишет, у немцев за эту пару дней получил бы столько, сколько я за пару месяцев.
Это были 90-е годы…
В данном случае все зависело от тиража: если бы продажи исчислялись не тысячами, а миллионами — они бы нашли специалиста и заплатили бы ему, а так — зачем?
Тогда их просто не было, тогда едва-едва PIC'и стали доступны, MSP430 — теоретически были, с УФ стиранием — под сотку баксов, флешь отдельно только появилась, как сейчас помню: число циклов записи — 1000.
Скорость записи падала на лазах с каждой записью.
Встроенная флешь программ появилась лет через пять…
Трудозатраты — весьма важный фактор, но при малых ресурсах часто получается наоборот.
А ресурсы у 8051 действительно очень скромные, тем ребятам, про которых я писал выше, я потом немного помогал: они писали на С, отлаживали кусок, давали мне, я ео переписывал на ассемблер.
Боюсь, что писатьсразу на ассемблере было бы быстрее.
В то же время для одного заказа использовали младший SHARC от Analog Devices — тут при написании на С не хватило быстродействия, была цепочка фильтров 6 порядка на частоты в десятки килогерц — не успевал SHARC.
А на его хитром ассемблере — успел, и резерв остался.
На старшем брате 8051 — 8096 — написал БПФ на 2048 точек, ну вот приспичило заказчику — да, вместо пяти минут на С ушло два дня, если бы в аппликейшен не смотрел — за деньбы справился.
секрет. Точнее, не хочу материться.
— еще раз о вредепьянства.
Несколько лет я работал фактически заметно датый, но результат давал неплохой.
Но любое терпение не бесконечно…
Он весьма сильно устарел, но возьмите кристалл, в котором 2к памяти программ и 2к памяти данных — и что там можно написать на С?
Помнится, программа распознавания морзянки — делали для училища связи — понимала совсем неграмотного телеграфиста, у которого все точки разные и плавают солидно, а занимала 240 байт…
Сегодня я так уже не напишу…
Кристалл, на котором не хватает ресурсов для написания на С стоит 1 бакс.
Кристалл, на котором хватает ресурсов для написания на С стоит 2 бакса.
Зарплата программисту за время, за которое он напишет программу на С — 1 бакс.
Зарплата программисту за время, за которое он напишет программу на ассемблере — 10 баксов.
Вопрос: каким тиражом надо выпустить устройство, что бы привлечение квалифицированного программиста стало экономически оправданным?
Вот так примерно все и считается…
Чем масштабнее задача по требованиям вычислительной мощности тем разница в цене заметнее.
К «счастью» фотонные двигатели строить теперь некому да и не зачем…
Напиши не 10 баксов — а 10 тысяч баксов и пересчитай.
С ситемой распознавания образов дела не имел, поэтому говорить не буду.
А вот с быстрым преобразованием Фурье, с цифровой фильтрацией до шестого порядка — имел.
И писал все на ассемблере.
Я специально взял утрировано простой пример, но сама мысль — все зависит от затрат на единицу тиража.
При общих затратах в лимон баксах и выпуске единичного экземпляра этот экземпляр и будет стоить лимон баксов, если выпустить миллион экземпляров — затраты на экземпляр — бакс.
Примерно так и считается все это.
И любую программу можно написать на любом языке программирования, просто некоторые на некоторых писать действительно не стоит.
Невозможно в одном посте раскрыть все области применения языков, их применяемость для той или иной задачи.
Я же не предлагаю винду на ассемблере писать, хотя CP/M-80, к примеру, именно на нем и была написана изначально.
Мир бы перевернулся а производители железа разорились…
Работал с Кейлом, вообще как по мне вещь отличная…
Кейл по моему можно бесплатно скачать, у силабса удобные утилиты для конфигурации… и все фитчеры в апликейшен ноутс уже реализованы…
Есть много плюсов у их микроконтроллеров…
В общем немедленно купил за три доллара какой-то ультракитайский UNO и модулей к нему. Буду разлагаться.
И это хорошо, ящитаю…
Зачем нужно писать на ассемблере если можно просто заменить на более мощный, приведу пример, скажем так обратилась ко мне некая структура, российская военная (не зя разглашать тюрьма) и сказали что нужен:
Универсальный шифратор и дешифратор интерфейса RS-485? суть такова что все что передается должно шифроваться а с другой стороный расшифровываться, что может быть проще?
я молчу про ключики В 512 БИТ, и прочие прелести, а еще система смены ключей, доступ к настройкам через 2 протокола, один из которых ModBus другой их какой то стандарт… ну и много еще таких хотелок, надо сказать что ТЗ на 48 листов, без картинок, и это исключая форм фактора платы под определенный корпус…
Ну ладно я прочитал, от этого сумма (не могу озвучить, но скажем так не плохой средний авто) не стала менее превликательней, даи то что все делается на конкурсе, то есть кто выйграл тот все и забрал, есть шанс отработать в холостую…
Короче самый срам был в конце это список допустимых MCU (контроллеров) он был просто жалок… но в серии были мои любимые меги 8 и 16 версия…
Ну что же неделя бессонных ночей и прошивка с демо версией была готова, захексина и выслана…
и вуаля через месяц приходит мне извещение о заключении подписки, и контракта…
Как я выйграл? просто помимо всего что было напихано в ТЗ, я добавил стандартную консоль, да да обсалютно стандартную консоль которую можно вызвать просто подержав 20 сикунд кнопку сброса устройства (по тз така должна быть, она много функциональная) с нормальным интерпритатором, и даже командами типа? и help Правда не так подробно как это принято нео все же…
ив се это сунул в Atmega8 и еще даже чуть чуть осталось…
Попробуйте это на Си написать? я даже хе хочу знать сколько встанет протокол ModBus а еще второй а консоль?
и да при скорости 128к у меги работающей на 12 мгц еще и уйма времени в остатке…
Си хорошо но иногда просто некуда!
P.s. я четко понимаю что писать на асемблере под винду или SUSE это бред… но для меги, тем более что у неё асемблер проще и лучше некуда… само то
Помню я еще процедуру вывода точки на экран за 64 такта, врианты сверх быстрого умножение с помощью команд ADD или ROL (RL), вывод спрайтов через функции стека POP и PUSH, битву за каждый такт и байт… да сейчас это так глупо…
Не будет малых задач — даже под таблицу умножения потребуется пара гигов памяти…
Все, критичное по времени выполнения, по объему — всегда и только на асме, остальное — смотря на ресурсы.
А на мелких контроллерах ресурсов нет — так что и все остальное на асме :)
Никто сейчас не будет карандашом на бумаге разводить, хотя и можно. Так же и с ассемблером.
P.S. Русский язык же, какой там ASM…