Перейти к содержанию
    

ПРОСТИТЕ!

Просто я никогда не программировал процессоры, и не знаю с какой стороны подойти

 

Советую посмотреть обучалки на YouTube

Xilinx EDK Tutorial - A Guided Tour of the Platform Studio - Part 1

Xilinx EDK Tutorial - A Guided Tour of the Platform Studio - Part 2

Xilinx EDK Tutorial - A Guided Tour of the Platform Studio - Part 3

Xilinx EDK Tutorial - Adding custom IP to an EDK Project - Part 1

Xilinx EDK Tutorial - Adding custom IP to an EDK Project - Part 2

Xilinx EDK Tutorial - Adding custom IP to an EDK Project - Part 34

Xilinx EDK Tutorial - Adding MPMC to an EDK Project - Part 14

Xilinx EDK Tutorial - Adding MPMC to an EDK Project - Part 2

Xilinx EDK Tutorial - Adding MPMC to an EDK Project - Part 3

Xilinx EDK Tutorial - Integrating EDK and ISE Projects

Xilinx EDK Tutorial - Using the Base System Builder Wizard - Part 1

Xilinx EDK Tutorial - Using the Base System Builder Wizard - Part 2

 

Как только запустите приложение testapp_peripheral, сразу поймете как через драйвера обращаться с вашими устройствами периферии, в том числе со светодиодами и кнопками, Тем более на Uart вам уже удалось вывести базовое приложение.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

dspx

Спасибо за обучающие видеоролики. Будем смотреть и разбираться дальше...

 

ЗЫ Тема остается открытой

Изменено пользователем Omen_13
Избыточное цитирование. Нарушение Правил п.3.4

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Помогите написать программу на С для MicroBlaze для реализации следующей задачи: выводить любое сообщение на HyperTerminal через определенное время например через 5 сек и прерываться от нажатия кнопки. Повторное нажатие - продолжение работы - вывод на экран сообщения.

 

Если этот пример сложный, то подойдет любой другой пример.

 

Очень нужно разобраться (с таймером и работой с прерываниями) - ПОМОГИТЕ, ПЛИЗ!!!

 

ЗЫ Среда разработки EDK 10.1.03. Плата ML 402 Шина процессора PLB (не ОРВ)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Все примеры как работать с прерываниями, таймерами и всем остальным есть в EDK.

 

Или Вы хотите чтобы _сюда_ были скопированы все эти примеры которые есть у Вас ?

 

* @file xintc_example.c

*

* This file contains a design example using the Interrupt Controller driver

* (XIntc) and hardware device. Please reference other device driver examples to

* see more examples of how the intc and interrupts can be used by a software

* application.

*

* This example shows the use of the Interrupt Controller both with a PowerPC405

* and MicroBlaze processor.

*

:(

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

ЗЫ Примеры видел ссылку на них мне дали ранее в этой же ветке форума

ЗЫ ЗЫ Будем дальше разбираться.

 

СПАСИБО! :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Просто такие "программы" пишутся за 10 мин. используются 5 мин. а потом вчистую удаляют... Так что ... :rolleyes:

Паузу к примеру можно делать по простому так: считать текущее значение таймера и потом считывать в цикле со сравнением с вычисленным значением (тек знач + дельта) . Вариантов много...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

ЗЫ Примеры видел ссылку на них мне дали ранее в этой же ветке форума

ЗЫ ЗЫ Будем дальше разбираться.

 

СПАСИБО! :)

 

Если будет время накатаю. Но самый простой способ для вас - это использовать Base System Builder Wizard прямо под ваш кит. Там нужно только галочки поставить, какие компоненты должны быть вставлены. Визард сам сгенерит вам готовую систему с драйверами и, даже, тестовыми приложениями. Не разобравшись с функциями для работы с UART, таймером и контроллером прерываний, вы все равно не поймете как работает даже готовый пример. Так что, начните с изучения С функций и как они используются в примерах к вашей системе. Комментарий к каждой из них более чем подробный. Без этого все равно никак.

Изменено пользователем dspx

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Все кто начинает работать с каким либо микропроцессором когда то делали мигание светодиодом, отработку кнопок и т.д.

И я с этим сталкивался, когда работал с ML410 (и ещё придётся продолжить), но без MBZ, только с PPC405. Очень полезно установить XPS - Xilinx Platform Studio, вероятно у вас он уже установлен. Там целая куча разнообразных примеров для всевозможных периферийных устройств. И ещё нужно просмотреть App Notes на сайте Xilinx, там тоже куча примеров.

 

Вот только по VGA out я ничего не нашел, а поскольку vhdl я не использую, только готовые блоки, остался я без экрана...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

...

 

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

 

Заранее благодарен!

Изменено пользователем Omen_13
Избыточное цитирование

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Я искал здесь:

http://www.xilinx.com/support/documentation/index.htm

select "Doc Type" and "Application Notes"

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

вопрос: какие библиотеку нужно подключить кроме (#include math.h) чтобы процессор выполнял действия с дробными числами и как вывести их через xil_printf. Пытался так

 

float count;

 

count = 5/3;

 

xil_printf(" mat= %f \n\r",count);

 

не получается. :help:

 

PS блок FPU я не подключал

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

...

 

Ну так нужно подключить. И ознакомьтесь с IEEE 754 Single Precision Format в документации к Microblaze.

Изменено пользователем Omen_13
Избыточное цитирование

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

http://www.xilinx.com/support/answers/29787.htm

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

вопрос: какие библиотеку нужно подключить кроме (#include math.h) чтобы процессор выполнял действия с дробными числами и как вывести их через xil_printf. Пытался так

 

float count;

 

count = 5/3;

 

xil_printf(" mat= %f \n\r",count);

 

не получается. :help:

 

PS блок FPU я не подключал

 

Согласно документации (в файле oslib_rm.pdf )

 

"void xil_printf (const *char ctrl1,...)

xil_printf is a light-weight implementation of printf. It is much smaller in size (only 1 kB).

It does not have support for floating point numbers. xil_printf also does not support

printing of long (such as 64-bit) numbers."

 

Вывод:

1) чтение документации полезно всегда

2) printf() должен помочь

:)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Циферки выводятся так:

Xuint32 data;
...
data = ...;
...
print(" Data 0x");
putnum( data );
print("\r\n");

Прерывания пользуются так (пример для кнопок с ML402);

void InterruptHandler()
{
  // PB interrapt processing
  if( XIntc_mGetIntrStatus( XPAR_INTC_0_BASEADDR ) & XPAR_PUSH_BUTTONS_POSITION_IP2INTC_IRPT_MASK )
  {
    // Detect button
    switch( XGpio_mGetDataReg(XPAR_PUSH_BUTTONS_POSITION_BASEADDR, 1) )
    {
      case GPIO_PB_N_MASK : // move 
        block_cur_y_pos -= 10;
        break;
      case GPIO_PB_S_MASK : // move
        block_cur_y_pos += 10;
        break;
      case GPIO_PB_E_MASK : // move
        block_cur_x_pos += 10;
        break;
      case GPIO_PB_W_MASK : // move
        block_cur_x_pos -= 10;
        break;
    }
    // Clear GPIO interrupt status
    XGpio_mWriteReg( XPAR_PUSH_BUTTONS_POSITION_BASEADDR, XGPIO_ISR_OFFSET, XGPIO_IR_CH1_MASK );
    // Clear IntC interrupt status
    XIntc_mAckIntr( XPAR_INTC_0_BASEADDR, XPAR_PUSH_BUTTONS_POSITION_IP2INTC_IRPT_MASK );
  }
}

Драйвера у Xilinx двух уровней, я пользую нижний <ip core driver>_l.h, здесь всегда приходится подставлять базовый адрес ядра.

Все функции называются X<ip core>_m<function>.

Путь к драйверам (пример) C:\Xilinx\10.1\EDK\sw\XilinxProcessorIPLib\drivers\gpio_v2_12_a\src. Все функции хорошо прокомментированы.

Все параметры - базовые адреса, номера прерываний, всяческие маски находятся в файле xparameters.h.

Набор заголовочных файлов примерно такой:

// Всякая батва от проца

#include "xparameters.h"

#include "xbasic_types.h"

#include "mb_interface.h"

// Низкоуровневые драйверы

#include "xintc_l.h"

#include "xgpio_l.h"

// Классика

#include "stdio.h"

Изменено пользователем Omen_13
Оформление кода

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...