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

 
 
4 страниц V  < 1 2 3 4 >  
Reply to this topicStart new topic
> Процессор MicroBlaze, помощь начинающему
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

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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 07:56
Рейтинг@Mail.ru


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