Ссылка: http://gridder.cluster.edu.ioffe.ru/~diver/geoblog/blogs/media/blogs/geoblog/toolchHOWTO.pdf
Даны подробные инструкции по сборке и установке glibc, компилятора и утилит под архитектуры arm-elf и arm-linux.
Must have.
На самом деле операция деления в архитектуре ARM отсутствует. По этой причине везде, где в программе используется деление или остаток от деления компилятор неявно подставляет вызов функции эмулятора деления. Эмуляция деления - это кусок кода, который содержит циклы и и выполняется никак не меньше сотни-двух тактов. Так что, от деления хочется вовсе избавляться, когда есть возможность, и уж точно не заниматься делением при обработке данных. Замена деления...
Нашей операционной системе понадобился календарь. До сего момента у нас был штамп времени -- число секуд с момента включения, а тут вдруг понадобилось хронологический порядок человеку демонстрировать в понятных для человека условных единицах...
Файловая система опирается на понятие "блочного устройства". Не важно какой природы носитель, круглый или квадратный, жесткий или твердый, крутится или нет, -- все они для файловой системы равны. Драйвер должен уметь сохранить и прочитать один блок с носителя. Блок по стандарту равен 512 байт. Современные микросхемы NAND Flash в одном корпусе, в одной микросхеме, содержат до 4-х кристаллов памяти с независимым управлением, у каждого кристалла свой буфер обмена. В такой конфигурации можно начинать запись на второй кристалл не дожидаясь завершения процедуры записи или стирания на первом кристалле.
Файловую систему отлаживать в аппаратуре сложно, поскольку от неё будет зависеть жизнеспособность устройства. Так что, пришлось нашим написать полнофункциональный эмулятор файловой системы. Эмулятор - это приложение для Пк под управлением Windows или Linux. Приложение построено как архиватор, оно создает архив, образ диска, в формате нашей файловой системы. Затем архив можно распаковать, поизучать его содержимое и внутреннюю структуру. В конце концов смоделировать множество тестовых ситуаций и поизучать её поведение под отладчиком.
Файловая система -- это вам не просто так. Система FAT саморегуляцией не обладает, а как следствие накапливаются фрагментированные файлы. Множество фрагментов замедляет работу файловой системы. В нашей системе мы уделяли отдельное внимание вопросам саморегуляции на разных уровнях.
Решения... Рассказать в двух словах не получается.
Сегодняшний день -- день рождения новой ФС. Предлагаю отметить его ликованием. Наконец-то мы завершили процесс разработки и уже не осталось сомнений -- файловой системе быть!
Наши программисты, когда требуется создать уникальный идентификатор вводят DEADBEAF - есть такое шестнадцатеричное число (некоторых завораживает). Пока отлаживал файловую систему обнаружил BAADF00D - таким числами были заполнены не инициализированные блоки. А заодно так стал называться уникальный идентификатор тома, потому что его никто не назначал. Странный юмор у программеров.
Говорите ли вы на языке Хекс? Оказывается можно в шестнадцатеричных кодах выражать слова... DEFEC8ED -- тоже ничего себе обозначение для метки тома. За пять минут держась за кружку с растворимым кофе сочинил BADC0FFE. Думаю ничего хорошего на таком языке выразить не удастся. NAN
Протокол нужен для того чтобы его соблюдать... В ходе реализации драйвера мы много времени потратили вовсе не на реализацию, а на решение проблемы почему при отказе от обработки команды, которая в спецификации USB значится как опциональная возникает задержка на подключение устройства. Протокол обязывает останавливать поток признаком Halt и тут же сообщать о готовности дальнейшей работы. Только в нашем случае почему-то Винда выжидала паузу в 10 сек. В тоже время, Linux не спрашивал ничего лишнего, на что мы не могли бы ответить. Мы поизучали логи флешек. Флешки почему-то вообще не используют Halt прежде чем ответить с нарушением ожидаемой длины. В итоге сработало решение отвечать "пустышкой"-ноликами на любой опциональный запрос. Видимо винда никак не анализирует эти запросы.
Реализовали аппаратно, на FPGA, кодирование бинарного потока для H.264. Получилось 170 Мгц, блок 4х4 кодируется за 12-24 такта, на такой скорости можно паковать не менее четырех потоков HDTV одновременно.
Результат преобразования DCT после этапа квантизации кодируется в битовый поток методом CaVLC и дальше его остается только уложить в файл или передать по сети. Мы делаем полностью аппаратную реализацию процесса упаковки видео.
Наши разрабатывают сопроцессор для упаковки видео в формат H264. Реализованы пока только отдельные составные части кодека, их ещё предстоит собирать воедино. НО уже сейчас можно похвастаться параметрами. Сделали преобразование DCT, позволяет паковать от 4 до 20 потоков видео в разрешении HDTV одновременно.
Мучаю звуковой кодек ADAU1361. В качестве сырья для поставки звука в микросхему использую интернет-радио.
Вот по радио прозвучал БГ, вот я оцифровал кусочек песни и положил его в оперативку. Передёргиваю питание устройству и пытаюсь "проиграть" неинициализированный ранее кусок памяти. Но только вместо цифрового шума там до сих пор лежит БГ! Оказывается, оперативка вполне нормально переживает трёхсекундное отсутствие питания. То ли святым духом питается, то ли на остатках конденсаторов...
ЗЫ. В карбюраторе! Конденсат! В документации! Опечатка!
Все в нашей лаборатории по-разному борются с перегревом мозга. Евген бегает курить каждые 5 минут, Фред читает ЛОР, а я пишу тупые статьи и делаю прочие глупости.
Одна из недавних глупостей - удаление с моего винчестера каталога с важными данными. Чего-то почудилось, что я удаляю бэкап, а это оказался единственный экземпляр.
В мире наблюдается бум, повышенный спрос на цифровое видео. Всем почему-то надо HDTV. Разрабатывем аппаратные кодеки H.264, изучаем стандарты и интерфейсы HDMI, потому что заказчики интересуются. В какой-то момент настало понимание проблемы. Придумали черный ящик с четырьмя интерфейсами HDMI, Ethernet и HS USB, без единой кнопки.
Иду по проспекту, считаю камеры уличного наблюдения. Туда шел на домах насчитал 5 камер. В вестибюле станции метро Василеостровская, маленькая такая станция, вечно переполненная, насчитал 8 камер. На той стороне улицы ещё две камеры, внизу целых 16 камер. Всё это аналоговые камеры.
Нужен Федеральный закон, запрещающий запись и видео наблюдение частной жизни.
Файловую систему обозвали rfs потому, что для роботов, для железных дорог и для бешеных мобильных видео систем. Все эти слова на букву R, так что получилось в сумме R3-FS. R3 -- это код проекта под которым в нашей лаборатории изобретаются электронные штуки и ПО для огромных человекоподобных роботов. В данном случае мы взялись делать глаза с распознаванием образов. А за глазами потянулись видео архивы на Flash носителях.
Нам понадобилась файловая система для контроллеров. Файлы должны создаваться контроллером и представляться через драйвер USB mass-storage device в ПК. Тут особого выбора нет надо чтобы представлялись исключительно файловой системой FAT. FAT в этом вопросе - стандарт де-факто. Вы можете закатать ещё несколько файловых систем, но только FAT будет поддерживаться везде, где есть USB.