vak: (Default)
Десять лет не брал я в руки шашек ATmega, но тут Алекс KI6EEO попросил его просветить, и я решил заценить нынешнее разнообразие доступных программаторов для микроконтроллеров AVR. В предыдущем посте смотрите обзор отладочных плат AVR.

USBasp




Самый простой и доступный программатор для микроконтроллеров AVR. Разработан Thomas Fischl на основе atmega8. При желании вы сами можете спаять его по схеме на сайте разработчика. Там же есть все исходные коды и драйвер для Windows. Но проще купить готовый программатор на Ebay за $5. Программатор поставляется с 10-контактным шлейфом.

Утилита avrdude умеет работать с этим программатором, если указать тип "usbasp". Вот пример распознавания чипа ATtiny13:

$ avrdude -c usbasp -p ATtiny13

avrdude: warning: cannot set sck period. please check for usbasp firmware update.
avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.00s

avrdude: Device signature = 0x1e9007 (probably t13)

avrdude: safemode: Fuses OK (E:FF, H:FF, L:6A)

avrdude done. Thank you.
Утилита предлагает обновить версию прошивки самого программатора USBasp, но это необязательно, и без этого всё отлично работает.

На программаторе есть джампер для выбора напряжения питания 5V / 3.3V, подаваемого на программируемую плату. Лучше всего этот джампер снять и не подавать никакого напряжения, во избежание конфликта.

USBtiny



Этот программатор был разработан другим любителем Dick Streefland, и позже активно продвигался фирмой AdaFruit. Продаётся на Aliexpress по цене около $3. Может поставляться как с 10-контактным шлейфом, так и с 6-контактным. На картинке показан 6-контактный шлейф. Имеется джампер для подачи 5V на программируемую плату, который лучше отключить.

Утилита avrdude понимает этот программатор как тип "usbtiny". Вот тот же пример с платой ATtiny13:

$ avrdude -c usbtiny -p ATtiny13

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.01s

avrdude: Device signature = 0x1e9007 (probably t13)

avrdude: safemode: Fuses OK (E:FF, H:FF, L:6A)

avrdude done. Thank you.

AVRISP mkII




Это копия фирменного программатора Atmel AVRISP mkII, снятого с производства. Купить можно на Aliexpress за $16. Имеет 10-контактный шлейф, и отдельно переходник на 6-контактный разъём. Фирменный софт Atmel Studio 7 распознаёт этот программатор как родной mkII и обновляет firmware до последней версии 1.18. В этом преимущество программатора AVRISP: по мере появления новых моделей чипов AVR вы будете автоматически получать нужные обновления для программатора. Лично я для серьёзных разработок выбирал бы этот девайс.

Для avrdude надо указывать тип "avrisp2". Повторяем пример с платой ATtiny13:

$ avrdude -c avrisp2 -p ATtiny13

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.00s

avrdude: Device signature = 0x1e9007 (probably t13)

avrdude: safemode: Fuses OK (E:FF, H:FF, L:6A)

avrdude done. Thank you.

AVR JTAGICE


Тут не совсем программатор, а скорее отладчик. Подключается он не к порту программирования ICSP, а к порту JTAG. Не все платы оборудованы портом JTAG. Прошить память микроконтроллера этим устройством тоже можно, но основная его суть в возможности пошаговой отладки микроконтроллера посредством интерактивного отладчика. обычно это нечасто нужно, но в тяжёлых случаях не обойтись.

Продаётся JTAG ICE на Aliexpress за $7. Поставляется со стандартным 10-контактным шлейфом.

С этим девайсом есть одна проблема, которую я пока не решил. Он приходит без прошивки, точнее прошит только bootloader. Требуется обновить прошивку, то есть загрузить туда firmware от родного Atmel JTAG ICE. Есть инструкция, по которой нужно на компьютер с устаревшим Windows установить устаревшую версию AVR Studio 4, и после некоторых магических действий вся получится. Попробую когда-нибудь потом. Но в целом не могу рекомендовать этот отладчик для начинающих.
vak: (Default)
К архитектуре Atmel AVR я давно неравнодушен. Тёплая ламповая восьмибитность покорила меня ещё двадцать лет назад. Мы начали применять AT90 и ATmega в Крониксе в конце 90-х, перейдя на них с серии Microchip PIC17. Именно для AVR я тогда сделал первую версию операционной системы реального времени uOS. Позже добавлял ARM, MIPS и другие, но первое впечатление осталось именно от AVR.



Для AVR я делал отладчик GDB, стартовый загрузчик через COM-порт, дорабатывал утилиты прошивки, паял USB-программаторы. Ну и собственно кучу софта написал: до сих пор большинство коммуникационного оборудования, выпускаемого Крониксом, имеет ATmega в качестве сервисного процессора. К примеру, удалённый мониторинг сетевых портов по протоколу SNMP микроконтроллер ATmega128 вполне тянет.

Вот моя коллекция отладочных плат для микроконтроллеров ATmega, ATtiny и AT90S в разных корпусах.

(1) Плата ATmega 128 с набором разнообразной периферии. Цена €34 евро на сайте Olimex. Плата поставляется с тестовой прошивкой, которая по нажатиям кнопок управляет светодиодом и реле, пищит динамиком, пишет сообщение на дисплее LCD и отправляет строку в порт RS-232. Исходные тексты этой прошивки с использованием операционной системы uOS можно посмотреть здесь: test_olimex.c



(2) Плата для восьминогих чипов ATtiny13A и аналогичных. Куплена за $7 на Aliexpress. Будьте внимательны с питанием: подавать можно не больше 5V, иначе чип накроется.



(3) Плата для 28-ногих чипов ATmega328P, ATmega8 и аналогичных. Стоит два с лишним доллара на Aliexpress.



(4) Плата для сороканогих чипов AT90S и других (с питанием от ножки 40). Цена около $3 на Aliexpress. Не перепутайте: есть похожие платы для чипов с питанием от ножки 10 (ATmega32, ATmega 163L и подобных). Это не то же самое. Смотрите принципиальную схему этой платы.



Все эти платы имеют 10-контактный разъем ICSP для подключения программатора, а плата Olimex - ещё и разъём JTAG для отладчика. Но про них я расскажу в следующем посте.
vak: (Default)
Если запустить свет по экватору, он будет облетать Землю семь раз в секунду.



От Земли до Луны свет летит чуть больше секунды.



Путь от Земли до Марса занимает три минуты.

vak: (Default)
Процедура установки: debian-mips64el-on-qemu

Протокол загрузки и информация об аппаратной конфигурации: protocol-debian-mips64el

Дерево устройств: device-tree-mips64el-on-qemu
vak: (Default)
При работе с программными пакетами внешних поставщиков, особенно в корпоративное среде, часто возникает необходимость оперативно настраивать переменные окружения под определённую версию пакетов. Массу головной боли вызывают такие переменные как PATH, LD_LIBRARY_PATH, PYTHONPATH и другие. Скажем, у нас на фирме для сборки продукта (ядра MIPS) надо выставить пути для дюжины конкретных версий внешних пакетов. Для сборки другого ядра MIPS - другие версии и слегка другой набор пакетов. Чтобы упростить процесс настройки окружения, используется утилита module.

Установка на Ubuntu:
$ sudo apt install environment-modules
После установки пакета надо перелогиниться. В вашем шелле появится алиас или функция module. Для bash это выглядит так:
$ declare -f module
module () 
{ 
    _moduleraw "$*" 2>&1
}
Изначально при входе в систему список загруженных модулей пустой:
$ module list
No Modulefiles Currently Loaded.
Если он непустой, можно его очистить командой:
$ module purge
Краткий список доступных для загрузки модулей можно просмотреть командой:
$ module avail
-------------------- /etc/environment-modules/modules --------------------
ise/14.7       modelsim/17.0  quartus/16.1  systemc/2.2.0  vivado/2016.2  
modelsim/16.0  modelsim/18.0  quartus/17.0  systemc/2.3.0  vivado/2017.2  
modelsim/16.1  quartus/16.0   quartus/18.0  systemc/2.3.1  vivado/2018.2  

--------------------- /usr/share/modules/modulefiles ---------------------
dot  module-git  module-info  modules  null  use.own
Первая половина списка - модули, которые я создавал сам. Ниже покажу подробнее. Вторая половина - стандартные модули для специальных целей. Чуть более подробную информацию про модули можно получить командой:
$ module whatis
-------------------- /etc/environment-modules/modules --------------------
            ise/14.7: Xilinx ISE, Version 14.7
       modelsim/16.0: Altera Modelsim, Version 16.0
       modelsim/16.1: Altera Modelsim, Version 16.1
       modelsim/17.0: Altera Modelsim, Version 17.0
       modelsim/18.0: Altera Modelsim, Version 18.0
        quartus/16.0: Altera Quartus, Version 16.0
        quartus/16.1: Altera Quartus, Version 16.1
        quartus/17.0: Altera Quartus, Version 17.0
        quartus/18.0: Altera Quartus, Version 18.0
       systemc/2.2.0: SystemC, Version 2.2.0
       systemc/2.3.0: SystemC, Version 2.3.0
       systemc/2.3.1: SystemC, Version 2.3.1
       vivado/2016.2: Xilinx Vivado, Version 2016.2
       vivado/2017.2: Xilinx Vivado, Version 2017.2
       vivado/2018.2: Xilinx Vivado, Version 2018.2

--------------------- /usr/share/modules/modulefiles ---------------------
                 dot: adds `.' to your PATH environment variable
          module-git: get last version of the module sources from GitHub
         module-info: returns all various module-info values
             modules: loads the modules environment
                null: does absolutely nothing
             use.own: adds your own modulefiles directory to MODULEPATH
Для примера загрузим несколько модулей:
$ module load modelsim/18.0
$ module load vivado/2018.2
$ module load systemc/2.3.1
Проверим результат:
$ echo $PATH
/opt/Xilinx/Vivado/2018.2/bin:/opt/Altera/18.0/modelsim_ase/linuxaloem:/usr/local/bin:/usr/bin:/bin
$ echo $LD_LIBRARY_PATH
/opt/SystemC/systemc-2.3.1/lib-linux64
$ env | grep SYSTEMC
SYSTEMC=/opt/SystemC/systemc-2.3.1
SYSTEMC_INCLUDE=/opt/SystemC/systemc-2.3.1/include
SYSTEMC_LIBDIR=/opt/SystemC/systemc-2.3.1/lib-linux64
SYSTEMC_HOME=/opt/SystemC/systemc-2.3.1
Как мы видим, Vivado и Modelsim находятся в пути PATH, и установлены переменные для SystemC. Ненужные модули нетрудно выгрузить, и загрузить другие:
$ module unload vivado
$ module load ise/14.7
$ echo $PATH
/opt/Xilinx/14.7/ISE_DS/ISE/bin/lin64:/opt/Altera/18.0/modelsim_ase/linuxaloem:/usr/local/bin:/usr/bin:/bin
Чтобы создать свой модуль, надо добавить файл описания модуля в каталог /etc/environment-modules/modules. Фактически это скрипт на языке Tcl. К примеру, вот скрипт для модуля systemc/2.3.1:
$ cat /etc/environment-modules/modules/systemc/2.3.1
#%Module1.0
set version [file tail [module-info name]]
set prefix  "/opt/SystemC/systemc-$version"
set whatis  "SystemC, Version $version"

proc ModulesHelp { } {
    global version prefix whatis

    puts stderr "$whatis"
    puts stderr "\n\tThis adds environment variables SYSTEMC"
    puts stderr "\tand SYSTEMC_HOME as $prefix."
}

module-whatis "$whatis"

setenv SYSTEMC         "$prefix"
setenv SYSTEMC_HOME    "$prefix"
setenv SYSTEMC_INCLUDE "$prefix/include"
setenv SYSTEMC_LIBDIR  "$prefix/lib-linux64"

prepend-path LD_LIBRARY_PATH "$prefix/lib-linux64"

conflict "systemc"
Описание скрипта модуля можно просмотреть командой "man modulefile".

Есть статья про утилиту module на английском: "Environment Modules – A Great Tool for Clusters".
vak: (Default)
Интервью с Северо Орнштейном (PDF), инженером, создавшим первый в мире роутер (IMP, Interface Message Processor) и компьютер Xerox Dorado. Именно демонстрация графического интерфейса Dorado вдохновила Стива Джобса на создание Макинтоша.

На видео Северо представляет первую интерактивную программу для музыкантов, Mockingbird.

vak: (Default)
С сегодняшнего дня я на консервной фабрике работаю. Это сразу за водокачкой, налево. Вся наша контора переехала в новый офис в историческом здании бывшей консервной фабрики в самом центре Кэмпбелла.



Здание представляет собой исторический памятник, поэтому внутренняя отделка несколько хипстерская.

vak: (Default)
Январь: блог окончательно переехал на Dreamwidth. Восстановил схему модуля У от БЭСМ-6. Составил план воплощения микро-БЭСМ в железе. Получил от Эрика коллекцию Амиг в трех ящиках.

Февраль: доделал программатор pic32prog для платы chipKIT Lenny. Освоил универсальные читалки дискет SuperCard Pro и Kryoflux. Начал проект универсального измерителя транзисторов.

Март: спаял ламповую нашлепку для Ардуино.

Апрель: соорудил хакерские настольные часы. На работе закончили верификацию процессора I7200 (Shaolin). Полгода работали в авральном режиме 6 дней в неделю.

Май: освоил алгоритмы глобальной оптимизации в применении к оптимальному управлению.

Июнь: слетали на Гавайи. Наша фирма MIPS слилась со стартапом Wave Computing.

Июль: спаял процессорную плату на советской микросхеме - копии PDP-11. Сделал телеграфный маячок на основе LoRa. Снова сплавлялись по Кэшовому ручью. 

Август: сделал утилитку yaesutool для конфигурации раций Yaesu. Начал осваивать технологию цифрового радио DMR. Начал разработку утилиты dmrconfig.

Сентябрь: установил хотспот DMR. Съездили на Лассен с ночёвкой в палатке: красота гор неописуемая.

Октябрь: съездили на фестиваль Полуостров.

Ноябрь: закончил утилиту dmrconfig для конфигурации цифровых радиостанций DMR.

Декабрь: получил новую должность по работе. Начинаю заниматься параллельными вычислителями для искусственного интеллекта.
vak: (Default)
"Damer: And, then also in the book you mentioned the card loader...

Ornstein: Oh yeah, the card reader.

Damer: ...where somebody actually ended up dumping their coffee down there.

Ornstein: A coffee cup went into the card reader and hung up development for days while IBM took it all
apart, cleaned it up, and put it back together.

Damer: And, then they had to invent the Plexiglas...

Ornstein: Yes, well the following week the console and the card reader, which was the main input to the
machine, was all surrounded by glass or Plexiglas and you could not get in there with a coffee cup."

(Oral History of Severo Ornstein, PDF)
vak: (Default)
"ГОСТ 34.602-89 Техническое задание на создание автоматизированной системы"

С такими руководящими документами Советский Союз не мог не загнуться. Но если убрать всю бюрократическую хрень, можно заметить в тексте некоторые конструктивные детали.

Мы в Крониксе использовали техническое задание как основной инструмент на всех этапах, от зарождения концепции нового изделия и до выпуска готового продукта. Официальные стандарты нам были по барабану, мы сами определяли форму документа.
vak: (Default)
Banana Pi BPI-M1:

https://en.wikipedia.org/wiki/Banana_Pi

http://linuxgizmos.com/sbc-mimics-raspberry-pi-has-faster-cpu-adds-sata/





Odroid XU:

https://en.wikipedia.org/wiki/ODROID



Beagleboard Rev. C3:

https://en.wikipedia.org/wiki/BeagleBoard



Pandaboard:

https://en.wikipedia.org/wiki/PandaBoard



Name SoC CPU GPU RAM
Architecture Cores Frequency
Banana Pi Allwinner ARM Cortex-A7 2 1 GHz Mali-400MP2 1 GB
ODROID-XU Samsung Exynos 5 Octa ARM Cortex-A15,
ARM Cortex-A7
8 (4 + 4) 1.7 GHz,
1.2 GHz
PowerVR SGX544MP3 @600 MHz 2 GB
BeagleBoard TI OMAP3530 ARM Cortex-A8 1 720 MHz TMS320C64x @430 MHz 256 MB
PandaBoard ES TI OMAP4460 ARM Cortex-A9 2 1.2 GHz PowerVR SGX540 1 GB
vak: (Default)
Когда в организм попадает слишком много работы, он начинает вырабатывать антидела.
(С)
vak: (Default)
Появилось кое-что новое, необычное в украинской музыке.



I’ve been surfing this wave for so long
I’ve been searching the same of my own
These waves are carrying me
I will take it all
I am getting ready to go
Covered by the waves of my soul