четверг, 21 февраля 2019 г.

Игра

Все мы играем в разные игры. Что же нас в них привлекает?
  • Победа. Что ни говори, а побеждать приятно. Это сладкое чувство победы. Оно возникает на уровне инстинктов, оно у нас в крови.
  • Развитие. Жизнь — это развитие и развитие — это жизнь. С детства мы развиваемся, получаем новые знания от родителей, от учителей, пусть даже иногда против нашей собственной воли. В этом процессе мы накапливаем определенные навыки, нужные для решения определенного круга задач.
  • Любопытство. Это то что заставляет нас развиваться и открывать новое.

среда, 8 октября 2014 г.

Скачать торрент или слишком длинный путь к файлу

Не так давно встала предо мной задачка скачать файлики, исключительно для личного ознакомления. И я вполне успешно провел эту операцию на моем новеньком классненьком смартфоне с android 4.4 (KitKat). На смарте все файлы нормально открываются, проигрываются.

Ну и раз уж скачал, то неплохо бы и на комп перекинуть. Подключаю смартфон через usb по протоколу MTP (как флэшка он подключиться, увы, не может), нахожу папочку, перетаскиваю её на рабочий стол и ... копирование зависает на неопределенно долгое время со словами "определение размера файлов". Пробовал несколько раз разные папочки — та же история.

Потом решил, раз гора не идет к Магомету... В общем решил прочитать SD-карту через картридер. Все нормально, папочку нашел, пытаюсь скачать — не получается. И тут меня осенило — а что если переименовать эти длинные многословные названия папок? Переименовал и всё побежало, скопировалось без проблем. И по MTP тоже стало нормально скачиваться.

Вот так-то, даже в современной windows 7 остались атавизмы в виде ограничения длины путей (260 символов, как мне помнится), а в андроиде нет или этот порог там больше.

среда, 29 января 2014 г.

Сжатие динамического диапазона звука

Недавно приобрел платку STM32F0308-disco, решил начать изучение ARM-процессоров с простого. Как положено помигал светодиодом и стал изучать встроенные в мк устройства такие как каналы DMA, таймеры и АЦП.

В микроконтроллере установленном на плату присутствует АЦП разрядностью 12 бит. Для хранения звука использовать все 12 бит неоптимально, так как передаточная функция линейна. Стоит использовать сжатие динамического диапазона, есть такие форматы как u-Law и A-Law используемые в телефонии.

Я искал различные варианты сжатия, легко реализуемые на микроконтроллерах и наткнулся на данную статью.

По примеру написал свои пару функций применимых к микроконтроллеру. Они преобразуют 12 бит в 8, используя формат похожий на плавающую точку: 1 бит знаковый, 3 - смещение(показатель степени) и 4 значение(мантисса).

вторник, 10 сентября 2013 г.

Реконфигурируемые структуры

Довольно давно я стал задумываться о архитектуре многоядерных компьютеров. Мультиконвеер можно организовать из множества одинаковых процессоров расположенных в виде решетки. Каждый процессор имеет свою локальную память и узел коммутации с возможностью транзитного прохождения через него сигнала без задержек. С помощью системы коммутации между процессорами можно реализовать различные топологии обработки данных, звезду, пирамиду или довольно сложный граф на основе поставленной задачи. Роутинг может быть статическим или динамическим. При динамическом путь прохождения сигнала от источника до приемника ищется непосредственно при отправке запроса, для потока данных может открываться долговременное соединение, для повторяющихся запросов кэшируются пути.
Периферийные процессоры соединены с унифицированными модулями ввода-вывода через которые осуществляется обмен данными с внешней памятью и другими устройствами.
Похожая реализация используется в процессоре Tilera.

Позднее я стал изучать программируемые логические интегральные схемы (ПЛИС). На данный момент есть несколько процессоров общего назначения таких как MIPS, ARM, x86 реализованных на основе ПЛИС.
Примеры можно найти на http://opencores.org/.
Думаю что будущее вычислительных систем за динамически создаваемыми схемами внутри ПЛИС(FPGA). Под конкретную задачу - своя схема. Конфигурация в ПЛИС должна храниться в быстрой SRAM памяти для ускорения загрузки, кроме того, должна быть возможность в частичном обновлении схемы "на лету".

Конечно, технология программирования такой системы очень сильно отличается от традиционной. Нужны специальные системы для адаптации и преобразования существующего ПО.

А в последнее время нашел несколько статей по этой теме. Видно что активно ведутся работы в этом направлении.

четверг, 24 января 2013 г.

Сложное или простое?

Программирование... Множество языков, множество областей применения.
Языки отличаются разным уровнем абстракции, степенью похожести на человеческий язык или степенью непохожести на язык машин.
Самый "далекий" от человека язык - ассемблер. В нем происходит простая замена определенных лексем(элементов языка) в команды процессора.(Процессор - это такой кусочек кремния с очень сложной структурой, состоящей из множества логических элементов и связей между ними.)

Схема реобаса

Прорабатывая эту тему наткнулся на эту статью, жаль я мало имел дела с AVR-контроллерами.

О последовательных интерфейсах

Сейчас в компьютерах есть по крайней мере 3 последовательных интерфейса: USB, SATA и PCI-e тоже является набором последовательных линий.

Эти интерфейсы на физическом уровне представляют собой две дифференциальные линии, каждая линия согласована по волновому сопротивлению с нагрузкой и сигнал в ней передаётся только в одну сторону.

На программном же уровне каждый интерфейс имеет свой протокол в зависимости от длины линии, помехозащищенности канала.

Думаю в скором будущем производители придут к единому стандарту интерфейсов для коммуникации компонентов внутри компьютера и с внешним миром. Хорошим кандидатом на эту роль считаю LVDS. У процессора будет достаточно большой пул унифицированных последовательных портов с возможностью объединения в группы подключенные к одному устройству для увеличения пропускной способности. Через эти интерфейсы к нему будет подключаться практически всё: RAM, ROM, монитор, звуковой кодек и другие периферийные устройства. Как раньше в модемах будет стандартный низкоскоростной протокол, который поддерживают все устройства. С помощью этого протокола при включении устройства договариваются о методе передачи, шифровании, количестве линий, определяется тип устройства.

Такие вот мечты о светлом будущем разработчика.