Система eCos очень маленькая и нетребовательная, ей хватает сотни килобайт. ДОС тоже не всю дискету занимает, command.com меньше ста кило.
Как видно по картинке, после включения: из флэша запускается бутлоадер(32кб), за ним идёт архиватор, который разворачивает из флэша архив(LZMA) в память, и передает управление туда. Больше флэш не нужен, вся работа идёт в оперативке.
Эту систему за 10 лет
ковыряло множество хакеров, их следов полно по интернету.
Например, один из победителей хакерского фестиваля именно на этой SoC от модема sp5101 победил, взломав прошивку. Он получил доступ в систему, слил фулфлэш, разархивировал его, дизассемблировал в IDA, включил telnet, заархивировал и прошил обратно, получив в итоге ssh извне.
Есть выдранные
исходники шелла. Есть улучшенные и исправленные прошивки в bin формате, готовые к заливке. Меня очень заинтересовали прошивки с версиями той же ОС но с включенной
в них lua. Это гораздо удобнее шелла, это программирование в интерпретаторе.
ОС eCos проста. У неё нет файловой системы. То что выглядит как она - не является ею. С помощью команд ls, cd, dir, help, pwd, man - мы перемещаемся по меню команд и получаем подсказки. Оно хоть и выглядит как файлы, но на самом деле это команды. Команды разбиты на группы - как бы каталоги - удобно. Сделанные в памяти изменения нельзя сохранить, после перезагрузки они пропадут. (То есть нет, можно наверное записать сотню байт в конце флэша, есть там ещё место, заполненное FF, но вытаскивать в память их надо будет вручную, и неизвестно, как это скажется на контрольную сумму). Похож на unix потому, что соответствует стандарту
POSIX.
(upd: во флэше находится две копии прошивки, с контрольными суммами, если при загрузке что-то идет не так - происходит переход ко второй копии. так что хвост флэша можно использовать. и вообще безопасно прошиваться.)
В eCos есть: системные команды, чтение-запись оперативной памяти, работа с флэш-памятью, управление потоками(процессами). Да, там даже нельзя командой запустить программу. Просто в голой системе, если решиш ввести и написать программу, придется опускаться на самый нижний уровень - вводить шестнадцатиричные коды прямо в память и регистры, а потом управлять потоками и процессами. Практически это программирование вручную, поскольку текстовый редактор отсутствует. В таких ОС обычно и не работают на самом устройстве, а пользуются кросс-средствами на другом компьютере. На нём всё пишут, отлаживают, а потом заливают в устройство, где оно и исполняется. Типичное Arduino.
eCos находится в дальнем родстве с unix-системами, у ранних версий FreeBSD она позаимствовала tcpip-стек. Где-то в молодости пересекалась с RedHat частью коллектива разработчиков. Сейчас у eCos (бесплатной) есть платный брат eCosPro, продвигаемый Британской фирмой
eCosCentric. Они занимаются переносом программ в eCos,
например из VxWork.
На русских спутниках "
Чибис-М" использовалась операционная система, основанная на eCos.
(по результатам работы
зафиксирован резонанс Шумана; обнаружено, что линии электропередач влияют на погоду, и многое другое)
На шаттле Эндевор в спектрометре стояла ОС eCos. "Эндевор" улетел и оставил спектрометр на МКС.
Ну, в общем, понятно где используется - там где происходит быстрая обработка данных в реальном времени. На чипе стоят DAC и ADC, работающие в связке с тюнером, так вот в модеме они управляют передачей данных со скоростью до 5мбит/сек, а несущая частота меняется командой от 1 до 500 мегагерц. Именно она сканировалась при включении модема. Кабельный модем работает на коаксиальных линиях кабельного ТВ, где интернет передавался на частотах телевизионной связи. Поэтому его и хакали в своё время, можно было получить халявный интернет, изменив мак-адрес модема.
upd: проделав все безопасные операции и изучив то, что есть(до тошноты), я принялся за потенциально небезопасные вещи. наткнулся на принципиальные невозможности и ограничения. потом осознанно начал пробовать вещи с возможным необратимым эффектом. я уже говорил, что в флэш-памяти хранится две копии (по 983040 байт = F0000), одна из которых загружается в оперативку, я прошил одну через tftp, потом скопировал из старой в новую и затер записанное. потом прошил в другую, модем заработал с новой прошивкой. на вебморде кое-что изменилось. но пропал коннект с компортом. в работающей по умолчанию прошивке теперь нет последовательного порта - вероятно заблокирован. дальнейшие действия невозможны без JTAGа, с чем я себя и поздравляю. все равно бутлоадер (noisy bootloader hacked) без джитага не прошить через сериал-порт. Не дает система в этот регион флэша ни писать ни копировать. и некоторые команды в изначальной прошивке вообще не вкомпилированы, нет в ней ничего для управления процессами (команды есть, но не работают). запустить свою программу было бы невозможно в принципе.
Следующая остановка - JTAG.
По ходу изысканий, обнаружил, что оригинальный Мотороловский модем 5101 содержал прошивку с VxWork, там была и поддержка файловых систем, и гораздо больше команд, в том числе запуск на выполнение исетевые службы. На эту тему есть
PDF со скриншотами. Если бы найти те прошивки... Но вероятнее всего - прошивка попала под запрет на экспорт и её срочно переписали на суррогатный eCos, возможно даже особо не заморачиваясь, автоматически. А что на скорую руку не смогли, то отключили. Поискал по торрентам - есть в мире парочка энтузиастов, до сих пор копающих эту прошивку. Искать по торрентам сейчас лучше всего в
http://nigma.ru или на пират бэй. Так вот, один из этих двоих нерегулярно выкладывает но торренты архив прошивок от модемов, там сотня мегабайт, но качается медленно - пиров мало 1-2.