8-900-374-94-44
[email protected]
Slide Image
Меню

Nios ii по русски – Ваш первый проект на Nios II

Процессор Nios II для VE-EP4CE10E.

Весомым конкурентным преимуществом FPGA является возможность создания устройства на одном кристалле. Представьте только- вместо того что бы паять микроконтроллер, spi память, часы реального времени, счетчики событий и прочую перифирию, вы можете все это синтезировать внутри всего лишь одной микросхемы! Самая основная проблема этой идей- это реализация процессора. В этой статье мы покажем, как реализовать Soft-микропроцессор (также «микропроцессор с программным ядром») для FPGA Altera.

 Компания Altera предлагает отличное решение для таких задач — процессор Nios II. Семейство softcore процессоров Nios® II — второе поколение встраиваемых процессоров фирмы Altera. Процессоры Nios II дают возможность разработчикам получить производительность свыше 200 Dmips при стоимости логики не более $0,35 на процессор. При трех типах процессоров и возможности выбора из более чем 60 дополнительных IP ядер, системы Nios II обеспечивают исключительную гибкость, позволяя разработчикам подбирать набор процессоров в наибольшей мере соответствующий потребностям встраиваемой системы.

Создаем новый проект для нашей платы. После создания проекта добавите схему (bdf) в проект. Когда все готово приступим к настройке Nios.

Открываем Qsys: Tools — Osys. 

В строку поиска вводим ram, находим пункт On-Chip Memory (RAM or ROM), выбираем его двойным кликом.

В окне настройки памяти изменяем пункт Total memory size c 4096 на 8192 байт. Пункт Enable non-default initialization file оставляем не выбранным. В принципе если у Вас есть готовая прошивка для Nios II вы можете инициализировать память на этом этапе, но если вы хотите иметь возможность отладки (а мы хотим такую возможность), нужно оставить память не инициализированной. Далее добавляем параллельный интерфейс, алгоритм точно такой-же: в поле поиска вводим

pio.

Выбираем ширину порта 32 бит- Width (1-32 bits): 32. Направление выбираем Output. Для экспериментов нам хватит. Ну и напоследок добавляем сам процессор:

Версию процессора выберем самую простую Nios II/e. Далее настраиваем соединение наших блоков:

 Все блоки необходимо объединить согласно схеме. В настройках процессора Nios II (Classic) Processor необходимо выбрать местоположение векторов сброса и исключений. В качестве местоположения выбираем нашу набортную память onchip_memory2_0.s1

. Далее приступаем к генерации нашего Soft-микропроцессора:

 В качестве языка синтеза и симуляции выбираем Verilog и жмем Generate. После чего наш проект сохраняется:

 И генерируется:

 Далее добавляем созданный нами soft-процессор- nios_cpu.qsys, а также известные уже нам модули hvsync_ex.v и pic_gen.v.

Как в проекте Частотомер с VGA выходом добавлем синтезатор частоты и модуль встроенной памяти для хранения изображения цифр. Создаем схему с нашим процессором и модулем вывода VGA изображения:

 Пришло время создать программу для нашего процессора! Для этого в меню Пуск выбираем 

Nios II Software Build Tools for Eclipse и создаем новый проект- New->Nios II Application and BSP from Template:

 В настройках выбираем SOPS Info файл из нашего проекта и выбираем создание пустого проекта (Blank Project):

 Создадим файл main.c со следующим содержимым:

C++ Code:

  1. /*

  2. /*

  3.  * main.c

  4.  *

  5.  * Created on: 19 февр. 2016 г.

  6.  * Author: Visuale

  7.  */

  8. #include <stdio.h>

  9. #include "system.h"

  10. #include "altera_avalon_pio_regs.h"

  11.  

  12. //Структура для преобразования int to BCD

  13. typedef struct

  14. {

  15. char value[8];

  16. } BCD_Number;

  17.  

  18. //Функция преобразования int to BCD

  19. BCD_Number bin2bcd(int bin_number)

  20. {

  21. BCD_Number bcd_number;

  22. int i;

  23.  

  24. for(i = 0; i < sizeof(bcd_number.value); i++)

  25. {

  26. bcd_number.value[i] = bin_number % 10;

  27. bin_number /= 10;

  28. }

  29.  

  30. return bcd_number;

  31. }

  32.  

  33. //Главная функция

  34. int main ()

  35. {

  36. BCD_Number bcd_number;

  37. unsigned long port;

  38. unsigned int cnt=1;

  39. int i;

  40.  

  41. while(1) //Бесконечный цикл

  42. {

  43. IOWR_ALTERA_AVALON_PIO_DATA(PIO_0_BASE, port); //Записываем BCD число в порт

  44. for (i=0; i<(ALT_CPU_CPU_FREQ/5000); i++); //Задержка

  45.  

  46. cnt = (cnt >= 0xFFFF) ? 1u : (cnt+1); //Счетчик

  47. bcd_number=bin2bcd(cnt); //Преобразуем в BCd и собираем обратно в 32 битное BCD представление

  48. port = bcd_number.value[7]<<28 | bcd_number.value[6]<<24 |

  49. bcd_number.value[5]<<20 | bcd_number.value[4]<<16 |

  50. bcd_number.value[3]<<12 | bcd_number.value[2]<<8 |

  51. bcd_number.value[1]<<4 | bcd_number.value[0];

  52. }

  53. return 0;

  54. }

  55.  

В принципе тут все просто: счетчик cnt считает от 1 до 65535, далее мы его преобразуем в BCD вид, и выводим в порт нашего процессора. Далее правой клавишей мыши на проекте nios_first_bsp [nios_cpu]

выбираем пунк Nios II->Generate BSP:

 На проекте nios_first выбираем Build Project и если мы хотим инициализировать нашу память, то выбираем Make targets->Build:

Осталось последнее, настроить отладку. Синтезируем прошивку ПЛИС. Прошиваем. Если инициализируем нашу память On-Chip Memory (RAM or ROM) *.hex файлом, то на мониторе увидим цифры нашего счетчика. Но мы собрались настроить отладку, приступим. Правой клавишей мыши по проекту nios_first и выбираем Debug As->Debug Gonfigurations. В появившемся окне делаем двойной клик левой клавишей мыши на пункте Nios II Hardware появится новая конфигурация дебагера. В списке Project Name выбираем наш проект

nios_first:

На вкладке Target Connection выбираем Refresh Connections:

Нажимаем кнопку Debug, получаем предупреждение о переходе к виду eclipse в режиме отладки:

Нажимаем Yes и переходим в режим отладки нашего приложения:

Поздравляю! Мы создали свой soft-процессор. Ну и по традиции видео работы и исходные файлы:

Исходные файлы проекта Nios II: nios_II.zip

visuale.ru

Софт процессор Nios II — Часть 1

Nios II это 32-разрядная микропроцессорная архитектура для встраиваемых приложений (Soft-микропроцессор), разработанная специально для ПЛИС фирмы Altera. Nios II является развитием архитектуры Nios и находит применение в различных встраиваемых приложениях начиная от цифровой обработки сигналов до управляющих систем.
Прочитав эту статью, мне стало безумно интересно. Как, теперь можно обойтись без avr, 8051, msp430 или arm/cortex ? Можно! Но за все придется платить, и об этом в конце статьи.

Я попробую поделиться с вами той информацией, которой мне не хватало в самом начале.

Структура процессора

На представленной схеме представленны основные компоненты процессора NiosII и возможной системы на его основе.


Ниже приведены основные характеристики процессора Nios II/f:
  • более 2-х гигабайт адресного пространства;
  • отдельный кэш инструкций и кэш данных;
  • аппаратное выполнение умножения и деления;
  • 6-ти стадийный конвейер;
  • поддержка исключений;
  • система защиты памяти;
  • система виртуальной памяти;
  • выполнение операции умножения и сдвига за один такт;
  • динамическое предсказание ветвлений;
  • использование до 256 пользовательских инструкций;
  • широкие возможности отладки через JTAG модуль;
  • реализация требует 1400-1800 логических элементов FPGA;
  • реализация включает 3 блока памяти M4K, плюс блоки для кэш памяти;
  • производительность процессора 51 миллион операций в секунду (51 DMIPS) на частоте 50 МГц.

Если заинтересовало, прошу под кат

Попробуем разобрать все попорядку. Начнем с шины AVALON.

Для соединения компонентов процессорной системы используется синхронная шина Avalon. Как следует и официальной документации, шина Avalon может содержать следующие типы:

  • Avalon Clock Interface , для передачи синхросигналов и управления ими;
  • Avalon Reset Interface, для передачи сигналов сброса;
  • Avalon Streaming Interface (Avalon-ST), для поддержки однонаправленных потоков данных, включая мультиплексированные, пакетные и данные цифровых сигнальных процессоров;
  • Avalon Memory Mapped Interface (Avalon-MM), для чтения/записи с адресацией типа ведущий/ведомый;
  • Avalon Tri-State Conduit Interface (Avalon TC), для сопряжения с модулями вне кристалла;
  • Avalon Interrupt Interface, для реализации приоритетной системы прерываний;
  • Avalon Conduit Interface, для объединения отдельных сигналов или групп сигналов, которые не подходят под любой другой тип шины Avalon.

Регистры процессора Nios II

Архитектура процессора Nios II поддерживает плоский регистровый файл, содержащий  32 регистра общего назначения и до 32 управляющих регистров. Регистры общего назначения и управляющие регистры, представлены в таблицах.

Регистры общего назначения.

Нет специального Регистры общего назначения
Временный для исключений (1) Временный для отладки (2)
Глобальный указатель Указатель стека Указатель кадра Адрес возврата из исключений (1) Возврат из контрольной точки (2) Адрес возврата
(1)    – регистры не доступные в пользовательском режиме (2)    – регистры используются только JTAG Debug модулем Регистр r0, называемый регистром нуля, всегда содержит значение 0. Результатом чтения из этого регистра является значение 0. Записать другое значение в этот регистр невозможно. Регистр r1 используется ассемблером как временный регистр. Поэтому при разработке программ не рекомендуется его использовать. Регистры r24 и r29 используются для обработки исключений. Поэтому они недоступны в режиме пользователя. Регистры r25 и r30 используются исключительно модулем JTAG Debug в отладочных целях. Регистры r27 и r28 используются процессором для управления стеком. Регистр r31 хранит адрес возврата при вызове подпрограмм.

Регистры управления NiosII

Биты разрешения прерывания Биты возникших прерываний Уникальный идентификатор

В состав процессора  Nios II  может входить до 32 управляющих регистров. Их количество зависит от присутствия модуля защиты памяти или модуля управления памятью. В таблице 4 приведены форматы 6 основных базовых управляющих регистров. Причем имена, представленные там, понимаются ассемблером. Регистры используются следующим образом.

Регистр ctl0 отражает текущее состояние процессора. Чаще всего используют биты U и PIE этого регистра. U определяет режим работы процессора (пользователя/супервизора). PIE — бит разрешения внешних прерываний. Остальные биты используются при наличии модуля защиты памяти или модуля управления памятью.

Регистр ctl1 хранит копию регистра состояния во время обработки прерываний.

Регистр ctl2 хранит копию регистра состояния во время обработки точек останова.

Регистр ctl3 используется для разрешения прерываний от отдельных устройств в процессорной системе.

Регистр ctl4 указывает произошедшие прерывания.

Регистр ctl5 хранит уникальное значение, идентифицирующее процессор в многопроцессорной системе.

Адресация в процессоре Nios II

Процессор Nios II использует для адресации 32-битный адрес, при этом память является адресуемой по байтам. С помощью команд можно записывать/считывать слова (32), полуслова (16) и байты данных(8). Чтение или запись данных по адресам, которые не связаны с памятью или периферийными устройствами, приводит к неопределенным результатам. В процессоре NIOS II используются следующие способы адресации.

Непосредственная адресация. 16 битный операнд присутствует в команде. Он может быть дополнен знаковым разрядом до 32 разрядов при выполнении арифметической операции. Регистровая адресация. Операнды находятся в регистрах процессора. Относительная  регистровая адресация. Эффективный адрес операнда получается путем суммирования содержимого регистра и знакового 16 разрядного смещения, находящегося в самой команде. Косвенная регистровая адресация. Содержимое регистра является эффективным адресом операнда. Этот способ эквивалентен предыдущему способу, когда смещение равно нулю. Абсолютная адресация. 16-битный абсолютный адрес операнда может быть определен путем использования смещения относительно регистра r0, который всегда равен нулю.

Аппаратные прерывания



 
Аппаратные прерывания могут быть вызваны внешними источниками, такими как, например, устройства ввода/вывода.

Каждое такое устройство использует один из 32 входов запросов прерывания процессора. Прерывания происходят при выполнении следующих условий:
бит PIE регистра status установлен в единичное состояние;

один из входов запросов прерывания (irqk) процессора активирован;
соответствующий бит регистра разрешения прерываний ienable содержит единичное значение.

Содержимое регистра ipending отражает прерывания, требующие обработки. Обработчик прерываний определяет, какие из них имеют наибольший приоритет, и передает управление в соответствующую подпрограмму. Возврат из обработчика прерывания в основную программу осуществляется с помощью команды eret, описанной выше. Следует отметить, что перед выполнением этой команды необходимо модифицировать регистр ea. Модификация состоит в вычитании 4 из его содержимого. Это необходимо сделать, так как при возникновении сигнала прерывания выполнение текущей инструкции прекращается, а в регистр ea записывается адрес следующей команды.

JTAG Модуль

В состав процессорного ядра могут входить и специализированные блоки: JTAG UART – для обмена информацией с компьютером с помощью загрузочного кабеля (USB-Blaster или ByteBlaster), модуль JTAG Debug – для выполнения отладки программного обеспечения с помощью компьютера. Обязательная часть переферии, позволяет использовать команды
  • alt_printf() 
  • alt_putchar() 
  • alt_putstr() 
  • alt_getchar() 

для общения с виртуальной консолью разработчика.

MMU и MPU


В самой жирной реализации ( NiosII/f ) возможно включение блоков MPU или MMU. А это дает возможность для запуска полноценных линуксов. Одновременно в процессоре может быть только один блок, какой — выбирать вам.

non6.blogspot.com

Разрабатываем процессорный модуль NIOS II для IDA Pro / Positive Technologies corporate blog / Habr

Скриншот интерфейса дизассемблера IDA Pro

IDA Pro — знаменитый дизассемблер, который уже много лет используют исследователи информационной безопасности во всем мире. Мы в Positive Technologies также применяем этот инструмент. Более того, нам удалось разработать собственный процессорный модуль дизассемблера для микропроцессорной архитектуры NIOS II, который повышает скорость и удобство анализа кода.

Сегодня я расскажу об истории этого проекта и покажу, что получилось в итоге.

Предыстория


Все началось в 2016 году, когда для анализа прошивки в одной задаче нам пришлось разработать собственный процессорный модуль. Разработка велась с нуля по мануалу Nios II Classic Processor Reference Guide, который тогда был наиболее актуальным. Всего на эту работу ушло около двух недель.

Процессорный модуль разрабатывался для версии IDA 6.9. Для скорости был выбран IDA Python. В месте, где обитают процессорные модули, — подкаталоге procs внутри установочного каталога IDA Pro — есть три модуля на Python: msp430, ebc, spu. В них можно подсмотреть, как устроен модуль и как может быть реализована базовая функциональность дизассемблирования:

  • разбор инструкций и операндов,
  • их упрощение и вывод на экран,
  • создание смещений, перекрестных ссылок, а также кода и данных, на которые они ссылаются,
  • обработка конструкций switch,
  • обработка манипуляций со стеком и стековыми переменными.

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

Опытом создания процессорного модуля я решил поделиться с сообществом на конференции PHDays 8. Выступление вызвало интерес (видео доклада опубликовано на сайте PHDays), на нем присутствовал даже создатель IDA Pro Ильфак Гильфанов. Один из его вопросов был — реализована ли поддержка IDA Pro версии 7. На тот момент ее не было, но уже после выступления я пообещал сделать соответствующий релиз модуля. Вот тут-то и началось самое интересное.

Теперь самым свежим стал мануал от Intel, который использовался для сверки и проверки на наличие ошибок. Я значительно переработал модуль, добавил ряд новых возможностей, в том числе решив те проблемы, которые раньше победить не получалось. Ну и, конечно, добавил поддержку 7-й версии IDA Pro. Вот что получилось.

Программная модель NIOS II


NIOS II — это программный процессор, разработанный для ПЛИС фирмы Altera (сейчас часть Intel). С точки зрения программ он имеет следующие особенности: порядок байтов little endian, 32-битное адресное пространство, 32-битный набор инструкций, то есть на кодирование каждой команды используется фиксировано по 4 байта, 32 регистра общего и 32 специального назначения.

Дизассемблирование и кодовые ссылки


Итак, мы открыли в IDA Pro новый файл, с прошивкой под процессор NIOS II. После установки модуля мы увидим его в списке процессоров IDA Pro. Выбор процессора представлен на рисунке.

Предположим, что в модуле пока не реализован даже базовый разбор команд. Учитывая, что каждая команда занимает 4 байта, сгруппируем байты по четыре, тогда все будет выглядеть примерно так.

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

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

Одно из полезных свойств, которое можно реализовать в процессорных модулях, — это комментарии к командам. Если отключить вывод значений байтов и включить вывод комментариев, тот же участок кода уже будет выглядеть так.

Здесь, если вы впервые столкнулись с ассемблерным кодом новой для вас архитектуры, с помощью комментариев можно понять, что происходит. Далее примеры кода будут в таком же виде — с комментариями, чтобы не смотреть в мануал по NIOS II, а сразу понять, что происходит в участке кода, который приведен в качестве примера.

Псевдоинструкции и упрощение команд


Часть команд NIOS II являются псевдоинструкциями. Для таких команд нет отдельных опкодов, и сами они моделируются как частные случаи других команд. В процессе дизассемблирования выполняется упрощение инструкций — замена определенных сочетаний на псевдоинструкции. Псевдоинструкции в NIOS II можно в целом разделить на четыре вида:
  • когда один из источников регистр zero (r0) и его можно убрать из рассмотрения,
  • когда в команде имеется отрицательное значение и команда заменяется на противоположную,
  • когда условие заменяется на противоположное,
  • когда 32-битное смещение заносится в двух командах по частям (младшая и старшая) и это заменяется на одну команду.

Были реализованы первые два вида, поскольку замена условия особо ничего не дает, а 32-битные смещения имеют больше вариантов исполнения, чем представлено в мануале.

Например, для первого вида рассмотрим код.

Видно, что здесь часто встречается использование регистра zero в вычислениях. Если внимательно присмотреться к этому примеру, можно заметить, что все команды кроме передачи управления являются вариантами простого занесения значений в определенные регистры.

После реализации обработки псевдоинструкций получаем этот же участок кода, но теперь он выглядит уже более читаемым, и вместо вариаций команд or и add мы получаем вариации команды mov.

Стековые переменные


Архитектура NIOS II поддерживает стек, причем помимо указателя стека sp есть еще указатель на стековый фрейм fp. Рассмотрим пример небольшой процедуры, в которой используется стек.

Очевидно, что в стеке резервируется место под локальные переменные. Можно предположить, что регистр ra сохраняется в стековой переменной, а затем восстанавливается из нее.

После добавления в модуль функциональности, которая отслеживает изменения указателя стека и создает стековые переменные, этот же пример будет выглядеть следующим образом.

Теперь код выглядит немного понятней, и уже можно именовать стековые переменные и разбирать их назначение, переходя по перекрестным ссылкам. Функция в примере имеет тип __fastcall и ее аргументы в регистрах r4 и r5 заносятся в стек для вызова подпроцедуры, которая имеет тип _stdcall.

32-битные числа и смещения


Особенность NIOS II в том, что за одну операцию, то есть при выполнении одной команды, можно как максимум занести в регистр непосредственное значение размером в 2 байта (16 бит). С другой стороны, регистры процессора и адресное пространство являются 32-битными, то есть для адресации в регистр нужно занести 4 байта.

Для решения этой задачи используются смещения, состоящие из двух частей. Подобный механизм используется в процессорах в PowerPC: смещение состоит из двух частей, старшей и младшей, и заносится в регистр двумя командами. В PowerPC это выглядит следующим образом.

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

В свойствах смещения для старшей части используется нестандартный тип HIGHA16, иногда используется тип HIGh26, для младшей части — LOW16.

В самом вычислении 32-битных чисел из двух частей ничего сложного нет. Сложности возникают при формировании операндов как смещений для двух отдельных команд. Вся эта обработка ложится на процессорный модуль. Примеров, как это реализовать (тем более на Python), в IDA SDK нет.

В докладе на PHDays смещения стояли как нерешенная задача. Для решения проблемы мы схитрили: 32-битное смещение только с младшей части — по базе. База вычисляется как старшая часть, сдвинутая влево на 16 бит.

При таком подходе перекрестная ссылка образуется только с команды занесения младшей части 32-битного смещения.

В свойствах смещения видна база и отмечено свойство, чтобы рассматривать ее как число, чтобы не формировалось большое количество перекрестных ссылок на сам адрес, который принимаем как базу.

В коде под NIOS II встречается следующий механизм занесения 32-битных чисел в регистр. Сначала в регистр заносится старшая часть смещения командой movhi. Затем к ней присоединяется младшая часть. Сделано это может быть тремя способами (командами): сложением addi, вычитанием subi, логическим ИЛИ ori.

Например, в следующем участке кода регистры настраиваются на 32-битные числа, которые потом заносятся в регистры — аргументы перед вызовом функции.

После добавления вычисления смещений получим следующее представление этого блока кода.

Получаемое 32-битное смещение выводится рядом с командой занесения его младшей части. Этот пример достаточно наглядный, и мы даже могли бы все 32-битные числа легко подсчитать в уме, просто присоединив младшую и старшую части. Судя по значениям, скорее всего, они не являются смещениями.

Рассмотрим случай, когда при занесении младшей части используется вычитание. В этом примере определить конечные 32-битные числа (смещения) с ходу уже не получится.

После применения вычисления 32-битных чисел получится следующий вид.

Здесь мы видим, что теперь, если адрес есть в адресном пространстве, на него формируется смещение, и значение, которое образовалось в результате соединения младшей и старшей частей, рядом уже не выводится. Здесь получили смещение на строку «10/22/08». Чтобы остальные смещения указывали на валидные адреса, увеличим немного сегмент.

После увеличения сегмента получаем, что теперь все вычисленные 32-битные числа являются смещениями и указывают на валидные адреса.

Выше упоминалось, что есть еще вариант вычисления смещений, когда используется команда логического ИЛИ. Вот пример кода, где таким образом вычисляются два смещения.

То, которое вычисляется в регистре r8, потом заносится в стек.

После преобразования видно, что в данном случае регистры настраиваются на адреса начала процедур, то есть в стек заносится адрес процедуры.

Чтение и запись относительно базы


До этого мы рассматривали случаи, когда заносимое с помощью двух команд 32-битное число могло быть просто числом и также смещением. В следующем примере в старшую часть регистра заносится база, затем относительно нее происходят чтение или запись.

После обработки таких ситуаций получаем смещения на переменные из самих команд чтения и записи. При этом также в зависимости от размерности операции выставляется размер самой переменной.

Конструкции switch


Встречаемые в бинарных файлах конструкции switch могут облегчить анализ. Например, по количеству случаев выбора внутри конструкции switch можно локализовать switch, ответственный за обработку некоторого протокола или системы команд. Поэтому встает задача распознавания самих switch и их параметров. Рассмотрим следующий участок кода.

Поток исполнения останавливается на регистровом переходе jmp r2. Далее идут блоки кода, на которые есть ссылки из данных, причем в конце каждого блока происходит прыжок на одну и ту же метку. Очевидно, что это конструкция switch и эти отдельные блоки обрабатывают конкретные случаи из нее. Выше также можно увидеть проверку количества случаев и прыжок по умолчанию.

После добавления обработки switch этот код будет выглядеть следующим образом.

Теперь обозначены сам прыжок, адрес таблицы со смещениями, количество случаев, а также каждый случай с соответствующим номером.

Сама таблица со смещениями на варианты выглядит следующим образом. Для экономии места приведены первые пять ее элементов.

По сути обработка switch заключается в проходе по коду обратно и поиске всех его составляющих. То есть описывается некоторая схема организации switch. Иногда в схемах могут быть исключения. Это может быть причиной случаев, когда в существующих процессорных модулях не распознаются, казалось бы, наглядные switch. Получается, что реальный switch просто не подпадает под схему, которая определена внутри процессорного модуля. Еще возможны варианты, когда схема вроде бы есть, но внутри нее есть еще другие команды, не участвующие в схеме, или основные команды переставлены местами, или она разорвана переходами.

Процессорный модуль NIOS II распознает switch с такими «посторонними» инструкциями между основными командами, а также с переставленными местами основными командами и с разрывающими схему переходами. Используется обратный проход по пути исполнения с учетом возможных переходов, разрывающих схему, с установкой внутренних переменных, которые сигнализируют различные состояния распознавателя. В итоге распознается порядка 10 различных вариантов организации switch, встреченных в прошивках.

Инструкция custom


В архитектуре NIOS II есть интересная особенность — инструкция custom. Она дает доступ к 256 задаваемым пользователем инструкциям, которые возможны в архитектуре NIOS II. В своей работе, помимо регистров общего назначения, инструкция custom может обращаться к специальному набору из 32 custom-регистров. После реализации логики разбора команды custom получаем следующий вид.

Можно заметить, что две последние инструкции имеют одинаковый номер инструкции и, похоже, выполняют одинаковые действия.

По инструкции custom существует отдельный мануал. Согласно ему, одним из самых полных и современных вариантов набора инструкций custom является набор инструкций для работы с плавающей точкой — NIOS II Floating Point Hardware 2 Component (FPh3). После реализации разбора команд FPh3 пример будет выглядеть так.

По мнемонике двух последних команд убеждаемся, что они действительно выполняют одно и то же действие — команду fadds.

Переходы по значению регистра


В исследуемых прошивках часто встречается ситуация, когда выполняется прыжок по значению регистра, в который перед этим заносится 32-битное смещение, определяющее место прыжка.

Рассмотрим участок кода.

В последней строчке происходит прыжок по значению регистра, при этом видно, что прежде в регистр заносится адрес процедуры, которая начинается в первой строчке примера. В данном случае очевидно, что прыжок совершается в ее начало.

После добавления функционала распознавания прыжков получается следующий вид.

Рядом с командой jmp r8 выводится адрес, куда происходит прыжок, если его удалось вычислить. Также формируется перекрестная ссылка между командой и адресом, куда происходит прыжок. В данном случае ссылку видно в первой строчке, сам прыжок выполняется с последней строчки.

Значение регистра gp (global pointer), сохранение и загрузка


Распространенным является использование глобального указателя, который настраивается на какой-либо адрес, и относительно него происходит адресация переменных. В NIOS II для хранения глобального указателя используется регистр gp (global pointer). В определенный момент, как правило в процедурах инициализации прошивки, в регистр gp заносится значение адреса. Процессорный модуль обрабатывает эту ситуацию; для иллюстрации этого далее приведены примеры кода и окно вывода IDA Pro при включенных отладочных сообщениях в процессорном модуле.

В данном примере процессорный модуль находит и вычисляет значение регистра gp в новой базе. При закрытии базы idb значение gp сохраняется в базе.

При загрузке уже существующей базы idb и если значение gp уже было найдено, оно загружается из базы, что показано в отладочном сообщении в следующем примере.

Чтение и запись относительно gp


Распространенными операциями являются чтение и запись со смещением относительно регистра gp. Например, в следующем примере выполняются три чтения и одна запись такого вида.

Поскольку значение адреса, которое хранится в регистре gp, мы уже получили, то можно адресовать такого рода чтения и записи.

После добавления обработки ситуаций чтения и записи относительно регистра gp получим более удобную картину.

Здесь можно увидеть, к каким переменным идет обращение, отследить их использование и выявить их назначение.

Адресация относительно gp


Встречается другое использование регистра gp для адресации переменных.

Например, здесь мы видим, что регистры настраиваются относительно регистра gp на некоторые переменные или области данных.

После добавления функциональности, распознающей такие ситуации, преобразующей в смещения и добавляющей перекрестные ссылки, получим следующий вид.

Здесь уже видно, на какие области относительно gp настраиваются регистры, и становится более понятным, что происходит.

Адресация относительно sp


Аналогичным образом в следующем примере регистры настраиваются на некоторые области памяти, на этот раз относительно регистра sp — указателя стека.

Очевидно, что регистры настраиваются на некоторые локальные переменные. Такие ситуации — настройка аргументов на локальные буферы перед вызовами процедур — встречаются достаточно часто.

После добавления обработки (преобразования непосредственных значений в смещения) получим следующий вид.

Теперь становится ясно, что после вызова процедуры значения загружаются из тех переменных, адреса которых были переданы в качестве параметров перед вызовом функции.

Перекрестные ссылки из кода на поля структур


Задание структур и их использование в IDA Pro может облегчить анализ кода.

Глядя на этот участок кода, можно понять, что поле field_8 инкрементируется и, возможно, является счетчиком наступления какого-либо события. В случае если чтение и запись поля разнесены в коде на большом расстоянии, в анализе могут помочь перекрестные ссылки.

Рассмотрим саму структуру.

Хотя обращения к полям структур есть, как видим, перекрестных ссылок с кода на элементы структур не образовалось.

После того, как подобные ситуации обрабатываются, для нашего случая все будет выглядеть следующим образом.

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

Нестыковки между мануалом и реальностью


В мануале при декодировании некоторых команд определенные биты должны принимать строго определенные значения. Например, для команды возврата из исключения eret биты 22–26 должны быть равны 0x1E.

Вот пример этой команды из одной прошивки.

Открывая другую прошивку в месте с похожим контекстом, встречаем иную ситуацию.

Эти байты не преобразовались автоматически в команду, хотя обработка всех команд есть. Судя по окружению, и даже похожему адресу, это должна быть одна и та же команда. Посмотрим внимательно на байты. Это та же команда eret, за тем исключением, что биты 22–26 не равны 0x1E, а равны нулю.

Приходится немного исправить разбор этой команды. Теперь он не совсем соответствует мануалу, но соответствует действительности.

Поддержка IDA 7


Начиная с версии IDA 7.0 достаточно сильно поменялся API, предоставляемый IDA Python для обычных скриптов. Что же касается процессорных модулей — тут изменения колоссальны. Несмотря на это процессорный модуль NIOS II удалось переделать под 7-ю версию, и он в ней успешно заработал.

Единственный непонятный момент: при загрузке нового бинарного файла под NIOS II в IDA 7 не происходит начального автоматического анализа, который присутствует в IDA 6.9.

Заключение


Помимо базовой функциональности дизассемблирования, примеры которой есть в SDK, в процессорном модуле реализовано много различных возможностей, облегчающих труд исследователя кода. Понятно, что все это можно сделать и вручную, но, к примеру, когда на бинарный файл с прошивкой размером в пару мегабайтов встречаются тысячи и десятки тысяч смещений разных видов, — зачем тратить на это время? Пусть это сделает для нас процессорный модуль. Ведь как помогают приятные возможности быстрой навигации по исследуемому коду с помощью перекрестных ссылок! Это делает IDA таким удобным и приятным инструментом, каким мы его знаем.

Автор: Антон Дорфман, Positive Technologies

habr.com

Интересные сайты и полезные программы

Ссылки на статьи и форумы 
Документирование ПЛИС

Краткий курс HDL Справочное руководство по VHDL Quartus II по-русски

Nios II Processor Peripherals and Interfaces — Периферия процессора Nios 2

HAL — Слой аппаратной абстракции (HAL) для процессора NIOS 2

newlib — Новая библиотека Си для встраиваемых систем

Использование новой библиотеки — Уменьшение кода

Справочник HAL API —

Инструментальные средства проектирования и отладки систем на программируемых кристаллах компании Altera —

Начало работы с Nios 
Часть 1. Создание приложения по шаблону 
Часть 2. Собственное простое приложение 
Часть 3. Собственный проект работы с данными 
Часть 4. Собственный проект арифметических операций над целочисленными данными 
Часть 5. Установка точек останова 
Часть 6. Вывод данных в регистр PIO 
Часть 7. Управление интервальным таймером 
Часть 8. Обработка прерываний от интервального таймера

Загрузка программы из EPCS флеш памяти

В этой статье обсуждается, как спроектировать систему SOPC Builder с функцией загрузки программы для процессора Nios II из EPCS флеш памяти, использующейся для загрузки образа конфигурации чипа Altera. Описано, как конвертировать файлы SOF в FLASH, ELF в FLASH, FLASH в HEX, как создавать JIC файл и проверять работу программы в терминале Nios II EDS. 
Часть 1. Генерирование системы SOPC Builder. 
Часть 2. Настройка и компиляция проекта Quartus II. 
Часть 3. Создание BSP и программного проекта в среде Nios II EDS на платформе Eclipse 
Часть 4. Конвертирование программных файлов и программирование чипа Altera.

Ваш первый проект на Nios II

Adding PIO ( Port Input/Output) in NIOS with INTERRUPT — PIO с прерываниями

Загрузчик — Пример реализации загрузчика образа программного кода из EPCS.

Конфигурирование ПЛИС — Конфигурирование ПЛИС Altera со статической памятью конфигурации

Примеры

Altera Nios II QiuckStart — Осваиваем принципы построения системы и инфраструктуру сборки.

Сборка Nios — Принципы построения системы

SDRAM_DDR2 — Cкоростная память DDR3: стоит ли игра свеч?

SDRAM — Подключение SDRAM

SDRAM controller — Контроллер SDRAM по русски

SDRAM controller — FPGA VHDL SDRAM Controller

SDRAM — Описание работы SDRAM от фирмы Micron

Video NIOS — Преобразование видеосигнала с помощью Nios

SDRAM and Nios — Программа проверки SDRAM

NIOS ASSEMBLER — NIOS 2 команды

NIOS 2 — NIOS 2 сборка

Nios II Softwarе 

Пример2 — Пример реализации загрузчика образа программного кода из EPCS

САПР ALTIUM DESIGNER 6 — СКВОЗНОЕ ПРОЕКТИРОВАНИЕФУНКЦИОНАЛЬНЫХ УЗЛОВ РЭС НА ПЕЧАТНЫХ ПЛАТАХ В САПР ALTIUM DESIGNER 6

ПЛИС VHDL Verilog — Ethernet на Cyclon IV DE0 Nano Board

NIOS- QSYS

SOPC_Builder 
SOPC Builder — Использование SOPC Builder для создания процессорной системы на программируемом кристалле фирмы Altera 
SOPC_Builder_4_0 — Компоненты SOPC_Builder 
SOPC_Builder_10_0 — Сквозной контроль разработки компонента SOPC_Builder 
Описание мегафункций 
Ethernet — Triple-Speed Ethernet MegaCore Function 
Stratix2 — Stratix II Memory Board 1 Block Diagram 
ModelSim 
Симулирование ModelSim — моделирование в ModelSim
Симулятор ModelSim — Stratix II Memory Board 1 Block Diagram 
Quartus + ModelSim. Интеграция в картинках и создание TestBenchm 
Поддержка ModelSim 
10G 
Симуляция проектов имеющих трансиверы 
Cyclone V Transceiver PHY Basic Design Examples — Altera Wiki 
Симуляция SDRAM контроллера в ModelSim- HDMI

ModelSim. С чего начать- HDMI DDR3- Форум Simulating Memory IP DDR3 controller- структура DDR3 PHY-Параметры PHY DDR3 Design Example — Basic DDR3 UniPHY bring up- Симуляция fpga4fun — HDMI скачать altera.doc- Инструментальные средства проектирования и отладки систем на программируемых Скачать avalon-2.doc- Шина Avalon Посмотреть — Программирование конфигурационных последовательных ПЗУ фирмы Altera через JTAG Все О LVDS Взгляд на 10G Ethernet со стороны FPGA разработчика из песочницы Взгляд на 10G Ethernet со стороны FPGA разработчика из песочницы Использование скриптов TCL для управления проектами Quartus II Поднимаем SOC: ARM + FPGA Конечный автомат Настраиваем и запускаем Nios II в Intel Quartus Prime 18.0 (Timing Analyzer Подключение SRAM памяти в NIOS ИССЛЕДОВАНИЕ МЕТОДОВ И РАЗРАБОТКА УСТРОЙСТВ ОБРАБОТКИ ИНФОРМАЦИИ В СИСТЕМАХ НА КРИСТАЛЛЕ

serurvis.3dn.ru

Софт процессор Nios II — Часть 2

Процессор Nios II может быть сконфигурирован под требуемую задачу. Существует 3 различные версии конфигурации процессора.
  • Nios II/f (fast) – версия процессора, предназначенная для достижения максимальной производительности. Конфигурация имеет широкий набор опций для оптимизации процессора по производительности.
  • Nios II/s (standart) – стандартная версия процессора, требующая меньше ресурсов для реализации, и характеризующаяся меньшей производительностью.
  • Nios II/e (economy) – экономичная версия процессора, требующая наименьшее количество ресурсов кристалла для реализации, и обладающая ограниченным набором возможностей.

Мы будем использовать версию economy и подключим необходимый минимум переферии:

  • JTAG-UART
  • On-chip Memory
  • PIO — порт ввода-вывода
  • Timer — таймер

Для начала этого нам хватит, даже с избытком.

Тут следует сделать отступление и поговорить о используемой плате/кристалле. Я использую клон платы от DIGIACIS.

Based on Altera EP2C5T144 FPGA chip

Configuration EPROM chip EPCS4, size 4Mbit

Onboard 50M active patch oscillator (crystal oscillator in the board’s back)

5V power supply

The board has the power indicator light and reset switch

Onboard 3 SMD LED

All the IO ports and clock pin through the pin to bring out (any of these interfaces can be used for memory and peripheral expansion)

Создаем новый проект в Quartus2, выбираем нужный чип. В готовом проекте создаем top-level файл.

Выберете пункт Block Diagram / Schematic File. Откроется файл с сеткой, где вы сможете должны собрать следующую схему :

Схема собирается из простых примитивов.

Далле в меню Tools -> Qsys . Запустится мастер Qsys, в списке компонентов выберете Nios 2 Processor. Откроется окно настроек процессора.

По умолчанию мастер настроек предлагает создать Nios2/f. Нам же нужен Nios2/e, к тому же версии Standart и Full версии являются лицензируемыми. Остальные настройки оставьте теми же.

Далее добавляем компоненты JTAG-UART, и OnChip Memory. Если настройки первого оставляем дефолтными, то настройки памяти надо изменить. В пункте Tital memory size впишите 8192, что составляет 8к байт.


Далее добавьте компонент PIO (Parallel IO), по умолчанию установите ширину 8 бит, направление Output и установите галку Enable individual bit setting/clearning. 

Следующим шагом добавьте компонент таймера. Введите в поиске «Timer» и добавьте компонент.

В настройках укажите период 100us (100 микросекунд или 1/10 секунды).

Когда все компоненты добавлены, их необходимо соединить.

Соедините линии reset, clk и s1 как показано на рисунке. Создав эти соединения вы создадите единую систему тактирования, сброса и дины инструкций и данных.

Далее необходимо назначить адреса переферии, памяти и процессора. Для этого выберите пункт меню System -> Assign Base Adresses. Адреса автоматически установятся. Без этого вы получите массу ошибок о взаимном перекрытии адресов (overlaps).

Далее необходимо установить приоритет прерываний двойным щелчком установите «0» приоритет у таймиера и «16» у jtag прерываний.

Как видите у нас все еще остались две ошибки. двойным щелчком откройте настройки процессора nios2. 

В разделах Reset Vector и Exception Vector установите oncip_memory2_0. Это позволит загружаться контроллеру из оперативной памяти.

Это последний шаг по конфигурированию в Qsys. Перейдите во вкладку Generation и нажмите кнопку Generate.

После недолгого ожидания система будет сгенерирована.

Добавьте сгенерированный компонет на схему : 

Для продолжения нажмите кнопу Start Analysis & Synthesis. Проект удет проверен на ошибки и подготовлен к симуляции. В случае отсутствия ошибок откройте компонент Pin Planner и расположите пины : output типа по своему усмотрению, а clk — на вывод к которому подключен выход тактового генератора.

Последним шагом является компиляция. Нажмите кнопку Start Compilation, и скомпилируйте проект.

Всё. Теперь остается только загрузить файл прошивки в плату!

non6.blogspot.com

RTOS по-русски


Главная > RTOS по-русски

&nbsp Раздел «RTOS по-русски» содержит переводы документации по реализации операционной системы реального времени (RTOS) на базе процессора Nios II.
Приятного чтения!


СОДЕРЖАНИЕ
«Использование MicroC/OS-II RTOS в процессорах NIOS II. Учебное руководство»
«10. Операционная система реального времени MicroC/OS-II»
«11. Изернет и TCP/IP стек NicheStack — Версия под Nios II
«Учебное пособие. Использование стека NicheStack TCP/IP — версия под Nios II
Использование MicroC/OS-II RTOS в процессорах NIOS II. Учебное руководство
Это перевод Андреем Тимченко учебного пособия Using MicroC/OS-II RTOS with the Nios II Processor. Tutorial. TU-NIOSII-MCRC/OS-II-3.0
В учебном пособии содержатся пошаговые инструкции реализации примера проека Nios II Ethernet Standard Design Example. В примере проекта реализованы некоторые базовые функции операционной системы реального времени, такие как помещение в очередь сообщений и использование общего ресурса, защищённого семафором.
1. Выполнение учебного руководства &nbsp 1-1
Программные и аппаратные требования &nbsp 1-1
&nbsp &nbsp Получение аппаратных файлов проекта для примера &nbsp 1-1
&nbsp &nbsp Получение программных файлов проекта для примера &nbsp 1-2
Обучающий проект MicroC/OS II &nbsp 1-2
&nbsp &nbsp Создание программного проекта MicroC/OS-II &nbsp 1-3
&nbsp &nbsp Конфигурация BSP &nbsp 1-7
&nbsp &nbsp Запуск программного проекта MicroC/OS-II. &nbsp 1-10
10. Операционная система реального времени MicroC/OS-II
Это мой перевод 10 главы 3 раздела 3 тома Nios II Software Developer’s Handbook . 10. MicroC/OS-II Real Time Operating System
В главе предоставляется общая информация об особенностях реализации операционной системы реального времени MicroC/OS-II от Micrium на базе процессорной системы Nios II.
Введение в MicroC/OS-II RTOS &nbsp 10-1
&nbsp &nbsp Дополнительная информация &nbsp 10-1
&nbsp &nbsp Лицензирование &nbsp 10-2
Другие поставщики RTOS &nbsp 10-2
Nios II вариант реализации MicroC/OS-II RTOS &nbsp 10-2
&nbsp &nbsp Архитектура MicroC/OS-II &nbsp 10-2
&nbsp &nbsp Многопоточная отладка в MicroC/OS-II &nbsp 10-3
&nbsp &nbsp Драйверы устройств MicroC/OS-II &nbsp 10-3
&nbsp &nbsp Драйверы сохранения потока HAL &nbsp 10-4
&nbsp &nbsp Стандартная библиотека newlib ANSI C &nbsp 10-5
&nbsp &nbsp Программы обработки прерываний (ISR) для MicroC/OS-II &nbsp 10-6
Реализация MicroC/OS-II RTOS проектов на процессоре Nios II &nbsp 10-6
11. Изернет и TCP/IP стек NicheStack — Версия под Nios II
Это мой перевод Section III. Advanced Programming Topics. 11. Ethernet and the NicheStack TCP/IP Stack — Nios II Edition.
В этой главе обсуждается стек NicheStack TCP/IP — варианта упрощённой реализации TCP/IP стека для встраиваемых систем с малой памятью. Стек поддерживает следующие протоколы: IP, ICMP, UDP, TCP, RTT, DHCP, ARP, а также Socket API. В главе сделан акцент именно на Nios II реализацию стека: описаны инициализация и правила использования в программе.
11. Изернет и TCP/IP стек NicheStack — Версия под Nios II &nbsp 11-1
Предварительные условия для понимания устройства NicheStack TCP/IP стека &nbsp 11-2
Введение в NicheStack TCP/IP стек — версия под Nios II &nbsp 11-2
&nbsp &nbsp Файлы и директории NicheStack TCP/IP стека &nbsp 11-3
&nbsp &nbsp Лицензирование &nbsp 11-3
Другие TCP/IP стеки для процессора Nios II &nbsp 11-3
Использование NicheStack TCP/IP стека — версия под Nios II &nbsp 11-3
&nbsp &nbsp Требования к системе Nios II &nbsp 11-4
&nbsp &nbsp Задачи для NicheStack TCP/IP стека &nbsp 11-4
&nbsp &nbsp Инициализация стека &nbsp 11-4
&nbsp &nbsp &nbsp &nbsp alt_iniche_init() &nbsp 11-5
&nbsp &nbsp &nbsp &nbsp netmain() &nbsp 11-5
&nbsp &nbsp &nbsp &nbsp iniche_net_ready &nbsp 11-5
&nbsp &nbsp &nbsp &nbsp get_mac_addr() и get_ip_addr() &nbsp 11-6
&nbsp &nbsp Вызов интерфейса гнезда &nbsp 11-7
Конфигурирование NicheStack TCP/IP стека в программе Nios II &nbsp 11-9
&nbsp &nbsp Основные настройки NicheStack TCP/IP стека &nbsp 11-9
&nbsp &nbsp Настройки IP &nbsp 11-10
&nbsp &nbsp Настройки TCP &nbsp 11-10
Информация для дальнейшей работы &nbsp 11-10
Информация об ограничениях &nbsp 11-10
Учебное пособие. Использование стека NicheStack TCP/IP — версия под Nios II
Это мой перевод Using the NicheStack TCP/IP Stack — Nios II Edition Tutorial. TU-01001-3.0
В главе подробно описывается пример проекта Nios II Simple Socket Server. Описывается его взаимодействие с системными задачами MicroC/OS-II, детально описано фукнционирование и настройка приложения.
Введение &nbsp 1-1
Аппаратные и программные требования &nbsp 1-2
Файлы учебного пособия &nbsp 1-2
&nbsp &nbsp Файлы аппаратного проекта &nbsp 1-2
&nbsp &nbsp Файлы программы &nbsp 1-2
Процесс разработки программы &nbsp 1-3
&nbsp &nbsp Создание нового проекта Nios II &nbsp 1-4
&nbsp &nbsp Конфигурирование BSP &nbsp 1-7
&nbsp &nbsp Изучение файлов проекта Nios II Simple Socket Server &nbsp 1-11
&nbsp &nbsp Сборка и запуск проекта Nios II Simple Socket Server &nbsp 1-11
&nbsp &nbsp Взаимодействие с Nios II Simple Socket Server &nbsp 1-13
Обзор Nios II Simple Socket Server &nbsp 1-16
&nbsp &nbsp Унифицированные имена в программе &nbsp 1-16
&nbsp &nbsp Архитектура программы &nbsp 1-17
&nbsp &nbsp Ресурсы MicroC/OS-II &nbsp 1-19
&nbsp &nbsp &nbsp &nbsp Задачи &nbsp 1-19
&nbsp &nbsp &nbsp &nbsp Ресурсы коммуникаций внутренних задач &nbsp 1-20
&nbsp &nbsp Инициализация стека NicheStack TCP/IP &nbsp 1-20
&nbsp &nbsp Подробности реализации Nios II Simple Socket Server &nbsp 1-21
Важный концепт NicheStack TCP/IP Stack &nbsp 1-22
&nbsp &nbsp Обработка ошибок &nbsp 1-22
&nbsp &nbsp Создание задачи по умолчанию в NicheStack TCP/IP Stack &nbsp 1-22
&nbsp &nbsp Создание задач, использующих интерфейс гнезда NicheStack TCP/IP Stack &nbsp 1-23
&nbsp &nbsp Приоритеты задач в проекте Nios II Simple Socket Server &nbsp 1-25
&nbsp &nbsp &nbsp &nbsp Внутренние задачи MicroC/OS-II &nbsp 1-26
&nbsp &nbsp &nbsp &nbsp Внутренние задачи NicheStack TCP/IP Stack &nbsp 1-26
&nbsp &nbsp &nbsp &nbsp Задачи инициализации сети &nbsp 1-26
&nbsp &nbsp &nbsp &nbsp Сетевые задачи пользователя &nbsp 1-26
&nbsp &nbsp &nbsp &nbsp Несетевые задачи пользователя &nbsp 1-26
&nbsp &nbsp &nbsp &nbsp Задачи мониторинга PHY &nbsp 1-26
&nbsp &nbsp &nbsp &nbsp Размер стека задач &nbsp 1-27
Что делать дальше? &nbsp 1-27
2. Дополнение А &nbsp 2-28
&nbsp &nbsp Подробности установки аппаратных средств &nbsp 2-28
&nbsp &nbsp Введение &nbsp 2-28
&nbsp &nbsp Сетевое подключение &nbsp 2-28

naliwator.narod.ru

content


Главная > Новости

&nbsp Вы попали в личную он-лайн библиотеку Егорова Антона. Здесь содержатся мои переводы документации фирмы Altera. Всё, что может помочь вам работать в среде Quartus II, вникнуть в тонкости устройства чипов, разработке и ведению проектов Quartus II. Здесь русский человек может осмыслить Altera по-русски и Quartus II по-русски. Все документы он-лайн библиотеки созданы в виде отдельных .pdf файлов. Для ускорения поиска нужного материала, используйте поиски по странице, по оглавлению и по сайту. Это свободная библиотека, но призываю с уважением относиться к труду её автора. Выявленные ошибки направляете мне по почте. На отзывы и пожелания с удовольствием отвечаю.
Приятного чтения!
НОВОСТИ
05.09.2013 Важная новость! Ввиду случившегося факта переезда сайта с хостинга на народе в Ucos, может случаться проблема с загрузкой контента моего сайта. Решения у проблемы два: переписать движок так, как хочет его Ucos, дабы снабжать страницу собственной рекламой, либо установить в браузере дополнение, которое борется с подобной навязчивой рекламой, например Adblock Plus.
16.06.2013 «Руководство пользователя флеш программатором Nios II» (Здесь)
15.04.2013 Обновление материала «Тактовые сети и PLL в семействе Cyclone III» (Здесь)
16.10.2012 «TL431, TL431A Прецизионные настраиваемы регуляторы шунта» (Здесь)
11.10.2012 «Серия PC817 Оптопара для монтажа высокой плотности» (Здесь)
06.09.2012 Обновление материала «Встроенные умножители в семействе Cyclone III» (Здесь)
21.08.2012 Обновление материала «Блоки памяти в семействе Cyclone III» (Здесь)
07.08.2012 Обновление материала «Логические элементы и блоки массивов логики в чипах Cyclone III» (Здесь)
03.08.2012 «Общее представление о семействе Cyclone III» (Здесь)
03.07.2012 «Учебное пособие. Использование стека NicheStack TCP/IP — версия под Nios II» (Здесь)
18.05.2012 «11. Изернет и TCP/IP стек NicheStack — Версия под Nios II» (Здесь)
25.04.2012 «Использование MicroC/OS-II RTOS в процессорах NIOS II. Учебное руководство» (Здесь)
17.04.2012 «Операционная система реального времени MicroC/OS-II» (Здесь)
07.03.2012 «Отладка цепей приёмопередатчика с помощью System Console» (Здесь)
01.03.2012 «Обработка прерываний от интервального таймера» (Здесь)
25.11.2011 «Симуляция проектов со встроенным процессором Nios II» (Здесь)
28.09.2011 «Отладка Nios II системы при помощи встроенного логического анализатора SignalTap II» (Здесь)
12.08.2011 «SLS. IP ядро устройства USB 2.0″ (Здесь)
17.06.2011 «Подключение SRAM памяти» (Здесь)
09.06.2011 «Настольная книга по встраиваемым системам. 4.Инструменты командной строки Nios II» (Здесь)
23.05.2011 «SOPC Builder. Ядро SPI» (Здесь)
12.05.2011 «SOPC Builder. Сквозной контроль разработки компонента SOPC Builder» (Здесь)
28.04.2011 «SOPC Builder. Ядро UART» (Здесь)
14.04.2011 «Tcl скриптирование» (Здесь)
01.04.2011 «Процессор Nios II Настольная книга программиста. 9.Кэш и прочно сопряжённая память» (Здесь)
25.03.2011 «Руководство пользователя H-JTAG» (Здесь)
21.03.2011 Статья «Начало работы с Nios II» (Здесь)
14.03.2011 «SOPC Builder. Ядро контроллера SDRAM» (Здесь)
05.03.2011 «Процессор Nios II Настольная книга программиста. Обработка исключений» (Здесь)
14.02.2011 «Процессор Nios II Настольная книга программиста. Разработка драйверов устройств для слоя аппаратной абстракции (HAL)» (Здесь)
09.02.2011 «SOPC Builder. Ядро PIO» (Здесь)
04.02.2011 Появился раздел «статьи».
Статья «Загрузка программы из EPCS флеш памяти» (Здесь)
31.01.2011 «SOPC Builder. Ядро интервального таймера» (Здесь)
26.01.2011 «SOPC Builder. Компоненты» (Здесь)
17.01.2011 «Альтернативные методы загрузки Nios II» (Здесь)
14.01.2011 Обновление дизайна сайта.
03.01.2011 Моей библиотеке исполняется год. За 2010 год ресурс посетили 8209 посетителей. К моему удивлению, аудитория сайта не ограничена границами Союза. Техническая документация на русском языке востребована в США, Канаде, Японии, Корее, Израиле, Германии, Франции, Польше, Норвегии, Сербии, Болгарии, Греции, Италии, Нидерландах, Финляндии, Малайзии и Сирии. Я рад такому широкому расселению наших соотечественников. В новом году я продолжу поддерживать свой проект и безвозмездно делиться с вами интересными для меня темами.
С уважением, Егоров Антон.
01.12.2010 «Процессор Nios II Настольная книга программиста. Разработка программ с использованием слоя аппаратной абстракции» (Здесь)
23.11.2010 «SOPC Builder. Ядро последовательного флеш контроллера EPCS» (Здесь)
16.11.2010 «SOPC Builder. Система структуры внутренних соединений для интерфейсов с распределением в памяти» (Здесь)
08.11.2010 «Процессор Nios II Настольная книга программиста. Общее представление о слое аппаратной абстракции» (Здесь)
25.10.2010 «Процессор Nios II Настольная книга программиста. Начало работы с графической оболочкой» (Здесь)
12.10.2010 «Поддержка Mentor Graphics ModelSim/QuestaSim» (Здесь)
05.10.2010 «Симуляция проекта с помощью инструментов EDA» (Здесь)
22.09.2010 «Учебное пособие по ModelSim SE» (Здесь)
29.07.2010 «Процессор Nios II Настольная книга. Архитектура процессора» (Здесь)
21.07.2010 «Отладка в системе с помощью исходников и пробников в системе» (Здесь)
08.07.2010 «Обновление памяти и констант в системе» (Здесь)
02.07.2010 «Процессор Nios II Настольная книга. Введение» (Здесь)
21.06.2010 «Nios II Разработка аппаратных средств» (Здесь)
08.06.2010 «Отладка в системе с использованием внешних логических анализаторов» (Здесь)
01.06.2010 «Отладка в системе с использованием встроенного логического анализатора SignalTap II» (Здесь)
18.05.2010 «Интерфейс с внешней памятью в чипах Cyclone III» (Здесь)
05.05.2010 «Высокоскоростные диффренциальные интерфейсы в чипах Cyclone III» (Здесь)
01.05.2010 «Быстрая отладка проекта с помощью SignalProbe» (Здесь)
18.04.2010 «Средства ввода/вывода в чипах Cyclone III» (Здесь)
06.04.2010 «Встроенные умножители в чипах Cyclone III» (Здесь)
04.04.2010 «Блоки памяти в чипах Cyclone III» (Здесь)
02.04.2010 «Многодорожечные внутренние соединения в чипах Cyclone III» (Здесь)
12.03.2010 «Логические элементы и блоки массивов логики в чипах Cyclone III» (Здесь)
04.03.2010 «Экосистема отладки в чипе» (Здесь)
24.02.2010 «Тактовые сети и PLL в чипах Cyclone III» (Здесь)
03.02.2010 «Лучшие примеры для временного анализатора Quartus II TimeQuest» (Здесь)
28.01.2010 «Временной анализатор Quartus II TimeQuest» (Здесь)
21.01.2010 «Инкрементная компиляция в Quartus II для иерархических и командных проектов» (Здесь)
05.01.2010 «Вводный курс Quartus II для пользователей Verilog» (Здесь)
03.01.2010 Запуск первой версии сайта.

naliwator.narod.ru

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *