|
Процессор MicroBlaze, помощь начинающему |
|
|
|
 |
Ответов
(1 - 47)
|
Dec 21 2009, 19:25
|
Местный
  
Группа: Свой
Сообщений: 377
Регистрация: 23-12-06
Из: Зеленоград
Пользователь №: 23 811

|
Начните с MicroBlaze Processor Reference Guide. А так вообще на сайте xilinx в поиске Microblaze и погнали информации море. Xilinx, кстати, очень хорошо поддерживает свой софт процессор, куда лучше чем PPC405.
Причина редактирования: Избыточное цитирование
|
|
|
|
|
Dec 22 2009, 10:05
|

я только учусь...
     
Группа: Модераторы
Сообщений: 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 ДАВНО - ПОДЕЛИТЕСЬ СВОИМИ ЗНАНИЯМИ, ПОЖАЛУЙСТА!!!
--------------------
If it doesn't work in simulation, it won't work on the board.
"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
|
|
|
|
|
Dec 22 2009, 15:19
|
Участник

Группа: Участник
Сообщений: 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
|
|
|
|
|
Dec 22 2009, 20:42
|
Местный
  
Группа: Свой
Сообщений: 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
Причина редактирования: Избыточное цитирование
|
|
|
|
|
Dec 23 2009, 08:24
|
Частый гость
 
Группа: Свой
Сообщений: 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".
Причина редактирования: Избыточное цитирование
|
|
|
|
|
Dec 23 2009, 09:53
|
Профессионал
    
Группа: Участник
Сообщений: 1 075
Регистрация: 30-09-05
Пользователь №: 9 118

|
У меня не MicroBlaze, не NIOS, не С/С++ --> 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
Сообщение отредактировал Leka - Dec 23 2009, 09:56
|
|
|
|
|
Dec 24 2009, 11:11
|

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

|
Цитата(Maverick @ Dec 18 2009, 16:10)  ... Требуется любая информация(примеры написания листингов программ, обучающая литература и т.д.) по написанию программ на С/С++ для данного процессора. ... Много примеров можно посмотреть здесь %%\EDK\sw\XilinxProcessorIPLib\drivers\
--------------------
"Мы будем играть, пока не треснут наши гитары, и все те, кто любит рок - я отдаю вам честь!" AC/DC
|
|
|
|
|
Dec 28 2009, 10:41
|

я только учусь...
     
Группа: Модераторы
Сообщений: 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.
"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
|
|
|
|
|
Dec 29 2009, 09:55
|
Местный
  
Группа: Свой
Сообщений: 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; //Прочитанные данные
}
|
|
|
|
|
Dec 30 2009, 18:11
|
Участник

Группа: Свой
Сообщений: 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 вам уже удалось вывести базовое приложение.
|
|
|
|
|
Feb 2 2010, 13:45
|

я только учусь...
     
Группа: Модераторы
Сообщений: 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.
"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
|
|
|
|
|
Feb 3 2010, 08:15
|
Местный
  
Группа: Участник
Сообщений: 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. *
|
|
|
|
|
Feb 3 2010, 10:13
|

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

|
Цитата(Alex77 @ Feb 3 2010, 10:15)  да нет не надо, просто думал что у многих такие простые примеры есть и люди могли бы (если конечно захотят) поделиться. Все кто начинает работать с каким либо микропроцессором когда то делали мигание светодиодом, отработку кнопок и т.д. Потому что это наглядней! Но это только мое мнение!!! ЗЫ Примеры видел ссылку на них мне дали ранее в этой же ветке форума ЗЫ ЗЫ Будем дальше разбираться. СПАСИБО!
--------------------
If it doesn't work in simulation, it won't work on the board.
"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
|
|
|
|
|
Feb 3 2010, 16:57
|
Участник

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

|
Цитата(Maverick @ Feb 3 2010, 13:13)  да нет не надо, просто думал что у многих такие простые примеры есть и люди могли бы (если конечно захотят) поделиться. Все кто начинает работать с каким либо микропроцессором когда то делали мигание светодиодом, отработку кнопок и т.д. Потому что это наглядней! Но это только мое мнение!!! ЗЫ Примеры видел ссылку на них мне дали ранее в этой же ветке форума ЗЫ ЗЫ Будем дальше разбираться. СПАСИБО!  Если будет время накатаю. Но самый простой способ для вас - это использовать Base System Builder Wizard прямо под ваш кит. Там нужно только галочки поставить, какие компоненты должны быть вставлены. Визард сам сгенерит вам готовую систему с драйверами и, даже, тестовыми приложениями. Не разобравшись с функциями для работы с UART, таймером и контроллером прерываний, вы все равно не поймете как работает даже готовый пример. Так что, начните с изучения С функций и как они используются в примерах к вашей системе. Комментарий к каждой из них более чем подробный. Без этого все равно никак.
Сообщение отредактировал dspx - Feb 3 2010, 17:47
|
|
|
|
|
Feb 3 2010, 17:25
|
Местный
  
Группа: Участник
Сообщений: 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 я не использую, только готовые блоки, остался я без экрана...
|
|
|
|
|
Feb 4 2010, 08:29
|

я только учусь...
     
Группа: Модераторы
Сообщений: 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.
"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
|
|
|
|
|
Feb 5 2010, 19:34
|
Местный
  
Группа: Участник
Сообщений: 336
Регистрация: 7-03-07
Из: Петербург
Пользователь №: 25 961

|
Цитата(Maverick @ Feb 4 2010, 11:29)  Вы не могли бы дать ссылки на примеры, если их нет ранее в этой ветке форума. Я искал здесь: http://www.xilinx.com/support/documentation/index.htmselect "Doc Type" and "Application Notes"
|
|
|
|
|
Feb 12 2010, 15:40
|

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

|
вопрос: какие библиотеку нужно подключить кроме (#include math.h) чтобы процессор выполнял действия с дробными числами и как вывести их через xil_printf. Пытался так float count; count = 5/3; xil_printf(" mat= %f \n\r",count); не получается.  PS блок FPU я не подключал
--------------------
If it doesn't work in simulation, it won't work on the board.
"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
|
|
|
|
|
Feb 12 2010, 16:17
|
Участник

Группа: Свой
Сообщений: 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
Причина редактирования: Избыточное цитирование
|
|
|
|
|
Feb 12 2010, 18:33
|
Участник

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

|
http://www.xilinx.com/support/answers/29787.htmполезная ссылка показывающая, с какими ошибками можно столкнуться, работая с дробными, и как их решить.
|
|
|
|
|
Feb 15 2010, 07:34
|
Местный
  
Группа: Участник
Сообщений: 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); не получается.  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() должен помочь
|
|
|
|
|
Feb 16 2010, 07:57
|

Участник

Группа: Участник
Сообщений: 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
Причина редактирования: Оформление кода
|
|
|
|
|
Feb 16 2010, 14:13
|

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

|
Написав следующую программу(подкорректировав(заменив printf на xil_printf и добавил очистку экрана xil_printf("%c[2J",27)  приведенную в примере): 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.
"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
|
|
|
|
|
Feb 17 2010, 07:46
|

я только учусь...
     
Группа: Модераторы
Сообщений: 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.
"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
|
|
|
|
|
Feb 17 2010, 20:57
|
Участник

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

|
Цитата(Maverick @ Feb 17 2010, 10:46)  Согласно этой ссылки вывести числа с плавающей запятой вообще нельзя, через какой-либо printf. Вот так то ... С чего вы это взяли? Там ничего подобного не сказано. Я уже приводил ссылку с примером вызова функции printf выводящей флоат.
|
|
|
|
|
Feb 22 2010, 08:19
|

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

|
Цитата(Alex77 @ Feb 18 2010, 08:47)  Дык наверно у него просто программа не помещается в BRAM ( с использованием printf() ). А xil_printf() в принципе не имеет формата %f. Товарищ в очередной раз пытается использовать "телефон для забивания гвоздей"  Цитата(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." я не знаю.  Просвятите пожалуйста. ЗЫ ЗЫ ЗЫ ЗЫ Будет очень хорошо если в дополнение сделаете скриншот окна программы HyperTerminal с выведенным результатом.
--------------------
If it doesn't work in simulation, it won't work on the board.
"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
|
|
|
|
|
Feb 22 2010, 11:28
|
Участник

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

|
MaverickУ вас по идее в системе есть еще DDR/SRAM/DDR2. Редактируете линкер скрипт программы, чтобы она размещалась во внешней памяти, там же можно увеличить хип и стэк. Должно помочь.
Причина редактирования: Нарушение п.п Правил 3.4
|
|
|
|
|
Nov 16 2010, 20:32
|
Участник

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

|
Доброго всем времени суток. Подскажите, как написать программу для отображения сетевых пакетов (с порта Ethernet) в консоли. Плата Spartan-3E Starter Kit.
|
|
|
|
|
Nov 17 2010, 07:20
|
Знающий
   
Группа: Свой
Сообщений: 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 и исправляете и добавляете пару десятков строчек. И всё - полный кукумбер  .
|
|
|
|
|
Nov 17 2010, 13:32
|
Участник

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

|
Вот как-раз и интересует момент, как исправить проект С++. Также интересует вопрос, где взять описание стандартных функций для языка С/С++ в Xilinx? (xil_printf вместо printf это я уже понял. А как же быть с остальными?)
|
|
|
|
|
Nov 30 2010, 19:17
|
Группа: Участник
Сообщений: 12
Регистрация: 21-05-06
Пользователь №: 17 314

|
Цитата(DiWhite @ Nov 17 2010, 16:32)  Вот как-раз и интересует момент, как исправить проект С++. Также интересует вопрос, где взять описание стандартных функций для языка С/С++ в Xilinx? (xil_printf вместо printf это я уже понял. А как же быть с остальными?) Си он и есть си. Большинство сишных либ в едк есть, насколько я помню, conio.h в едк нет. По поводу документации она лежит в <папка установки edk>/doc/usenglish. Там много полезного. Про сишные либы файл зовется oslib_rm.pdf (вроде так).
|
|
|
|
|
Aug 10 2011, 08:01
|
Участник

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

|
Полистал форум, не нашёл ответ на свой вопрос: - Создал я платформу в XPS, - Написал и отладил программу в EDK - всё отлично работает - Пришла пора записать готовую программу на плату - удалён модуль DEBUG из системы, проект собран в Release.. - Флэшка прошита (файл для флэш получен из download.bit) - НО! Программа "ждёт", что я нажму на кнопку в SDK:  А нажать на неё я уже не могу, т.к. модуля DEBUG нет, да и вообще, платформа должна стать автономной. Видимо, где-то установлена какая-то галочка, которая меняет режим компилятора, я думал, что это переключается Debug/Release. Но видимо нет. Подскажите пожалуйста, где это делается. Спасибо.
|
|
|
|
|
Nov 10 2011, 09:52
|
Группа: Новичок
Сообщений: 3
Регистрация: 10-11-11
Пользователь №: 68 234

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

я только учусь...
     
Группа: Модераторы
Сообщений: 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.
"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
|
|
|
|
|
Nov 11 2011, 07:01
|
Группа: Новичок
Сообщений: 3
Регистрация: 10-11-11
Пользователь №: 68 234

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

Группа: Участник
Сообщений: 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 устройства, или как правильно указать к какому устройству обращение?
|
|
|
|
|
Sep 2 2016, 13:10
|
Участник

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

|
Пока разобрался, спасибо.
Сообщение отредактировал T00T - Sep 2 2016, 13:20
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|