32bit_me: (Default)
Прочитал книгу "An Introduction to GCC for the GNU Compilers gcc and g++", Brian Gough, 116 стр., англ. язык.



Книга является кратким введением в GCC, рассмотрены основные опции командной строки gcc и g++ и некоторые утилиты из binutils.
32bit_me: (Default)
Прочитал книгу B. Lewis, D. J. Berg "PThread Primer. A Guide to Multithreaded Programming", 370 стр., англ. язык.



Книга содержит очень подробное описание стандарта pthread, его сравнения с  Win32 API и OS/2, и описывает множество нюансов работы многопоточных приложений.
32bit_me: (Default)
Закончил курс на Stepik.org, получил сертификат:



Курс довольно простой, и затрагивает только самые основы. Но на Stepik.org есть и гораздо более сложные курсы.
Курс требует выполнения всех заданий в срок. Каждое задание, это небольшая программа, исходник отправляется на сервер Stepik, там компилируется и тестируется. Задания сами по себе простые, но с некоторыми заданиями могут возникнуть сложности, если вы не учли каких-то нюансов, и тест из-за этого не прошёл. В таких случаях рекомендую читать комментарии тех, кто уже прошёл это задание. Там не будет готовых ответов, но могут быть ценные рекомендации.
В целом, было интересно и полезно.
32bit_me: (Default)
Прочитал две статьи:
1. Gerard J. Holzmann. The Power of Ten – Rules for Developing Safety Critical Code1, 4 стр. англ. язык.
2. JPL Institutional Coding Standard for the C Programming Language, 22 стр. англ. язык.

Обе статьи посвящены стандартам кодирования при разработке надёжного ПО, используемым в Jet Propulsion Laboratory, NASA. Эта организация, например, разрабатывала марсоход Curiosity, работающий на Марсе с августа 2012 года по сей день без единой ошибки.
32bit_me: (Default)
Прочитал статью С.Н. Зыль "Особенности применения языков программирования С и С++ при кодировании для систем ответственного назначеия", 4 стр., русск. язык.
В статье рассматриваются некоторые особенности применения стандартов IEC 61508, MISRA C и MISRA C++.
32bit_me: (Default)
Прочитал статью "Главный вопрос программирования, рефакторинга и всего такого".

Статья представляет собой сборник из 42 примеров с разбором ошибок, найденных в реальных проектах. Все эти проекты являются open-source, и проверялись с помощью статического анализатора PVS-Studio.
Наверное, это прекрасный анализатор, но он коммерческий, причем даже цен на сайте нет. Однако же использование статических анализаторов может быть полезно, и я думаю, надо освоить какой-либо бесплатный статический анализатор.
32bit_me: (Default)
Прочитал "pthread tutorial", Peter C. Chapin, 29 стр., англ. язык.

В очень маленьком объеме излагается вся существенная информация, которую нужно знать по pthread.
32bit_me: (Default)
В блоге PVS-Studio можно найти много примеров ошибок, совершаемых программистами, и много рекомендаций о том, как их избежать (http://www.viva64.com/ru/b/0391/).

Первый совет в этом документе: не берите на себя работу компилятора. Не оптимизируйте вручную то, что и так будет оптимизировано. В качестве примера приведён код из MySQL, в котором программист вручную развернул цикл, допустив при этом ошибку. Далее в статье написано, что если написать эту же функцию через цикл, то компилятор, скорее всего, её развернёт.
Давайте проверим это с помощью онлайн-компилятора. Я скопировал исходники функции из статьи, лишь немного подправив их так, чтобы они компилировались без дополнительных файлов.
Read more... )
32bit_me: (Default)
Прочитал материал по Serial Audio Interface, который встроен в микроконтроллеры STM32, объем 27 стр. англ. язык.



SAI - это некий обобщенный интерфейс, который может работать в разных режимах, как разные аудиоинтерфейсы, например I2S, SPDIF, AC97 и другие.
32bit_me: (Default)
Прочитал книгу Rob Krten "The QNX ® Neutrino® Cookbook: Recipes for Programmers", 277 стр., англ. язык.



В книге рассматриваются примеры различных менеджеров ресурсов для QNX: Web Counter - файл .gif, формирующий изображение числа обращений к нему, ADIOS — Analog/Digital I/O Server - сервер ввода-вывода, работающий со специализированными платами ЦАП/АЦП для шины ISA, RAM-disk Filesystem - название говорит само за себя, TAR Filesystem - специальная файловая система, отображающая содержимое tar-файлов, обзор файловых систем в QNX и отдельный параграф, посвящённый файловой системе /proc.
32bit_me: (Default)
Немножко поигрался с онлайновым компилятором, про который я уже писал, и обнаружил немало интересного.
Во-первых, поддерживаются не только те процессоры, которые перечислены в списке, а вообще любые, которые поддерживает компилятор.
Во-вторых, можно выводить промежуточный код компилятора.
Всё это возможно благодаря тому, что мы можем сами задавать аргументы командной строки компилятора. Итак, выбираем из списка компилятор "x86-64 clang 3.9.0", и вводим в левое окно какую-нибудь функцию, например:

int foo(int x) {
    return !!x;
}


Read more... )
32bit_me: (Default)
Написал вторую часть статьи по STM32CubeMX для хабра. Ссылка.



Как всегда, заходите, плюсуйте, комментируйте.
32bit_me: (Default)
Прочитал статью Paul N. Leroux "Real Time or Real Linux? A Realistic Alternative", 12 стр., англ. язык.
Статья посвященную сравнению Linux и QNX с точки зрения возможности построения систем реального времени. Как известно, существует RTLinux, операционная система реального времени, в которой Linux выполняется как вытесняемый процесс. В статье проводится сравнение такого подхода с архитектурой ОСРВ QNX Neutrino.

32bit_me: (Default)
Если вы сомневаетесь, как будет оптимизирован тот или иной исходник, и хотите увидеть результат компиляции для разных платформ и разных компиляторов, то вот исключительно полезная ссылка: https://gcc.godbolt.org/. Компиляторы gcc, clang, icc разных версий, платформы x86-64, arm, arm64, mips, ppc. Язык С++.
32bit_me: (Default)
Посмотрел трансляцию вебинара по GDB от [livejournal.com profile] dlinyj.



Вебинар понравился и был мне очень полезен, я хотел бы очень поблагодарить автора.
Однако я не очень люблю смотреть видео на такие темы, потому что нельзя одновременно проделывать всё это самому, текст на видео плохо видно, и я теряю нить повествования минут через десять. Лучше всего читать книги.

Обычно я отлаживаю программы с помощью интерактивного отладчика в IDE (если есть возможность) и с помощью printf/std::cout (во всех остальных случаях). Но надо осваивать и работу с gdb "вручную", поэтому у меня возникает вопрос, не освещённый в вебинаре: насколько gdb дружит с C++? Потому что у меня были проблемы при попытке отлаживать большой проект на плюсах в Qt Creator, а там используется именно gdb.
32bit_me: (Default)
Прочитал книгу "Cortex A Series. Programmer's Guide", 442 стр., англ. язык. Книга выпущена компанией ARM, и является описанием структуры и системы команд микропроцессоров семейства Cortex A с архитектурой ARMv7-A. В основном книга описывает процессоры Cortex A5, Cortex A8 и Cortex A9, т. к. процессоры с ядром Cortex A15 на момент написания книги (2011 год) ещё не были доступны на рынке.



Книга исключительно полезна тем, кто интересуется, как устроен и как работает процессор, при этом дается подробное описание работы MMU, кэшей, конвейера, предсказателя переходов, механизмов межядерного взаимодействия и обеспечения когерентности кэшей. Всё это есть не только у ARM, а и у любого современного процессора вообще, поэтому почитать полезно всем, кому интересны такие темы.
Есть, разумеется, много специфичной для ARM информации, включая описание всех команд, описание блока NEON и других специальных блоков, которые могут быть включены в состав процессора Cortex A (по желанию производителя конкретного чипа).
Очень рекомендую.
32bit_me: (Default)
Прочитал M. R. Sweet "Serial Programming Guide for POSIX Operating Systems", 45 стр., англ. язык. Это, конечно, не книга, а скорее, брошюра по объёму, но содержит всю нужную информацию о функциях, связанных с последовательным портом.

32bit_me: (Default)
Написал пост на хабр, посвященный STM32CubeMX: https://habrahabr.ru/post/310742/.



Кто хочет и может, заходите, ставьте плюсики, пишите комментарии.
32bit_me: (Default)
Прочитал руководство  "QNX Neutrino Device Drivers. Character Devices", 49 стр., англ. язык.



В руководстве описано устройство драйвера последовательного порта в ОСРВ QNX Neutrino.
32bit_me: (Default)
Поздравляю всех причастных.

Profile

32bit_me: (Default)
32bit_me

July 2017

S M T W T F S
      1
2345678
9101112131415
16171819202122
232425262728 29
3031     

Syndicate

RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Sep. 25th, 2017 09:41 am
Powered by Dreamwidth Studios