четверг, 21 июня 2012 г.

Мысли о мышлении

Некоторые коллеги избегают подобных публикаций, а мне в своё время эта книга помогла лучше понять себя и свои мотивации.
Вот этот труд: http://progstone.ru/kartostroenie.htm .
Именно к построению карт относятся многие из моих Записок. Именно к нему относится вопрос "How it's made?"

зачем нужны "сопроцессоры" в телефоне?

(Уже скоро год, как в черновиках лежит тема "Как устроен телефон". Эта тема связана с моим желанием разобраться, как он устроен и как работает (в деталях). Надеюсь, что в обозримом будущем, таки, напишу, хотя бы коротко, в чём успел разобраться.)

По поводу "сопроцессоров" — это я так назвал некоторые относительно независимые элементы устройства, которые работают как бы сами по себе.
Вот некоторые примеры:
  1. GSM-модуль. Этот модуль представлять не надо. Он есть у любого GSM-телефона. Скажем, в старом каком-нибудь телефоне (глупофоне), например Motorola C115 он является единственным CPU и выполняет функции как GSM-терминала (общааясь с GSM-сетью), так и функции пользовательского интерфейса.
    Мне кажется, это и является причиной ограниченной функциональности, т.к. real-time-задачи GSM плохо сочетаются с произвольными программами, которые хотел бы запускать пользователь.
    "Рулит" этим процессором RTOS, например, VxWorks.
    Ещё добавлю, что иногда китайские производители телефонов упоминают этот модуль, как "второе ядро процессора" в такой формулировке: "Dual core 65nm ASIC: ARM1176JZFS 650MHz + ARM1176JZS 507MHz", хотя ничего, кроме GSM-стека там "не крутится". Впрочем, технически, это действительно второй процессор на SoC-е.
  2. GPS-модуль. Во многом находится в том же положении, что и GSM. (Конечно, GSM — это не только собственно GSM: это 3G, CDMA и т.п.)
  3. Вспомогательные DSP. Тут довольно большое разнообразие. DSP нельзя назвать универсальным CPU, но они так же относительно независимы, то есть работают в своём режиме и со своими программами и данными. В конкретных моделях примером могут послужить различные "железные" кодеки, такие, как H.264 и AAC.
Модули работают независимо, и потому имеют некоторые особые аспекты:
  1. Как правило, имеют собственные программы, которые берутся из знакомых нам "прошивок". Если Вы пользователь Linux, то познавательно взглянуть в папку /lib/firmware/. На настольном линуксе у меня там сотни файлов, а на Nokia N900 целых 8!
  2. Эти прошивки отнюдь не являются частью Linux, и чаще всего бывают проприетарными. От этого, до недавнего времени, страдал проект OpenMoko, в котором, кажется, единственной закрытой частью была именно GSM-прошивка. Однако проект osmocomBB, вероятно, закроет эту проблему.
  3. Взаимодействие CPU с этими модулями осуществляется через электрические протоколы низкого уровня (гораздо ниже, чем, например, PCI), к примеру I²C и 1-wire, через GPIO-контакты SoC. В некоторых случаях это взаимодействие на уровне Serial line, как с GSM и GPS.
В целом, наличие этих модулей, с одной стороны, увеличивает цену конечного продукта, а с другой — увеличивает его привлекательность для потребителя. К примеру, кодек H.264 разгружает центральный процессор и проделывает ту же работу, например, по декодированию видео, потратив значительно меньше энергии. По этому поводу у Apple и Adobe был даже небольшой скандал.
Поддержка функциональности этих модулей в Linux часто отстаёт: как правило, гораздо легче "завести" процессор и экран, чем всю периферию.

Манжеты не хватило бы, чтобы вместить весь этот текст. Так что "закругляюсь".

среда, 6 июня 2012 г.

о пользе netcat &Co

Внезапно понадобилось получить сетевое соединение по X11 от коммерческого юникса. Однако, из соображений безопасности TCP-порт X-server-а закрыт. Как быть?
Первый порыв — "где там эта опция включается"? Но это не очень-то практично: чтобы получить возможность на 5 минут, придётся выходить и входить в сеанс.
Но есть такой чудо инструмент: netcat. Это то же, что cat, но работает не с файлами, а вернее, не только с файлами, но и с сетевыми сокетами. socat — это его "внучек". С ним решение простое и элегантное:
socat UNIX:/tmp/.X11-unix/X0 TCP-LISTEN:x11
Рекомендую!