32bit_me: (Default)
Подскажите хорошую литературу (книги, статьи, сайты) про алгоритмы вычисления функций (логарифм, степень, тригонометрия и т.п.). Если с примерами реализации на Verilog, то ещё лучше. Если на С, тоже подойдёт.
Желательно, чтобы было краткое изложение теории без лишних сложностей и примеры.

Желательно на англ. языке.
32bit_me: (Default)
Прошло уже некоторое время с тех пор, как я завёл блог на платформе dreamwidth, и уже можно сделать выводы:
1. Это ничего не дало. Никаких новых возможностей, никакой новой аудитории.
2. Экспорт в ЖЖ работает криво. Картинки вставляются со ссылками на DW, и половине пользователей ЖЖ их не видно. Их приходится вручную отдельно перезаливать в ЖЖ.
3. Таким образом, поддержка блога в dw стоит отдельных усилий, но не даёт никаких плюсов.

Поэтому я пока не буду поддерживать блог в dw, оставаясь только в жж. Существующий аккаунт и посты удалять не буду.
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)
 С целью удобства сделал список публикаций на хабре:
 
 
Мои публикации на хабре/ГТ:
Программирование/компиляторы:
LLVM: компилятор своими руками. Введение
Как приручить дракона. Краткий пример на clang-c
Электроника и контроллеры:
Аналого-цифровое преобразование для начинающих
Подключение цветного LCD с сенсорным экраном к микроконтроллеру
Мобильный телефон своими руками. Часть 1
Мобильный телефон своими руками. Часть 2
Siemens Logo! — десять лет спустя
Начинаем работать в STM32CubeMX. Часть 1
Начинаем работать в STM32CubeMX. Часть 2
Ретрокомпьютеры:
Ноутбук Tandy TRS-80 model 200
Персональная электронная вычислительная машина «Апогей БК-01»
Персональный компьютер «Электроника МК-85»
Разное:
Raspberry Pi и Синяя Изолента
Внешняя USB-видеокарта Startech USB2DVIE3
Ремонт мыши Logitech MX Air
Обзор USB-осциллографа Hantek DSO-6022BL с логическим анализатором и гикпорном
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)
Очень понравилась.



Пожелаем им удачи.

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

Как-то не понял, почему такие восторги от этого языка. Что-то типа С, только со сборкой мусора и потоками. Для встраиваемых систем такое очевидно не подходит, потому что нужно реальное время, а сборка мусора и реальное время исключают друг друга.
Потоки тоже реализованы как-то через свои библиотеки, а не через вызовы ОС. С одной стороны, пишут, что при этом накладные расходы на создание потока очень малы, и можно запустить, например, миллион потоков. С другой стороны, если они запускаются без участия ОС, то как осуществляется их планирование? И тогда же не будут использоваться все ядра процессора, а только одно.
Мне кажется, что интересно будет посмотреть, как устроен этот механизм многопоточности.
В остальном язык не показался мне интересным, я не вижу причин его использовать в данный момент. 
32bit_me: (Default)
 Был на конференции разработчиков, было много интересных докладов, как по железу, так и по программированию.
Рассказывали о разных одноплатниках нашего производства. В основном на TI, например, на процессоре Sitara AM5728 (двухъядерный Cortex A15), но есть и на других чипах, например, на Xilinx Zynq 7015.
Ещё рассказывали про наши ПЛК и прочее разное.




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, например.

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:29 am
Powered by Dreamwidth Studios