реклама на сайте
подробности

 
 
> Процессор MicroBlaze, помощь начинающему
Maverick
сообщение Dec 18 2009, 14:10
Сообщение #1


я только учусь...
******

Группа: Модераторы
Сообщений: 3 447
Регистрация: 29-01-07
Из: Украина
Пользователь №: 24 839



rolleyes.gif Требуется любая информация(примеры написания листингов программ, обучающая литература и т.д.) по написанию программ на С/С++ для данного процессора.

ЗЫ Необходим быстрый начальный старт. 1111493779.gif

help.gif help.gif help.gif


--------------------
If it doesn't work in simulation, it won't work on the board.

"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
Go to the top of the page
 
+Quote Post
4 страниц V   1 2 3 > »   
Start new topic
Ответов (1 - 47)
Mad_max
сообщение Dec 21 2009, 19:25
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 377
Регистрация: 23-12-06
Из: Зеленоград
Пользователь №: 23 811



Начните с MicroBlaze Processor Reference Guide.
А так вообще на сайте xilinx в поиске Microblaze и погнали информации море.
Xilinx, кстати, очень хорошо поддерживает свой софт процессор,
куда лучше чем PPC405.
Причина редактирования: Избыточное цитирование
Go to the top of the page
 
+Quote Post
Maverick
сообщение Dec 22 2009, 10:05
Сообщение #3


я только учусь...
******

Группа: Модераторы
Сообщений: 3 447
Регистрация: 29-01-07
Из: Украина
Пользователь №: 24 839



Цитата(Mad_max @ Dec 21 2009, 22:25) *
Начните с MicroBlaze Processor Reference Guide.
А так вообще на сайте xilinx в поиске Microblaze и погнали информации море.
Xilinx, кстати, очень хорошо поддерживает свой софт процессор,
куда лучше чем PPC405.


Да читал эту информацию, но там описана архитектура и все IP core, но как написать программу и привязать к какому-то конкретному выходу например подать/принять их на/по UART/SPI. Язык С/С++ я знаю для написания программ под Windows( Борланд С, Вижуал С++ ), но есть же разница писать под Windows и для микропроцессора, правда? (т.е. не нужно слов типа учи Си/С++ и будет тебе счастье и ссылки на стандарты Си/С++)
Организовывать архитектуру микропроцессора и подсоеденить к нему IP core (переферию) прочитав мануалы(и тот который Вы предлагаете) я разобрался и делаю. Но что далее ...
Уверен многие начинали с каких-то простых программ, например как принять байт и передать его обратно прибавив единицу, к полученному байту(слову) по UART, или что-то подобное. Где-то Вы читали как это делать или кто-то Вам рассказал и показал...

ПОДЕЛИТЕСЬ ИНФОРМАЦИЕЙ ПОЖАЛУЙСТА!!!
МНОГИЕ НА ФОРУМЕ РАБОТАЮТ С ПРОЦЕССОРОМ MicroBlaze ДАВНО - ПОДЕЛИТЕСЬ СВОИМИ ЗНАНИЯМИ, ПОЖАЛУЙСТА!!!
help.gif


--------------------
If it doesn't work in simulation, it won't work on the board.

"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
Go to the top of the page
 
+Quote Post
Egel
сообщение Dec 22 2009, 13:04
Сообщение #4


Частый гость
**

Группа: Свой
Сообщений: 162
Регистрация: 28-07-08
Из: Химки
Пользователь №: 39 244



Присоединяюсь к просьбе Maverick
Go to the top of the page
 
+Quote Post
flipflop
сообщение Dec 22 2009, 15:19
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 33
Регистрация: 27-12-08
Из: Петербург
Пользователь №: 42 787



Надо плясать от Xilinx SDK. Он автоматически создает примеры для всей периферии. Ко всем драйверам есть HTLM документация, лежит в папках с Design Suit'ом. В остальном это обычное программирование на C =)

Цитата
Xilinx, кстати, очень хорошо поддерживает свой софт процессор,
куда лучше чем PPC405.

Не правда, все ip-блоки работают через одну шину (насколько я помню, IBM CoreConnect) и одинаково подходят как к PPC, так и к Microblaz'у. Так-что уровень поддержки одинаковый.

Сообщение отредактировал flipflop - Dec 22 2009, 15:19
Go to the top of the page
 
+Quote Post
Mad_max
сообщение Dec 22 2009, 20:42
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 377
Регистрация: 23-12-06
Из: Зеленоград
Пользователь №: 23 811



Цитата
Надо плясать от Xilinx SDK. Он автоматически создает примеры для всей периферии.

SDK это среда разработи и своответственно ОНА ничего не создает, создает утилита libgen.
Ну и если на то пошло, то создает она не примеры, а дравера для аппаратной части.
Цитата(flipflop @ Dec 22 2009, 18:19) *
Не правда, все ip-блоки работают через одну шину (насколько я помню, IBM CoreConnect) и одинаково подходят как к PPC, так и к Microblaz'у. Так-что уровень поддержки одинаковый.

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


Цитата(Maverick @ Dec 22 2009, 13:05) *
Да читал эту информацию, но там описана архитектура ...

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

В предложенном документе должно быть написано как классический hello world запустить под дебагером. Hello world в данном случае и
есть отправка по UART данных. Используется там функция xil_print, если она Вам не мила, то можете написать свою низкоуровневую
функцию вывода. Собственно говоря, точно так же как и любую низкоуровнивую функцию для любой IP корки. Собственно говоря, xilinx уже практически все за Вас написал. Утилита libgen создает драйвера для каждой Вашей корки, нужно только взять то, что Вам нужно или
на базе имеющегося написать свои функции общения с аппаратной частью.
В принцепе это Вам и хотел сказать flipflop biggrin.gif
Причина редактирования: Избыточное цитирование
Go to the top of the page
 
+Quote Post
tolik1
сообщение Dec 23 2009, 08:24
Сообщение #7


Частый гость
**

Группа: Свой
Сообщений: 199
Регистрация: 2-03-05
Из: МОСКВА
Пользователь №: 3 016



Цитата(Maverick @ Dec 22 2009, 13:05) *
Да читал эту информацию, но там описана архитектура ...

Начните (для простоты ) с программирования в XPS. Пользовательский ввод и вывод осуществляется через UART на котором организован консольный интерфейс. xil_printf("HELLO WORD\r\n"). Подключаете Ваше устройство к РС, запускаете HYPERterminal, настраиваите параметры COM-порта и видите эту надпись на экране. Для организации обмена с IPблоками(своими или чужими) используется драйвер т.е. програмный интерфейс. Этот драйвер автоматически создается когда Вы создаете своё IP, и реализует выбраный Вами механизм обмена. По сути своей драйвер - это либо портовая операция либо операция с памятью.Для доступа к драйверу надо в окне Assambly на нужной корке кликнуть правой кнопкой. В меню выбрать подменю Driver:хххххххх, а в следующем меню - Browse driver souces.... Вам откроются С-файлы. Переключитесь на h-файлы. И Вам откроется Header драйвера. Этот файл подинклюдивается и используется. Для получения адреса Вашего IP Вам нужен файл xparameters.h Ищите его в окне Application, в строке processor. Файл генерится когда Вы нажимаете "Generate libraries and drivers".
Причина редактирования: Избыточное цитирование
Go to the top of the page
 
+Quote Post
Leka
сообщение Dec 23 2009, 09:53
Сообщение #8


Профессионал
*****

Группа: Участник
Сообщений: 1 075
Регистрация: 30-09-05
Пользователь №: 9 118



У меня не MicroBlaze, не NIOS, не С/С++ -->
bb-offtopic.gif
1) прошиваем систему: софт-процессор с загрузкой через COM и с выводом на VGA,
2) пишем proba.pas:
Код
module main
begin
  writeln('Hello, world')
  halt()
end

3) компилируем: a.exe proba.pas
4) запускаем copy proba.hex com --> видим на мониторе: Hello, world
laughing.gif

Сообщение отредактировал Leka - Dec 23 2009, 09:56
Go to the top of the page
 
+Quote Post
avesat
сообщение Dec 24 2009, 11:11
Сообщение #9


Знающий
****

Группа: Свой
Сообщений: 589
Регистрация: 14-08-05
Из: Украина
Пользователь №: 7 621



Цитата(Maverick @ Dec 18 2009, 16:10) *
... Требуется любая информация(примеры написания листингов программ, обучающая литература и т.д.) по написанию программ на С/С++ для данного процессора.
...

Много примеров можно посмотреть здесь

%%\EDK\sw\XilinxProcessorIPLib\drivers\


--------------------
"Мы будем играть, пока не треснут наши гитары, и все те, кто любит рок - я отдаю вам честь!" AC/DC
Go to the top of the page
 
+Quote Post
Leka
сообщение Dec 25 2009, 21:22
Сообщение #10


Профессионал
*****

Группа: Участник
Сообщений: 1 075
Регистрация: 30-09-05
Пользователь №: 9 118



Цитата(Maverick @ Dec 22 2009, 14:05) *

Ну и каковы успехи?
Go to the top of the page
 
+Quote Post
Maverick
сообщение Dec 28 2009, 10:41
Сообщение #11


я только учусь...
******

Группа: Модераторы
Сообщений: 3 447
Регистрация: 29-01-07
Из: Украина
Пользователь №: 24 839



Цитата(Leka @ Dec 26 2009, 01:22) *
Ну и каковы успехи?

Программа
Код
int main()
{
    print("Helo World\n");
    return 0;

Получилась... Скриншот с гипертерминала прикладываю

Плиз, помогите разобратья как принимать какие-то данные по UART. Например я в гипертермиле ввожу число, а программа к этому прибавляет(например 1 или какую-нибудь константу) и результат выдает на экран.

Плата Xilinx ML402

ОЧЕНЬ НУЖНО!!!
Эскизы прикрепленных изображений
Прикрепленное изображение
 


--------------------
If it doesn't work in simulation, it won't work on the board.

"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
Go to the top of the page
 
+Quote Post
Maverick
сообщение Dec 29 2009, 08:41
Сообщение #12


я только учусь...
******

Группа: Модераторы
Сообщений: 3 447
Регистрация: 29-01-07
Из: Украина
Пользователь №: 24 839



что неужели никто такой простенькой программы не писал???
ЗЫ не верю


--------------------
If it doesn't work in simulation, it won't work on the board.

"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
Go to the top of the page
 
+Quote Post
avesat
сообщение Dec 29 2009, 09:51
Сообщение #13


Знающий
****

Группа: Свой
Сообщений: 589
Регистрация: 14-08-05
Из: Украина
Пользователь №: 7 621



%%EDK\sw\XilinxProcessorIPLib\drivers\uartlite_v1_14_a\examples\

Есть любые примеры, в том числе и как работать с прерываниями


--------------------
"Мы будем играть, пока не треснут наши гитары, и все те, кто любит рок - я отдаю вам честь!" AC/DC
Go to the top of the page
 
+Quote Post
Mad_max
сообщение Dec 29 2009, 09:55
Сообщение #14


Местный
***

Группа: Свой
Сообщений: 377
Регистрация: 23-12-06
Из: Зеленоград
Пользователь №: 23 811



Не ну Вы прямо как студент! Напишите мне и все.
Тыркните на вашу корку в EDK вылезит менюшка, там на одной из вкладок будет pdf значок.
В этой pdf все четко расписано как работает UART.
Не хотите лазить в EDK вот Вам ссылка
http://www.xilinx.com/ise/embedded/edk_ip.htm
по ней найдете документ на корку.
Далее изучаете все управляющие и статусные регистры свой корки.
В полинге мониторите бит, говорящий о том, что данные по UART приняты.
Далее читайте прибавляете и отправляйте обратно.
Предвидя следующий пост вот вам пример как писать и читать с адресов.
Код
int main() {
    
  int i=0;
  int *addr_ptr;
  int status;
  
  addr_ptr = (int*)BASE_ADR; //Адрес по которому хотим записать
  *addr_ptr = 0xAAAAAAAA;   //Данны, которые хотим записать
                
  addr_ptr = (int*)BASE_ADR; //Адрес по которому хотим прочитать
  status = *addr_ptr;            //Прочитанные данные

}
Go to the top of the page
 
+Quote Post
Maverick
сообщение Dec 29 2009, 10:01
Сообщение #15


я только учусь...
******

Группа: Модераторы
Сообщений: 3 447
Регистрация: 29-01-07
Из: Украина
Пользователь №: 24 839



Цитата(Mad_max @ Dec 29 2009, 12:55) *


ПРОСТИТЕ!
Просто я никогда не программировал процессоры, и не знаю с какой стороны подойти


--------------------
If it doesn't work in simulation, it won't work on the board.

"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
Go to the top of the page
 
+Quote Post
dspx
сообщение Dec 30 2009, 18:11
Сообщение #16


Участник
*

Группа: Свой
Сообщений: 54
Регистрация: 6-01-06
Из: Москва
Пользователь №: 12 876



Цитата(Maverick @ Dec 29 2009, 13:01) *
ПРОСТИТЕ!
Просто я никогда не программировал процессоры, и не знаю с какой стороны подойти


Советую посмотреть обучалки на 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 вам уже удалось вывести базовое приложение.
Go to the top of the page
 
+Quote Post
Maverick
сообщение Jan 4 2010, 14:15
Сообщение #17


я только учусь...
******

Группа: Модераторы
Сообщений: 3 447
Регистрация: 29-01-07
Из: Украина
Пользователь №: 24 839



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

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

Сообщение отредактировал Omen_13 - Jan 5 2010, 00:29
Причина редактирования: Избыточное цитирование. Нарушение Правил п.3.4


--------------------
If it doesn't work in simulation, it won't work on the board.

"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
Go to the top of the page
 
+Quote Post
Maverick
сообщение Feb 2 2010, 13:45
Сообщение #18


я только учусь...
******

Группа: Модераторы
Сообщений: 3 447
Регистрация: 29-01-07
Из: Украина
Пользователь №: 24 839



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

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

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

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


--------------------
If it doesn't work in simulation, it won't work on the board.

"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
Go to the top of the page
 
+Quote Post
Alex77
сообщение Feb 3 2010, 08:15
Сообщение #19


Местный
***

Группа: Участник
Сообщений: 295
Регистрация: 2-12-05
Пользователь №: 11 695



Все примеры как работать с прерываниями, таймерами и всем остальным есть в 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.
*
sad.gif
Go to the top of the page
 
+Quote Post
Maverick
сообщение Feb 3 2010, 10:13
Сообщение #20


я только учусь...
******

Группа: Модераторы
Сообщений: 3 447
Регистрация: 29-01-07
Из: Украина
Пользователь №: 24 839



Цитата(Alex77 @ Feb 3 2010, 10:15) *

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

ЗЫ Примеры видел ссылку на них мне дали ранее в этой же ветке форума
ЗЫ ЗЫ Будем дальше разбираться.

СПАСИБО! smile.gif


--------------------
If it doesn't work in simulation, it won't work on the board.

"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
Go to the top of the page
 
+Quote Post
Alex77
сообщение Feb 3 2010, 10:29
Сообщение #21


Местный
***

Группа: Участник
Сообщений: 295
Регистрация: 2-12-05
Пользователь №: 11 695



Просто такие "программы" пишутся за 10 мин. используются 5 мин. а потом вчистую удаляют... Так что ... rolleyes.gif
Паузу к примеру можно делать по простому так: считать текущее значение таймера и потом считывать в цикле со сравнением с вычисленным значением (тек знач + дельта) . Вариантов много...
Go to the top of the page
 
+Quote Post
dspx
сообщение Feb 3 2010, 16:57
Сообщение #22


Участник
*

Группа: Свой
Сообщений: 54
Регистрация: 6-01-06
Из: Москва
Пользователь №: 12 876



Цитата(Maverick @ Feb 3 2010, 13:13) *
да нет не надо, просто думал что у многих такие простые примеры есть и люди могли бы (если конечно захотят) поделиться. Все кто начинает работать с каким либо микропроцессором когда то делали мигание светодиодом, отработку кнопок и т.д. Потому что это наглядней! Но это только мое мнение!!!

ЗЫ Примеры видел ссылку на них мне дали ранее в этой же ветке форума
ЗЫ ЗЫ Будем дальше разбираться.

СПАСИБО! smile.gif


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

Сообщение отредактировал dspx - Feb 3 2010, 17:47
Go to the top of the page
 
+Quote Post
AndrewN
сообщение Feb 3 2010, 17:25
Сообщение #23


Местный
***

Группа: Участник
Сообщений: 336
Регистрация: 7-03-07
Из: Петербург
Пользователь №: 25 961



Цитата(Maverick @ Feb 3 2010, 13:13) *
Все кто начинает работать с каким либо микропроцессором когда то делали мигание светодиодом, отработку кнопок и т.д.

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

Вот только по VGA out я ничего не нашел, а поскольку vhdl я не использую, только готовые блоки, остался я без экрана...
Go to the top of the page
 
+Quote Post
Maverick
сообщение Feb 4 2010, 08:29
Сообщение #24


я только учусь...
******

Группа: Модераторы
Сообщений: 3 447
Регистрация: 29-01-07
Из: Украина
Пользователь №: 24 839



Цитата(AndrewN @ Feb 3 2010, 19:25) *
...


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

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

Сообщение отредактировал Omen_13 - Feb 7 2010, 16:44
Причина редактирования: Избыточное цитирование


--------------------
If it doesn't work in simulation, it won't work on the board.

"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
Go to the top of the page
 
+Quote Post
AndrewN
сообщение Feb 5 2010, 19:34
Сообщение #25


Местный
***

Группа: Участник
Сообщений: 336
Регистрация: 7-03-07
Из: Петербург
Пользователь №: 25 961



Цитата(Maverick @ Feb 4 2010, 11:29) *
Вы не могли бы дать ссылки на примеры, если их нет ранее в этой ветке форума.

Я искал здесь:
http://www.xilinx.com/support/documentation/index.htm
select "Doc Type" and "Application Notes"
Go to the top of the page
 
+Quote Post
Maverick
сообщение Feb 12 2010, 15:40
Сообщение #26


я только учусь...
******

Группа: Модераторы
Сообщений: 3 447
Регистрация: 29-01-07
Из: Украина
Пользователь №: 24 839



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

float count;

count = 5/3;

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

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

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


--------------------
If it doesn't work in simulation, it won't work on the board.

"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
Go to the top of the page
 
+Quote Post
dspx
сообщение Feb 12 2010, 16:17
Сообщение #27


Участник
*

Группа: Свой
Сообщений: 54
Регистрация: 6-01-06
Из: Москва
Пользователь №: 12 876



Цитата(Maverick @ Feb 12 2010, 18:40) *
...


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

Сообщение отредактировал Omen_13 - Feb 14 2010, 21:48
Причина редактирования: Избыточное цитирование
Go to the top of the page
 
+Quote Post
dspx
сообщение Feb 12 2010, 18:33
Сообщение #28


Участник
*

Группа: Свой
Сообщений: 54
Регистрация: 6-01-06
Из: Москва
Пользователь №: 12 876



http://www.xilinx.com/support/answers/29787.htm
полезная ссылка показывающая, с какими ошибками можно столкнуться, работая с дробными, и как их решить.
Go to the top of the page
 
+Quote Post
Alex77
сообщение Feb 15 2010, 07:34
Сообщение #29


Местный
***

Группа: Участник
Сообщений: 295
Регистрация: 2-12-05
Пользователь №: 11 695



Цитата(Maverick @ Feb 12 2010, 18:40) *
вопрос: какие библиотеку нужно подключить кроме (#include math.h) чтобы процессор выполнял действия с дробными числами и как вывести их через xil_printf. Пытался так

float count;

count = 5/3;

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

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

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() должен помочь
smile.gif
Go to the top of the page
 
+Quote Post
DSIP
сообщение Feb 16 2010, 07:57
Сообщение #30


Участник
*

Группа: Участник
Сообщений: 17
Регистрация: 18-04-07
Из: Россия, г. Томск
Пользователь №: 27 137



Циферки выводятся так:
Код
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 - Feb 21 2010, 12:47
Причина редактирования: Оформление кода
Go to the top of the page
 
+Quote Post
Maverick
сообщение Feb 16 2010, 13:06
Сообщение #31


я только учусь...
******

Группа: Модераторы
Сообщений: 3 447
Регистрация: 29-01-07
Из: Украина
Пользователь №: 24 839



С выводом чисел с плавающей запятой расписано в floating_point_MicroBlaze на стр. 19 даже пример имеется. smile.gif

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


--------------------
If it doesn't work in simulation, it won't work on the board.

"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
Go to the top of the page
 
+Quote Post
Maverick
сообщение Feb 16 2010, 14:13
Сообщение #32


я только учусь...
******

Группа: Модераторы
Сообщений: 3 447
Регистрация: 29-01-07
Из: Украина
Пользователь №: 24 839



Написав следующую программу(подкорректировав(заменив printf на xil_printf и добавил очистку экрана xil_printf("%c[2J",27)wink.gif приведенную в примере):
CODE
#include <stdio.h>
main() {
union int32_or_single {
int i;
float f;
} a, b, r, rs;
union int64_or_double {
long long int i; // Please specify 64-bit integer type for platform
double f;
} rd;
// Uncomment to assign values in decimal
//a.f = 15161.0;
//b.f = 1077.00048828125;
// Assign values in hexadecimal
a.i=0x466CE400;
b.i=0x4486A004;
//Do the deed (in this example subtraction)
r.f=a.f - b.f;
//Repeat, but this time do in double precision to avoid rounding
rd.f=(double) a.f - (double) b.f;
xil_printf("%c[2J",27);
xil_printf("a: Hex=%08X \r\n ", a.i);
xil_printf("Float=%.11f \r\n", a.f);
xil_printf("b: Hex=%08X \r\n", b.i);
xil_printf("Float=%.11f \r\n", b.f);
xil_printf("Single result: Hex=%08X \r\n", r.i);
xil_printf("Float=%.11f \r\n", r.f);
xil_printf("Double result: Hex=%08X%08X \r\n",(int)(rd.i>>32),(int)(rd.i&0xFFFFFFFF));
xil_printf("Float=%.11f \r\n", rd.f);
rs.f = (float) rd.f; // Round result from double to single
xil_printf("Double rounded to single: Hex=%08X \r\n", rs.i);
xil_printf("Float=%.11f \r\n", rs.f);
// Expect the following output:
// a: Hex=466CE400 Float=15161.00000000000
// b: Hex=4486A004 Float=1077.00048828125
// Single precision result: Hex=465C1000 Float=14084.00000000000
// Double precision result: Hex=40CB81FFF0000000 Float=14083.99951171875
// Double rounded to single: Hex=465C1000 Float=14084.00000000000
}


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

Сообщение отредактировал Omen_13 - Feb 21 2010, 12:53
Причина редактирования: Оформление кода

Эскизы прикрепленных изображений
Прикрепленное изображение
 


--------------------
If it doesn't work in simulation, it won't work on the board.

"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
Go to the top of the page
 
+Quote Post
Maverick
сообщение Feb 17 2010, 07:46
Сообщение #33


я только учусь...
******

Группа: Модераторы
Сообщений: 3 447
Регистрация: 29-01-07
Из: Украина
Пользователь №: 24 839



Согласно этой ссылки вывести числа с плавающей запятой вообще нельзя, через какой-либо printf. Вот так то ...

Цитата
11.1 EDK - Why does the standard C printf() function use so much memory?
AR# 19592
Topic EDK-Libraries
Last Modified 2009-04-25 00:00:00.0
Status Active
Description

Keywords: stdio.h

Why does the standard C printf() function use so much memory? For example, including a reference to printf() in a MicroBlaze program increases the size of the "Hello World" program (included in the example designs) by 51,788 bytes.
Solution
The table below summarizes the various print-related commands that you can use and how much code and data space they use over a non-printing implementation to print "hello world".

Function Size Limitations
-------------- ------- ------------------
printf() 51788 None, full featured
iprintf() 18294 No floating point, reentrant
xil_printf() 2953 No floating point, not reentrant(single thread only), no longlong(64 bit)
putnum() 284 Integer to HEX only, no other formats
print() 185 No numbers output, just strings

All of these functions can be prototyped by including <stdio.h>.


--------------------
If it doesn't work in simulation, it won't work on the board.

"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
Go to the top of the page
 
+Quote Post
dspx
сообщение Feb 17 2010, 20:57
Сообщение #34


Участник
*

Группа: Свой
Сообщений: 54
Регистрация: 6-01-06
Из: Москва
Пользователь №: 12 876



Цитата(Maverick @ Feb 17 2010, 10:46) *
Согласно этой ссылки вывести числа с плавающей запятой вообще нельзя, через какой-либо printf. Вот так то ...

С чего вы это взяли? Там ничего подобного не сказано. Я уже приводил ссылку с примером вызова функции printf выводящей флоат.
Go to the top of the page
 
+Quote Post
Alex77
сообщение Feb 18 2010, 06:47
Сообщение #35


Местный
***

Группа: Участник
Сообщений: 295
Регистрация: 2-12-05
Пользователь №: 11 695



Цитата(dspx @ Feb 17 2010, 23:57) *
С чего вы это взяли? Там ничего подобного не сказано. Я уже приводил ссылку с примером вызова функции printf выводящей флоат.

Дык наверно у него просто программа не помещается в BRAM ( с использованием printf() ). А xil_printf() в принципе не имеет формата %f. Товарищ в очередной раз пытается использовать "телефон для забивания гвоздей" crying.gif
Go to the top of the page
 
+Quote Post
Maverick
сообщение Feb 22 2010, 08:19
Сообщение #36


я только учусь...
******

Группа: Модераторы
Сообщений: 3 447
Регистрация: 29-01-07
Из: Украина
Пользователь №: 24 839



Цитата(Alex77 @ Feb 18 2010, 08:47) *
Дык наверно у него просто программа не помещается в BRAM ( с использованием printf() ). А xil_printf() в принципе не имеет формата %f. Товарищ в очередной раз пытается использовать "телефон для забивания гвоздей" crying.gif


Цитата(dspx @ Feb 17 2010, 22:57) *
С чего вы это взяли? Там ничего подобного не сказано. Я уже приводил ссылку с примером вызова функции printf выводящей флоат.


Если Вас не затруднит пожалуйста напишите программу которая выводит например результат
деления 5/3 = 1,6666666666666666666666666666667
или
вычисления квадратного корня например из 2 (sqrt (2) = 1,4142135623730950488016887242097)
на компьютер в десятичном формате для контроля - программа HyperTerminal.

ЗЫ Точность вычисления одинарная или двойная, по Вашему усмотрению.

ЗЫ ЗЫ Программа делает только одну операцию (так как учебная) деления или вычисление квадратного корня из числа. Выделил BRAM под программу 64 кбит, кристалл Virtex4 SX35. Использую блок FPU.

ЗЫ ЗЫ ЗЫ Если использовать функцию printf() то EDK выдает ошибку, которая описывается в ссылке данной dspx. Как сделать как там предлагают "To use the printf() function, you need also to make sure that the stack size is set to at least 0x2000." я не знаю. crying.gif Просвятите пожалуйста.

ЗЫ ЗЫ ЗЫ ЗЫ Будет очень хорошо если в дополнение сделаете скриншот окна программы HyperTerminal с выведенным результатом.


--------------------
If it doesn't work in simulation, it won't work on the board.

"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
Go to the top of the page
 
+Quote Post
dspx
сообщение Feb 22 2010, 11:28
Сообщение #37


Участник
*

Группа: Свой
Сообщений: 54
Регистрация: 6-01-06
Из: Москва
Пользователь №: 12 876



Maverick

У вас по идее в системе есть еще DDR/SRAM/DDR2. Редактируете линкер скрипт программы, чтобы она размещалась во внешней памяти, там же можно увеличить хип и стэк. Должно помочь.
Причина редактирования: Нарушение п.п Правил 3.4
Go to the top of the page
 
+Quote Post
DiWhite
сообщение Nov 16 2010, 20:32
Сообщение #38


Участник
*

Группа: Участник
Сообщений: 17
Регистрация: 5-10-10
Пользователь №: 59 952



Доброго всем времени суток. Подскажите, как написать программу для отображения сетевых пакетов (с порта Ethernet) в консоли. Плата Spartan-3E Starter Kit.
Go to the top of the page
 
+Quote Post
VladimirB
сообщение Nov 17 2010, 07:20
Сообщение #39


Знающий
****

Группа: Свой
Сообщений: 614
Регистрация: 12-06-09
Из: рядом с Москвой
Пользователь №: 50 219



Цитата(DiWhite @ Nov 16 2010, 23:32) *
Доброго всем времени суток. Подскажите, как написать программу для отображения сетевых пакетов (с порта Ethernet) в консоли. Плата Spartan-3E Starter Kit.

Запускаете EDK, выбираете в wizarde вашу плату, если в списке оборудования нет Ethernet MAC и RS-232 - то добавляете их туда.
EDK создаст проект на C++ для тестирования всей периферии - вы его открываете в Platform Studio и исправляете и добавляете пару десятков строчек. И всё - полный кукумбер smile.gif.
Go to the top of the page
 
+Quote Post
DiWhite
сообщение Nov 17 2010, 13:32
Сообщение #40


Участник
*

Группа: Участник
Сообщений: 17
Регистрация: 5-10-10
Пользователь №: 59 952



Вот как-раз и интересует момент, как исправить проект С++.
Также интересует вопрос, где взять описание стандартных функций для языка С/С++ в Xilinx? (xil_printf вместо printf это я уже понял. А как же быть с остальными?)
Go to the top of the page
 
+Quote Post
kark
сообщение Nov 30 2010, 19:17
Сообщение #41





Группа: Участник
Сообщений: 12
Регистрация: 21-05-06
Пользователь №: 17 314



Цитата(DiWhite @ Nov 17 2010, 16:32) *
Вот как-раз и интересует момент, как исправить проект С++.
Также интересует вопрос, где взять описание стандартных функций для языка С/С++ в Xilinx? (xil_printf вместо printf это я уже понял. А как же быть с остальными?)


Си он и есть си. Большинство сишных либ в едк есть, насколько я помню, conio.h в едк нет.

По поводу документации она лежит в <папка установки edk>/doc/usenglish. Там много полезного. Про сишные либы файл зовется oslib_rm.pdf (вроде так).
Go to the top of the page
 
+Quote Post
Tanichev
сообщение Aug 10 2011, 08:01
Сообщение #42


Участник
*

Группа: Участник
Сообщений: 31
Регистрация: 28-02-11
Пользователь №: 63 290



Полистал форум, не нашёл ответ на свой вопрос:
- Создал я платформу в XPS,
- Написал и отладил программу в EDK - всё отлично работает
- Пришла пора записать готовую программу на плату - удалён модуль DEBUG из системы, проект собран в Release..
- Флэшка прошита (файл для флэш получен из download.bit)
- НО! Программа "ждёт", что я нажму на кнопку в SDK:
Прикрепленное изображение
А нажать на неё я уже не могу, т.к. модуля DEBUG нет, да и вообще, платформа должна стать автономной.
Видимо, где-то установлена какая-то галочка, которая меняет режим компилятора, я думал, что это переключается Debug/Release. Но видимо нет.

Подскажите пожалуйста, где это делается. Спасибо.
Go to the top of the page
 
+Quote Post
knirti
сообщение Nov 10 2011, 09:52
Сообщение #43





Группа: Новичок
Сообщений: 3
Регистрация: 10-11-11
Пользователь №: 68 234



Здравствуйте!
У меня задача прикрутить к плисине внешнюю плату Wiznet WIZ830MJ. Выбрал вариант использования софтового микропроцессора, т.к. к плате приводится исходный код для микроконтроллера, перечитал кучу документации по EDK+SDK,поигрался с UART, но так и не понял, как подключать внешние устройства подобного типа (wiznet).
Не подскажите, какими компонентами (fifo, gpio, xps epc) связать в Xilinx EDK 13.1 платки и с какими файлами из SDK нужно прикручивать исходники внешних плат?
Go to the top of the page
 
+Quote Post
Maverick
сообщение Nov 10 2011, 10:18
Сообщение #44


я только учусь...
******

Группа: Модераторы
Сообщений: 3 447
Регистрация: 29-01-07
Из: Украина
Пользователь №: 24 839



Цитата(knirti @ Nov 10 2011, 11:52) *
Здравствуйте!
У меня задача прикрутить к плисине внешнюю плату Wiznet WIZ830MJ. Выбрал вариант использования софтового микропроцессора, т.к. к плате приводится исходный код для микроконтроллера, перечитал кучу документации по EDK+SDK,поигрался с UART, но так и не понял, как подключать внешние устройства подобного типа (wiznet).
Не подскажите, какими компонентами (fifo, gpio, xps epc) связать в Xilinx EDK 13.1 платки и с какими файлами из SDK нужно прикручивать исходники внешних плат?

Согласно даташит на Wiznet WIZ830MJ Вы можете подключить к процессору MicroBlaze как SRAM память (стр. 10).
В принципе для этого и существует MCU Interfaces, для этого понадобиться около 30 пинов ПЛИС


--------------------
If it doesn't work in simulation, it won't work on the board.

"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
Go to the top of the page
 
+Quote Post
knirti
сообщение Nov 11 2011, 07:01
Сообщение #45





Группа: Новичок
Сообщений: 3
Регистрация: 10-11-11
Пользователь №: 68 234



Цитата(Maverick @ Nov 10 2011, 14:18) *
Согласно даташит на Wiznet WIZ830MJ Вы можете подключить к процессору MicroBlaze как SRAM память (стр. 10).
В принципе для этого и существует MCU Interfaces, для этого понадобиться около 30 пинов ПЛИС

Спасибо за наводку, а какие именно файлы нужно править, под что нужно править исходники платки WIZ830MJ, не подскажете ?
Go to the top of the page
 
+Quote Post
T00T
сообщение Sep 2 2016, 10:59
Сообщение #46


Участник
*

Группа: Участник
Сообщений: 23
Регистрация: 25-05-15
Пользователь №: 86 867



Доброго дня.
Вопрос от начинающего. Хочу поморгать светодиодиком.
Создал аппаратную сборку microblaze и gpio. Взял пример из каталога ..EDK\sw\XilinxProcessorIPLib\drivers\gpio_v3_00_a\examples
сначала инициализируется модуль gpio:

#define GPIO_EXAMPLE_DEVICE_ID XPAR_LEDS_POSITIONS_DEVICE_ID
...
Status = XGpio_Initialize(&Gpio, GPIO_EXAMPLE_DEVICE_ID);
...
Так вот вопрос XPAR_LEDS_POSITIONS_DEVICE_ID - это ID устройства в системе и по нему компилятор должен понять к какому конкретно устройству тут будет обращение.
Где посмотреть ID устройства, или как правильно указать к какому устройству обращение?
Go to the top of the page
 
+Quote Post
dm.pogrebnoy
сообщение Sep 2 2016, 13:04
Сообщение #47


Знающий
****

Группа: Свой
Сообщений: 747
Регистрация: 11-04-07
Пользователь №: 26 933



xparameters.h
Можно еще драйвер GPIO поизучать, там сразу станет понятно что и откуда берется.


--------------------
Go to the top of the page
 
+Quote Post
T00T
сообщение Sep 2 2016, 13:10
Сообщение #48


Участник
*

Группа: Участник
Сообщений: 23
Регистрация: 25-05-15
Пользователь №: 86 867



Пока разобрался, спасибо.

Сообщение отредактировал T00T - Sep 2 2016, 13:20
Go to the top of the page
 
+Quote Post

4 страниц V   1 2 3 > » 
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 06:31
Рейтинг@Mail.ru


Страница сгенерированна за 0.01993 секунд с 7
ELECTRONIX ©2004-2016