|
Процессор MicroBlaze, помощь начинающему |
|
|
|
 |
Ответов
|
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 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, 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 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, 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.
"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
|
|
|
|
Сообщений в этой теме
Maverick Процессор MicroBlaze Dec 18 2009, 14:10  tolik1 Цитата(Maverick @ Dec 22 2009, 13:05) Да ... Dec 23 2009, 08:24            Alex77 Просто такие "программы" пишутся за 10 м... Feb 3 2010, 10:29            dspx Цитата(Maverick @ Feb 3 2010, 13:13) да н... Feb 3 2010, 16:57                dspx Цитата(Maverick @ Feb 12 2010, 18:40) ...... Feb 12 2010, 16:17                 dspx http://www.xilinx.com/support/answers/29787.htm
по... Feb 12 2010, 18:33                       dspx Maverick
У вас по идее в системе есть еще DDR/SRA... Feb 22 2010, 11:28 Egel Присоединяюсь к просьбе Maverick Dec 22 2009, 13:04 flipflop Надо плясать от Xilinx SDK. Он автоматически созда... Dec 22 2009, 15:19 Mad_max ЦитатаНадо плясать от Xilinx SDK. Он автоматически... Dec 22 2009, 20:42 Leka У меня не MicroBlaze, не NIOS, не С/С++ -->
... Dec 23 2009, 09:53 avesat Цитата(Maverick @ Dec 18 2009, 16:10) ...... Dec 24 2009, 11:11 avesat %%EDK\sw\XilinxProcessorIPLib\drive... Dec 29 2009, 09:51 DSIP Циферки выводятся так:
КодXuint32 data;
...
data =... Feb 16 2010, 07:57 DiWhite Доброго всем времени суток. Подскажите, как написа... Nov 16 2010, 20:32 VladimirB Цитата(DiWhite @ Nov 16 2010, 23:32) Добр... Nov 17 2010, 07:20 DiWhite Вот как-раз и интересует момент, как исправить про... Nov 17 2010, 13:32 kark Цитата(DiWhite @ Nov 17 2010, 16:32) Вот ... Nov 30 2010, 19:17 Tanichev Полистал форум, не нашёл ответ на свой вопрос:
- С... Aug 10 2011, 08:01 knirti Здравствуйте!
У меня задача прикрутить к плиси... Nov 10 2011, 09:52 Maverick Цитата(knirti @ Nov 10 2011, 11:52) Здрав... Nov 10 2011, 10:18 knirti Цитата(Maverick @ Nov 10 2011, 14:18) Сог... Nov 11 2011, 07:01 T00T Доброго дня.
Вопрос от начинающего. Хочу поморгат... Sep 2 2016, 10:59 dm.pogrebnoy xparameters.h
Можно еще драйвер GPIO поизучать, та... Sep 2 2016, 13:04 T00T Пока разобрался, спасибо. Sep 2 2016, 13:10
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|