32bit_me: (Default)
Что ещё было из интересного:
Осциллографы верхнего сегмента имеют опорный генератор со стабильностью +-12ppb (частей на миллиард). Я сначала подумал, что там рубидий, сейчас посмотрел, модули OСXO, и без рубидия есть такие и даже ещё более стабильные. Но дорогие.
Практически у всех осциллографов, даже нижнего и среднего ценового сегмента есть опции, фактически дающие до шести приборов в одном: осциллограф, генератор сигналов (AWG), вольтметр, логический анализатор, анализатор протоколов. Однако за дополнительные опции надо платить.

Ещё фото под катом:

Read more... )
32bit_me: (Default)
Был на семинаре Keysight (Agilent) по осциллографам. Показывали и рассказывали много чего, презентовали бумажный каталог по измерительным приборам (там не только осциллографы, а весь спектр измерительной техники).
Осциллографы интересные, до 59 ГГц и выше, (начиная с 60 ГГц начинаются экспортные ограничения на осциллографы), АЦП 10 бит (эффективных 6,8-6,2 в зависимости от частоты). Это безусловно, очень круто. Готовится к выпуску модель на 100 ГГц. Но это всё приборы стоимостью в сотни тысяч долларов.
Есть, конечно, и недорогие модели, от 50 МГц.
Показывали модель на 8 ГГц, очень впечатляет. Осциллограммы, естественно, с послесвечением ("цифровой фосфор"), глазковые диаграммы, спектры (БПФ-анализ), гистограмма уровней (строится по глазковой диаграмме), автоматическая проверка интерфейсов Ethernet (нужна утилита за отдельную плату) и ещё 100500 всяких возможностей.
Внутри, кстати, процессор Core-i5 и Windows, кажется,седьмая. Впрочем, практически все измерительные приборы такого класса работают под Windows.
У некоторых моделей есть голосовое управление (в том числе на русском языке), что очень полезно, когда у вас обе руки заняты щупами. Впрочем, можно купить специальный штативчик для щупа, всего-то 600 долларов, какая ерунда.
Также есть куча разных щупов и переходников, в том числе плата-переходник на PCI-E, для исследования сигналов на этой шине.
Особое внимание уделили тому, что у них очень равномерная АЧХ и ФЧХ во всём диапазоне, неравномерность АЧХ не больше 1 дБ, а в более узкой полосе частот - не более 0,1 дБ. Это достигается за счёт специальной ПЛИС, которая содержит настраиваемый фильтр, в который записываются параметры (зависящие, кроме свего прочего, и от активного щупа, например).
Задавали кучу вопросов, например, на чём сделана аналоговая часть на такие частоты. Оказалось, специальная сборка на фосфиде индия.
Всё было очень интересно.

32bit_me: (Default)
Прочитал руководство "UM1734 User manual STM32Cube USB device library", 59 стр., англ. язык.
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)
Прочитал статью Н. Баландин, А. Крапивный "Отладка приложений и настройка параметров конфигурации операционной системы реального времени RTEMS", 6 стр.
В статье описываются некоторые специфические особенности ОСРВ RTEMS.
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)
Прочитал статью Howard Mao "Hardware Acceleration for Memory to Memory Copies", 27 стр.англ. язык.



Это тот самый Howard Mao, по статьям из блога которого я изучал SoC Cyclone V. Но эта статья не про Cyclone V, а про RISC V. В статье рассматривается расширение системы команд RISC V для операций копирования и перемещения участков памяти в процессоре с виртуализацией памяти. Указывается, что перемещение памяти в таких системах можно (в ряде случаев) осуществлять заменой записей в TLB, без физического копирования данных, а копирование можно делать с помощью специального узла Tile Link Memory Interface. От обычного DMA он отличается тем, что работает с адресами виртуальной памяти, а не с физическими адресами, и следовательно, может вызываться напрямую из user-space.
Понятно, что на задачах копирования памяти выигрыш по скорости составляет разы, кроме только самых маленьких блоков памяти (за счет дополнительных накладных расходов), а тест Dhrystone должен вообще сильно ускориться (но это уже мои догадки, авторы этот тест не проводили).
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)
Прочитал книгу "An Introduction to GCC for the GNU Compilers gcc and g++", Brian Gough, 116 стр., англ. язык.



Книга является кратким введением в GCC, рассмотрены основные опции командной строки gcc и g++ и некоторые утилиты из binutils.

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

Page Summary

Style Credit

Expand Cut Tags

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