Category: книги

Ноя 16 2015

Книга «Software Defined Radio Handbook», Rodger Hosking

Прочитал книгу «Software Defined Radio Handbook», 75 стр, англ. язык.

Pentek-SDR-Handbook

Собственно, название вводит в заблуждение. Это не столько handbook, сколько рекламный проспект фирмы Pentek, которая выпускает отладочные платы для SDR. Платы, например, такие: 2 канала АЦП по 3,6 ГГц и 4 канала по 1,8 ГГц + Virtex 6. Это для меня несколько неактуально. А теория SDR изложена очень поверхностно, хочется чего-то глубокого.

Окт 02 2015

Драйвер для Linux: первый шаг

Продолжаю эксперименты с Altera Cyclone V. На этот раз объектом эксперимента стал драйвер для той прошивки FPGA, про которую я писал ранее. Сама прошивка простейшая: она просто мигает светодиодами с частотой, которую можно задавать программно. В прошлом посте на эту тему я сделал управление частотой мигания из обычной (user-space) программы, которая получает доступ к физической памяти через функции open(«/dev/mem») и mmap().
Однако такой путь считается «hacky and unsafe». Поэтому следующим логичным шагом должно стать написание драйвера.

Tux-linux-and-ARM-multiplatform-support

Я воспользовался готовым исходником драйвера (ссылка) за авторством Howard Mao (он на самом деле не Howard, а Zhe Hao Mao). Конечно, для того, чтобы разобраться в работе кода, почитал отдельные главы книги Linux Device Drivers (есть русский перевод).

Для компиляции пришлось вытаскивать архив Arrow SocKit 13.1 GSRD Linux отсюда: http://releases.rocketboards.org/release/2013.11/gsrd/src, файл linux-socfpga-gsrd-13.1-src.bsx. Объем архива около 1.1 Гб, но сервер очень медленный, качается несколько часов. Честно говоря, я впервые увидел файл с расширением bsx, оказалось, что это самораспаковывающийся архив. Просто запускаем его и он разворачивается в указанную папку. В ней в папке sources находится файл linux-socfpga.tgz. Его тоже нужно распаковать, естественно. Это и есть как таковое ядро системы, которое нужно указывать при компиляции драйвера.

Однако всё не так просто. После компиляции записываем скомпилированный драйвер blinker.ko на SD-карту, после загрузки Linux пишем insmod blinker.ko и получаем следующее: «blinker: version magic ‘3.9.0-00161-ged01b8c SMP mod_unload ARMv7 p2v8 ‘ should be ‘3.9.0 SMP mod_unload ARMv7 p2v8’«. Не совпали волшебные номерки. Причем версия одна и та же, просто зачем-то к ней приделан какой-то добавочный номер.

Решений может быть три: 1. Скомпилировать Linux именно из этого скачанного исходника (очень неохота) или 2. Подправить номер в исходниках ядра Linux. 3. Использовать команду modprobe с ключом -f, который заставляет систему игнорировать «волшебные цифры».  Однако этот способ почему-то не заработал.
Итак, способ номер 2, подправить номер в исходнике ядра. Данный номер записан в файле /include/generated/utsrelease.h. Исправляем то, что там было, на «3.9.0», и перекомпилируем драйвер. На всякий случай смотрим hex-редактором файл blinker.ko, чтобы убедиться, что волшебные циферки такие, как нужно. Снова записываем драйвер на SD-карту, запускаем insmod, всё прошло гладко. Теперь можно проверить работу драйвера, посылая ему числа от 1 до 15 для управления частотой миганий: echo 1 > blinker — мигает быстро, echo 15 > blinker — мигает медленно. Пока всё. Немного, но путь в тысячу ли начинается с одного шага.

Эксперименты продолжаются.

Сен 11 2015

Книга Mayur Pandey, Suyog Sarda «LLVM Cookbook»

Прочитал книгу Mayur Pandey, Suyog Sarda «LLVM Cookbook», 284 стр, англ. язык.
Хорошая книга, описывает много интересных вещей об архитектуре и внутреннем устройстве инфраструктуры компиляторов LLVM.
Она дополняет другую книгу, «Getting Started with LLVM Core Libraries», про которую я уже писал. Кстати,  Getting Started with LLVM Core Libraries переведена на русский язык и сейчас есть в продаже (я читал в оригинале).

5981OS_LLVM Cookbook

Сен 05 2015

Книга Р. Лав «Разработка ядра Linux» (второе издание)

Прочитал книгу «Разработка ядра Linux», автор Р. Лав.

В книге подробно описывается внутренняя структура ядра Linux.

346326_razrabotka_yadra_linux

 

Книга, без сомнения, достойна прочтения, если вы занимаетесь разработкой модулей ядра.

Авг 25 2015

Книга Р. Лав «Linux. Системное программирование»

Прочитал книгу Р. Лав «Linux. Системное программирование».
В книге описывается ряд системных вызовов для работы с файлами, процессами, временем, сигналами и распределением памяти. Приводятся сведения о работе этих вызовов по стандарту POSIX и по их реализации в ядре Linux.

3a56606f29e71f3a51b8c5fdd1d

Авг 14 2015

Книга B. Stroustrup «A Tour of C++»

Прочитал книгу B. Stroustrup «A Tour of C++», Addison-Wesley, 2013, 180 стр, англ. язык.

51xVLzxX4vL._SX370_BO1,204,203,200_

Книга не является ни учебником по С++, ни полным справочником по С++, это именно «тур», обзор основных возможностей С++11, причем и тех, которые были в стандарте С++98, и новых. Рекомендую прочитать тем, кто знает язык, но хочет усовершенствовать эти знания.

Авг 06 2015

Книга Scott Meyers «Effective Modern C++»

Прочитал книгу Scott Meyers «Effective Modern C++», O’Reilly Media, 2014 г., 336 стр, англ. язык.

c38858a6d6b8

Замечательная книга, одна из лучших, которые я читал по С++.

Во-первых, описывается современный стандарт С++11/С++14. С введением нового стандарта в 2011 году С++ стал совершенно другим, новым языком, как это отмечает и его автор, Б. Страуструп. Книги по С++, изданные до 2011 года, сейчас читать практически не имеет смысла.

Во-вторых, у Мейерса подход к изложению гораздо более практический, чем у Страуструпа. Страуструп описывает язык с формальной точки зрения, перечисляет операторы, конструкции языка, синтаксис. Мейерс рассматривает новые возможности языка с точки зрения их применения на практике, рассматривает «подводные камни» и сложные места, предупреждает об опасностях, которые могут крыться в коде.

Следует заметить, что книга не предназначена для чтения «с нуля», она подразумевает, что читатель знает С++98. Начинающим «с нуля» могу порекомендовать книгу Шилдт «С++ Базовый курс«.

Рекомендую всем, кто любит С++.

Июн 16 2015

Книга Б. Страуструп «Язык программирования С++»

Прочитал книгу Б. Страуструп «Язык программирования С++».

1363474817_6q2alrlwncaa

Книга очень хорошая, это не только справочник по синтаксису языка и библиотеке STL, это ещё и прекрасный учебник с множеством примеров кода. Также в книге есть рассуждения автора о процессе проектирования о организации процесса разработки ПО. Этим он отличается от многих авторов из «академической» среды, таких, как Н.Вирт. Не стоит забывать, что Б. Страуструп в первую очередь программист — практик, работающий в коммерческой организации над большими проектами, а не преподаватель кафедры программирования, чья самая большая программа не превышает ста строк.

Не могу не привести цитату (гл. 23.5):

«В организации, которая обращается со своими программистами как с полными идиотами, вскоре будут работать только те программисты, которые желают и способны вести себя как полные идиоты.»

Июн 15 2015

Цитата

Цитата из книги Б. Страуструп «Язык программирования С++» (гл.23.3) (текст выделен мной):
«Обычный подход… заключается в том, чтобы свести разработку к задачам относительно низкого уровня, подгоняемых под общую грубую схему. То есть идея заключается в том, что создаётся класс быстро обучаемых (дешевых) взаимозаменяемых программистов низкого уровня («кодировщиков») и класс не таких дешевых, но столь же взаимозаменяемых (и, стало быть, столь же малоценных) проектировщиков. Предполагается, что кодировщики не принимают проектных решений, в то время как проектировщики не утруждают себя грубой работой по вниканию в детали кодирования. Такой подход часто приводит к неудаче. Там, где он работает, в результате получаются чрезмерно громоздкие системы с низкой производительностью.

По сути дела, такой системе не хватает механизма обратной связи, чтобы люди учились на чужом опыте. Это растрата человеческого таланта. Создание среды разработки, в рамках которой человек может проявлять разнообразные таланты, развивать новые способности, вносить идеи и радоваться своей работе — это не просто цель, достойная сама по себе, но вещь, приносящая практическую экономическую выгоду.«

Июн 02 2015

Книга Jane Smith «Verilog Coding Guidelines»

Это не совсем книга, впрочем, это просто документ, стилевой гайд по Verilog  фирмы Cisco System.

pic

Объём небольшой, всего 17 страниц. Описывается стиль кода, отступы, именование сигналов и регистров, и т.п.

Лично мне не вполне нравится тот стиль, который описан в документе, например, документ рекомендует выравнивать все декларации сигналов, комментарии и т.п. «в столбик», да ещё с использованием табуляций.  Но наличие любого стайлгайда лучше, чем отсутствие такового, тем более при командной работе.

Любой стиль кодирования есть всего лишь отражение чьих-то вкусов, не существует «единственно верного» стиля.

Такой документ, даже если вы придерживаетесь другого стиля кодирования, может послужить образцом для составления вашего собственного стилевого руководства.