Jump to content
    

Процессор MicroBlaze

ПРОСТИТЕ!

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

 

Советую посмотреть обучалки на 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 вам уже удалось вывести базовое приложение.

Share this post


Link to post
Share on other sites

dspx

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

 

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

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

Share this post


Link to post
Share on other sites

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

 

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

 

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

 

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

Share this post


Link to post
Share on other sites

Все примеры как работать с прерываниями, таймерами и всем остальным есть в 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.

*

:(

Share this post


Link to post
Share on other sites

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

 

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

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

 

СПАСИБО! :)

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

 

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

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

 

СПАСИБО! :)

 

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

Edited by dspx

Share this post


Link to post
Share on other sites

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

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

 

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

Share this post


Link to post
Share on other sites

...

 

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

 

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

Edited by Omen_13
Избыточное цитирование

Share this post


Link to post
Share on other sites

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

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

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

select "Doc Type" and "Application Notes"

Share this post


Link to post
Share on other sites

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

 

float count;

 

count = 5/3;

 

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

 

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

 

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

Share this post


Link to post
Share on other sites

...

 

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

Edited by Omen_13
Избыточное цитирование

Share this post


Link to post
Share on other sites

вопрос: какие библиотеку нужно подключить кроме (#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() должен помочь

:)

Share this post


Link to post
Share on other sites

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

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"

Edited by Omen_13
Оформление кода

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...