32bit_me: (Default)
При установке DS-5 и Quartus под Linux могут возникнуть некоторые проблемы.



Read more... )
32bit_me: (Default)
Напишу здесь, чтобы каждый раз не искать.
Создаём на рабочем столе файл с расширением .desktop и пишем в нём следующее:

#!/usr/bin/env xdg-open
[Desktop Entry]
Version=1.0
Name=имя_значка
Comment=
Exec=nautilus /путь/к/директории
Icon=folder
Terminal=false
Type=Application
Categories=Application;

На рабочем столе появляется значок, который по клику выполняет нужное действие (в данном случае, открывает папку). Внешний вид значка можно изменять, меняя свойство Icon. Список вариантов тут.
32bit_me: (Default)
Здесь будут полезные ссылки по SoC Cyclone V и Linux.
Часть этих ссылок я уже приводил, но повторю их здесь, чтобы лишний раз не искать.

1. https://zhehaomao.com/blog/fpga/2013/12/22/sockit-1.html - Подробное введение в SoC на примере платы Arrow SoCKit.
2. https://releases.linaro.org/components/toolchain/binaries/4.9-2016.02/arm-linux-gnueabihf/ - Компилятор Linaro 4.9 (на версии 5 и выше не собираются исходники GSRD Linux от rocketboards)
3. https://rocketboards.org/foswiki/view/Projects/WebHome#fq=field_Board_s%3AArrowSoCKitEvaluationBoard - проекты от RocketBoards
4. git://git.rocketboards.org/linux-socfpga.git - исходники от Rocketboards.org

Список будет пополняться.
32bit_me: (Default)
Обнаружил странное поведение операционной системы (Debian Jessie). Режим выключения экрана у меня отключен, но если просто выключить монитор, то система входит в странное состояние, и после включения монитора экран остаётся тёмным и не откликается на клавиатуру и мышь.
Путём проб и ошибок было обнаружено, что комбинация Ctrl+Alt+F7 выводит систему из этого состояния, пробуждая её к нормальной работе.
Может быть, кто-то знает, в чём причина таких странностей и как с этим бороться?
32bit_me: (Default)
Периодически, когда наступат необходимость, я переустанавливаю Linux, каждый раз испытывая разные мучения, т.к. мои админские скиллы находятся где-то в окрестности нуля.
На работе всем этим занимается админ, а дома приходится самому.
1. Накатив свежий  Debian 8 Jessie, я залез в меню настроек, в полном непонимании, где включается пункт в меню на рабочем столе "открыть терминал". Всё обошёл, нету. Поставил пакет "nautilus-open-terminal", всё равно нет. В общем, надо в настройках рабочего стола включить "Показывать значки на рабочем столе". И тогда появилось целых два пункта в меню - одно родное, другое принадлежащее установленному пакету.
2. Новые чудеса - не установлено sudo. sudo, Карл!
Пишем:
su
<пароль рута>
apt-get update
apt-get install sudo.
Хрен там. Требует cd-rom. cd-rom, Карл!
пишем gedit /etc/apt/sources.list и закомментируем строку, которая начинается с deb cdrom, после чего повторяем apt-get install.
3. Ещё нужно добавить себя в список sudoers:
su
<пароль рута>
sudo adduser <имя пользователя> sudo
4. подключаем backports в список источников:
deb-src http://http.debian.net/debian jessie-backports main

5. Ещё драйвера для видеокарты:
к всем источникам после main добавляем contrib non-free
делаем
apt-get update
apt-get install firmware-linux-nonfree

// И ещё про установку Qt.
Перед тем, как накатить саму Qt, поставить:
1. компилятор gcc (g++) и всё вот это:
sudo apt-get install build-essential
2. Open GL:
sudo apt-get install mesa-libGL-devel

Можно и после самой Qt, впрочем, неважно.

Всё готово.
Как-то так.
32bit_me: (Default)

Originally published at 32 bit.me. You can comment here or there.

Продолжаю эксперименты с Altera Cyclone V. На этот раз объектом эксперимента стал драйвер для той прошивки FPGA, про которую я писал ранее. Сама прошивка простейшая: она просто мигает светодиодами с частотой, которую можно задавать программно. В прошлом посте на эту тему я сделал управление частотой мигания из обычной (user-space) программы, которая получает доступ к физической памяти через функции open(«/dev/mem») и mmap().
Однако такой путь считается «hacky and unsafe». Поэтому следующим логичным шагом должно стать написание драйвера.

Tux-linux-and-ARM-multiplatform-support

Я воспользовался готовым исходником драйвера (ссылка) за авторством Howard Mao (он на самом деле не Howard, а Zhe Hao Mao). Конечно, для того, чтобы разобраться в работе кода, почитал отдельные главы книги Linux Device Drivers (есть русский перевод).

Для компиляции пришлось вытаскивать архив Arrow SocKit 13.1 GSRD Linux отсюда: http://releases.rocketboards.org/release/2013.11/gsrd/src, файл linux-socfpga-gsrd-13.1-src.bsx. Объем архива около 1.1 Гб, но сервер очень медленный, качается несколько часов. Честно говоря, я впервые увидел файл с расширением bsx, оказалось, что это самораспаковывающийся архив. Просто запускаем его и он разворачивается в указанную папку. В ней в папке sources находится файл linux-socfpga.tgz. Его тоже нужно распаковать, естественно. Это и есть как таковое ядро системы, которое нужно указывать при компиляции драйвера.

Однако всё не так просто. После компиляции записываем скомпилированный драйвер blinker.ko на SD-карту, после загрузки Linux пишем insmod blinker.ko и получаем следующее: «blinker: version magic ’3.9.0-00161-ged01b8c SMP mod_unload ARMv7 p2v8 ‘ should be ’3.9.0 SMP mod_unload ARMv7 p2v8′«. Не совпали волшебные номерки. Причем версия одна и та же, просто зачем-то к ней приделан какой-то добавочный номер.

Решений может быть три: 1. Скомпилировать Linux именно их этого скачанного исходника (очень неохота) или 2. Подправить номер в исходниках ядра Linux. 3. Использовать команду modprobe с ключом -f, который заставляет систему игнорировать «волшебные цифры».  Однако этот способ почему-то не заработал.
Итак, способ номер 2, подправить номер в исходнике ядра. Данный номер записан в файле /include/generated/utsrelease.h. Исправляем то, что там было, на «3.9.0″, и перекомпилируем драйвер. На всякий случай смотрим hex-редактором файл blinker.ko, чтобы убедиться, что волшебные циферки такие, как нужно. Снова записываем драйвер на SD-карту, запускаем insmod, всё прошло гладко. Теперь можно проверить работу драйвера, посылая ему числа от 1 до 15 для управления частотой миганий: echo 1 > blinker — мигает быстро, echo 15 > blinker — мигает медленно. Пока всё. Немного, но путь в тысячу ли начинается с одного шага.

Эксперименты продолжаются.

32bit_me: (Default)

Originally published at 32 bit.me. You can comment here or there.

Прочитал книгу «Разработка ядра Linux», автор Р. Лав.


В книге подробно описывается внутренняя структура ядра Linux.


346326_razrabotka_yadra_linux



Книга, без сомнения, достойна прочтения, если вы занимаетесь разработкой модулей ядра.
Но я пока такими вещами не занимаюсь, поэтому прочёл скорее, для общего развития. Всё равно надо подтянуть скиллы по разработке ПО, но пока я не уверен, в каком направлении. Больше всего хочется покурить разработку драйверов Linux и алгоритмов обработки сигналов.

32bit_me: (Default)

Originally published at 32 bit.me. You can comment here or there.

Прочитал книгу Р. Лав «Linux. Системное программирование».
В книге описывается ряд системных вызовов для работы с файлами, процессами, временем, сигналами и распределением памяти. Приводятся сведения о работе этих вызовов по стандарту POSIX и по их реализации в ядре Linux.

3a56606f29e71f3a51b8c5fdd1d

32bit_me: (Default)

Originally published at 32 bit.me. You can comment here or there.

В общем, ничего сложного.
Для того, чтобы заливать прошивку в FPGA из процессорного ядра, нужно сделать следующее:
1. Подготовить файл rbf, это и есть файл прошивки. Он делается из файла sof с помощью утилиты Quartus:

quartus_cpf -c output_files/sockit_test.sof output_files/sockit_test.rbf

Положить этот файл в основной раздел SD-карты, например, в корень.

2. После загрузки linux, отключить мосты между FPGA и HPS (HPS — это процессорное ядро):

echo 0 > /sys/class/fpga-bridge/fpga2hps/enable
echo 0 > /sys/class/fpga-bridge/hps2fpga/enable
echo 0 > /sys/class/fpga-bridge/lwhps2fpga/enable

И заливаем файл в FPGA:

dd if=/sockit_test.rbf of=/dev/fpga0 bs=1M

Собственно, всё. Мосты можно включить обратно, если нужно:

echo 1 > /sys/class/fpga-bridge/fpga2hps/enable
echo 1 > /sys/class/fpga-bridge/hps2fpga/enable
echo 1 > /sys/class/fpga-bridge/lwhps2fpga/enable

Разумеется, всё это можно делать скриптом.
Пишем файл gsrd_init.sh:

1
2
3
4
5
6
7
8
9
#!/bin/sh
 
echo 0 > /sys/class/fpga-bridge/fpga2hps/enable
echo 0 > /sys/class/fpga-bridge/hps2fpga/enable
echo 0 > /sys/class/fpga-bridge/lwhps2fpga/enable
dd if=/sockit_test.rbf of=/dev/fpga0 bs=1M
echo 1 > /sys/class/fpga-bridge/fpga2hps/enable
echo 1 > /sys/class/fpga-bridge/hps2fpga/enable
echo 1 > /sys/class/fpga-bridge/lwhps2fpga/enable

Кладём его в /etc/init.d. Теперь после загрузки Linux прошивка FPGA будет загружаться автоматически.

32bit_me: (Default)
Существуют готовые образы SD-карты для Altera Cyclone V с разными сборками Linux, но мы же не ищем лёгких путей.
Собрал kernel из исходников, накатил на карту, записал bootloader. Процесс довольно сложный, надо сказать, потратил на него почти весь день. То есть не на сам процесс, а на разные разбирательства "что я сделал не так". В итоге ядро загрузилось, но голое ядро без всего, это довольно унылое зрелище, поэтому скриншотов приводить не буду.

32bit_me: (Default)

Originally published at 32 bit.me. You can comment here or there.

Прочитал и освоил на практике воркбенч SoCKit Lab, две части, Hardware и Software.

Данная программа лабораторных работ основана на системе на кристалле (SoC) Altera Cyclone V. SoC состоит из двух процессорных ядер ARM Cortex A9 и FPGA, которые соединены мостами и могут взаимодействовать друг с другом. Первое руководство, Hardware, выполняется в Quartus II, и описывает конфигурирование и подключение периферии к процессору, а также симуляцию системы в ModelSim.

Вторая часть, Software, описывает процесс загрузки Linux, компиляцию простейшей программы (мигание светодиодом), отладку программы в ARM DS-5 Embedded Development Suite, и основы работы с SignalTap II Logic Analyzer в режиме совместной отладки программного кода и FPGA-проекта.


pic1

Надо сказать, что это совсем не просто, и все лабораторные работы получилось далеко не с первого раза. Но тем они и интересны.

PS: где скачать: http://rocketboards.org/foswiki/Documentation/ArrowSoCKitEvaluationBoard, здесь куча материалов по SoCKit, в том числе zip-ы

SoCKIT_Materials_13.1.zip, SoCKIT_Materials_14.0.zip, SoCKIT_Materials_14.1.zip. Скачиваем, распаковываем, там лежат pdf-ы с описанием лабораторных и с файлами проектов Quartus II, DS-5, Signal Tap II и пр. Они отличаются, в зависимости от версии Quartus II. Я делал для версии 14.0.
32bit_me: (Default)

Originally published at 32 bit.me. You can comment here or there.

Пусть в проекте FPGA необходимо ПЗУ, в которое записана определённая информация, имеющаяся у нас в виде бинарного файла. ПЗУ, как правило, реализуются на блоках BRAM, в которые при инициализации FPGA записывается требуемое содержимое.
Файлы инициализации памяти BRAM для FPGA, могут иметь формат MIF (Memory Initialization File) или формат HEX.

DSC_0522_EDIT

Нужный модуль памяти можно сгенерировать в Quartus II с помощью MegaWizard, в ISE — с помощью Xilinx Core Generator. Кроме этого, в QuartusII возможно использование специальной директивы:

1
reg [7:0] mem[0:2047] /* synthesis ram_init_file = "test.mif" */;

Эта директива позволяет создать RAM, инициированную значениями из файла .MIF. Использование RAM с предустановленными значениями, это очень плохая идея, но в качестве ROM такую память использовать вполне можно. Проблема в том, что эту директиву понимает только Quartus II, никакой кроссплатформенности.

Quartus II предоставляет редактор файлов памяти, и возможность загрузки файлов .mif и .hex, Xilinx Core Generator требует загрузки файла .coe, имеющего другой формат, нежели MIF. Однако хочется иметь кроссплатформенное решение, которое не зависело бы от платформы. Таким вариантом является генерация ROM в виде case-конструкции:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
always@(posedge clk)
begin
  case(in)
  ...
  11'h00d: out = 8'h99;
  11'h00e: out = 8'h81;
  11'h00f: out = 8'h7e;
  11'h010: out = 8'h7e;
  11'h011: out = 8'hff;
  11'h012: out = 8'hdb;
  11'h013: out = 8'hff;
  11'h014: out = 8'hc3;
  11'h015: out = 8'he7;
  11'h016: out = 8'hff;
  ...
  endcase
end

Полезная ссылка: различные конструкции для генерации разных типов RAM, ROM и других модулей можно найти в руководстве Altera «Recommended HDL Coding Styles»: https://www.altera.com/content/dam/altera-www/global/en_US/pdfs/literature/hb/qts/qts_qii51007.pdf
Я написал две простые утилиты, которая преобразует бинарный файл в MIF и в тело конструкции case.

Read the rest of this entry »

32bit_me: (Default)
Если вы занимаетесь разработкой под Linux, пожалуйста, напишите в комментах:
1. На каком языке, какие фреймворки используете.
2. Какую IDE используете (или не используете никакой)
3. Название и версия ОС.
4. Для какой платформы разрабатываете (desktop / embedded)
5. Какую литературу/ресурсы порекомендуете для быстрого погружения в тему.
32bit_me: (Default)

Дочитал книгу «The Zynq Book», руководство по системе на кристалле (SoC) Zynq-7000 фирмы Xilinx.

Напомню, что Zynq-7000 состоит из двух ядер ARM Cortex A9 и блока программируемой логики PL (по сути, встроенная в систему FPGA).

В книге подробно рассматривается структура системы, программный пакет Vivado, предназначенный для разработки под Zynq-7000, подробно рассматривается процесс преобразования кода на языке высокого уровня (например, С) в форму RTL, предназначенную для конфигурирования PL . Эта возможность обеспечивается программой Vivado HLS.
В последней части книги кратко описывается структура и процедура загрузки Linux в память.

ZynqPerspective
Интересная книга, интересный процессор.

32bit_me: (Default)

Originally published at 32 bit.me. You can comment here or there.

Если в Debian под Vmware не устанавливается Gnome 3, то вот танец с бубном:

http://www.neowin.net/forum/topic/1217775-debian-how-to-fix-gnome-3-failed-to-load-running-debian-in-vmware/

Конечно, нужно еще в Settings машины включить Display/Accelerate 3D graphics

32bit_me: (Default)

Originally published at 32 bit.me. You can comment here or there.

Если некая программа пишет при попытке запуска:

error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory

то пишем следующее:

sudo apt-get install libncurses5:i386

и всё запускается.

32bit_me: (Default)

Originally published at 32 bit.me. You can comment here or there.

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

Итак, запоминаем раз и навсегда: так происходит, когда мы пытаемся запустить нечто 32-битное на 64-битной системе. Лечится так:

sudo apt-get update

sudo apt-get install ia32-libs

Вот и всё. Довольно просто.

UPD:

ЕСли система пишет, что не может установить библиотеку и т.п., то пишем следующее:

dpkg --add-architecture i386
apt-get update
32bit_me: (Default)

Запись опубликована 32 bit.me. You can comment here or there.

Я уже писал про самодельную «Time Capsule» на базе Raspberry Pi. Она работает хорошо, если не считать проблемы с перегревом. В корпусе устройства установлен вентилятор, но он издаёт при работе существенный шум.

Итак, я решил подключить к RPi термодатчик и сделать автоматическое управление вентилятором.

Далее под катом.

Читать запись полностью »

32bit_me: (Default)

Запись опубликована 32 bit.me. You can comment here or there.

Для бэкапа содержимого жесткого диска в OS X, как известно, используется приложение Time Machine, очень удобное и качественное. Однако для его работы нужно устройство Time Capsule. В этом посте я хочу рассказать о том, как я сделал свою Time Capsule на основе Raspberry Pi.

Итак, нам понадобятся следующие компоненты:

1. Raspberry Pi и SD-карта для него;

2. HDD (я использовал HDD на 1 Tb, но можно взять жесткий диск и другого объёма);

3. переходник USB-SATA (от коробки для внешнего диска);

4. источник питания с напряжениями +5В и +12В, который может обеспечить силу тока по каналу +5В не менее 1,7А, по каналу 12В не менее 0,6А;

5. Wi-Fi адаптер для USB;

6. вентилятор (я использовал вентилятор 40 мм);

7. корпус;

Собираем всё вместе:

(все картинки кликабельны)

Читать запись полностью »

32bit_me: (Default)

Запись опубликована 32 bit.me. You can comment here or there.

На основе платы  Raspberry Pi (процессор Broadcom BCM2835 700 MHz ARM11 ARM1176JZF-S) сделал такое устройство, для удобства работы с платой и подключения к Raspberry Pi других устройств.

Плата Rasperry Pi.

Фото устройства. (Картинка кликабельна)

На Raspberry Pi установлена операционная система Debian Wheezy.

Подробнее можно прочитать здесь.

 

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:38 pm
Powered by Dreamwidth Studios