32bit_me: (Default)
Прочитал руководство "How to Use WinUSB to Communicate with a USB Device", 24 стр., англ. язык.
Краткое введение в использование универсального драйвера WinUSB.
32bit_me: (Default)
Прочитал "Safety Manual for RM48x Hercules ARM-Based Safety Critical Microcontrollers User's Guide", 121 стр. англ. язык.
Микроконтроллер семейства TI Hercules на ядре ARM Cortex R предназначен для построения систем, сертифицированных по стандарту функциональной безопасности IEC 61508 (SIL3).
32bit_me: (Default)
Прочитал интересный материал: Pooja Gupta "LLVM Backend Development for ReISC Architecture", 52 стр., англ. язык.

Это не книга и не статья, это магистерская работа студентки из университета Дели. В небольшом объёме изложены ключевые моменты работы компилятора. Разумеется, то же самое можно прочитать в других местах, но для этого придётся читать много разных источников.
Как ясно из названия, описывается компилятор для архитектуры ReISC. Однако подробной информации по этой архитектуре нигде нет. Есть сведения, что это ядро фирмы STMicroelectronics для 32-битного low-end микроконтроллера со сверхнизким портеблением. Видимо, в производство оно не попало.

В конце работы автор приводит сравнение нескольких результатов компиляции, полученных с помощью LLVM и GCC. Разбираться в них детально я не стал, т.к. для этого надо подробно разбирать ассемблерные исходники со справочником по системе команд. К сожалению, в работе нет исходников (и даже фрагментов) самого бэкенда. А это было бы очень интересно почитать.

В целом, впечатляет, студенческая работа такого хорошего уровня. У нас 99% студентов и 95% специалистов с опытом работы в этой теме просто не разберутся. А девушка из Индии не только разобралась, но и написала хорошую работу на английском языке.

Для техже, кто хочет разобраться в работе компилятора, знающие люди рекомендуют бэкенд LANai. Тоже загадочное ядро, упоминаний про него почти нет. Вроде бы, оно разработано компанией Google для своих внутренних нужд, архитектура основана на книге [1]. Какой-то документации найти не удалось. Тем не менее, компилятор доступен в исходниках, и, говорят, очень несложен и хорош для изучения.

[1]. David E. Culler, Anoop Gupta, and Jaswinder Pal Singh. 1997. Parallel Computer Architecture: A Hardware/Software Approach (1st ed.). Morgan Kaufmann Publishers Inc., San Francisco, CA, USA.
32bit_me: (Default)
Прочитал руководство "Getting Started with RTEMS", 26 стр., англ. язык.



Руководство посвящено установке тулчейна и сборке операционной системы RTEMS.
 
32bit_me: (Default)
Прочитал книгу "Язык программирования Rust", 340 стр., русск. язык.



Книга является переводом на русский язык официального учебника по Rust.
Итак:
- Rust - компилируемый язык, без всяких виртуальных машин и прочего. 
- Rust строго следит за безопасным использованием данных, причем весь контроль производится во время компиляции и не приводит к накладным расходам при выполнении программы.
- многопоточность есть, и реализуется через вызовы ОС, а не как в Go.
- нет полноценного ООП, но есть некоторые элементы ООП
- есть лямбды
- есть возможность вызова функций С и из С.
- реализован как фронтенд к LLVM, то есть можно прикрутить к чему угодно, к любой аппаратной платформе
- можно делать свои расширения синтаксиса (в виде плагинов к компилятору)

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


32bit_me: (Default)
 Прочитал книгу  Дж. Макконнелл "Основы современных алгоритмов", 368 стр., русск. язык.



Классический учебник по алгоритмам, но без больших и сложных доказательств. Основной упор сделан на рассмотрении самих алгоритмов, а не на математических выкладках. Рассматриваются как основные классические алгоритмы (сортировка, поиск, алгоритмы на графах и т..п.), так и параллельные алгоритмы.

32bit_me: (Default)
Прочитал  Karl Seguin "The Little Go Book", 84 стр., англ. язык.

Как-то не понял, почему такие восторги от этого языка. Что-то типа С, только со сборкой мусора и потоками. Для встраиваемых систем такое очевидно не подходит, потому что нужно реальное время, а сборка мусора и реальное время исключают друг друга.
Потоки тоже реализованы как-то через свои библиотеки, а не через вызовы ОС. С одной стороны, пишут, что при этом накладные расходы на создание потока очень малы, и можно запустить, например, миллион потоков. С другой стороны, если они запускаются без участия ОС, то как осуществляется их планирование? И тогда же не будут использоваться все ядра процессора, а только одно.
Мне кажется, что интересно будет посмотреть, как устроен этот механизм многопоточности.
В остальном язык не показался мне интересным, я не вижу причин его использовать в данный момент. 
32bit_me: (Default)
 Статья Krste Asanović и др. "The Rocket Chip Generator", 9 стр., англ. язык.
Описывается генератор ядер процессора RISC V на языке Chisel.




Статья обзорная, никаких конкретных руководств по работе с Rocket Chip в ней нет. Тем не менее, описываются возможности системы. В частности, можно генерировать базовые подсистемы (I, A, M, D. F), сокращённый и сжатый варианты, E и C, системы с MMU и без MMU, с выполнением команд in-order и out-of-order. Например, простое ядро без MMU имеет всего три стадии конвейера, а с MMU - пять стадий.
32bit_me: (Default)
Прочитал версию 2.1 руководства по системе команд Risc V, в той части, в которой она отличается от 2.0.
Есть интересные моменты:
1) есть версия Е, с количеством регистров, уменьшенным до 16, и
2) есть версия С (compressed), с 16-битными командами, но при этом накладываются дополнительные ограничения на использование регистров.
Эти варианты могут сильно уменьшить как площадь самого ядра, так и (в варианте С), размер исполняемого кода.
Также есть (пока не разработанные) планы по введению новых расширений системы команд, таких, как поддержка десятичных чисел с плавающей точкой.
32bit_me: (Default)
Прочитал руководство A. Waterman и др. "The RISC-V Instruction Set Manual Volume II: Privileged Architecture Version 1.9.1", 89 стр., англ. язык.



Руководство описывает подсистемы привилегий, виртуализации памяти и прерываний процессора Risc V. Во многих аспектах этот процессор отличается от ARMv7 и ARMv8. Описанные уровни добавляют немного команд, и довольно много регистров к описанному в первой части базовому ядру. Но отличительной чертой RISC V является гибкость реализации, и большая часть всех этих расширений необязательна для реализации, и может не присутствовать, в зависимости от результата, который мы хотим получить. Так, если мы хотим сделать ядро без многозадачности, без виртуализации памяти. то нам вообще все эти механизмы не нужны, нужен только контроллер прерываний.
Всего архитектура RISC V может содержать до 4-х уровней привилегий: User, Supervisor, Hypervisor, Machine. При этом: User - уровень прикладной задачи, Supervisor - уровень ОС, Hypervisor - уровень виртуальных машин, Machine - уровень полных привилегий. Опять же, можно не делать все уровни, оставить только User и Machine, например.
32bit_me: (Default)
Прочитал руководство "The RISC-V Instruction Set Manual, Volume I: User-Level ISA, Version 2.0" по системе команд ядра Risc-V.



Итак, Risc V - это сравнительно новая архитектура процессорного ядра, которая может (в перспективе) заменить ARM (или хотя бы занять заметное место на рынке встраиваемых процессоров). Отличия Risc V от конкуретов - открытость и расширяемость. Система команд (ISA) открыта и описана, любой может сделать своё ядро, реализующее эту стстему команд. Система команд состоит из некоторого небольшого базового набора, стандартных расширений, и плюс к ним любой производитель/разработчик может добавлять свои раширения для своих узких задач.
Разрядность также может варьироваться (от 32 до 128 в текущей версии ISA), разрядность FPU (который также является необязательным расширением), также может варьироваться от 32 до 128.
Стандарт описывает базовую систему целочисленных команд (обозначаемую как I), стандартные расширения: расширение умножения/деления (M), расширение атомарных операций (А), расширение 32-битных вещественных чисел (F), расширение 64-битных вещественных чисел (D). Этот набор (IMAFD) образует ядро процессора общего назначения, которое может дополняться и другими расширениями, описанными в руководстве, или собственными расширениями производителя.
Минимально необходимое подмножество команд (I) мало и достаточно просто в реализации на HDL-языке. С его помощью можно программно реализовать все остальные команды, кроме набора А (атомарные операции), но набор А нужен только для многозадачных/многопоточных систем, если многопоточность не нужна, то можно обойтись без него.
Такой набор команд можно реализовать, например, на Verilog-е, что будет полезно для изучающих этот язык.
32bit_me: (Default)
Прочитал ARM Application Note 273 "Dhrystone Benchmarking for ARM Cortex Processors ", 12 стр. англ. язык.
Руководство описывает метод измерения производительности ядра процессора с помощью теста Dhrystone.


Разумеется, аналогичным способом может быть измерена производительность не только процессора с ядром ARM, но и процессора с другой архитектурой, работающего как под управлением операционной системы, так и в bare-metal режиме.
Также посмотрел исходный текст Dhrystone. Единственное, что вызывает опасения, это то, что оптимизатор может удалить из него много всего, что повлияет на результат. Надо будет попробовать скомпилировать и посмотреть код на выходе.
32bit_me: (Default)
Прочитал ГОСТ Р МЭК 61508-3 "Функциональная безопасность систем электрических, электронных, программируемых электронных, связанных с безопасностью. Часть 3. Требования к программному обеспечению". 97 стр., русск. язык.


Стандарт является переводом на русский язык междунарожного стандарта IEC 61508-3, и описывает требования к программному обеспечению для различных уровней полноты безопасности.
32bit_me: (Default)
Прочитал книгу "Agilent Impedance Measurement Handbook. A Guide to Measurement Technology and Techniques. 4th Edition". 140 стр. англ. язык.

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

32bit_me: (Default)
Прочитал руководство Altera AN709 "HPS SoC Boot Guide - Cyclone V SoC Development Kit", описывающее процесс загрузки ОС в память и инициализацию встроенного процессора ARM9.
30 стр., англ. язык.

32bit_me: (Default)
Прочитал William von Hagen "The Definitive Guide to GCC. Second Edition" 550 стр., англ. язык.



В книге изложены все аспекты практической работы с GCC, опции компиляции, расширения языков C и C++, и т.п.
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)
Прочитал "pthread tutorial", Peter C. Chapin, 29 стр., англ. язык.

В очень маленьком объеме излагается вся существенная информация, которую нужно знать по pthread.
32bit_me: (Default)
Прочитал материал по Serial Audio Interface, который встроен в микроконтроллеры STM32, объем 27 стр. англ. язык.



SAI - это некий обобщенный интерфейс, который может работать в разных режимах, как разные аудиоинтерфейсы, например I2S, SPDIF, AC97 и другие.

Profile

32bit_me: (Default)
32bit_me

April 2017

S M T W T F S
      1
2 34 5678
9101112 1314 15
16171819202122
23242526272829
30      

Syndicate

RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 27th, 2017 04:30 pm
Powered by Dreamwidth Studios