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

 
 
3 страниц V  < 1 2 3 >  
Reply to this topicStart new topic
> MicroBlaze (Vivado 2015.1), beginner questions
Alex77
сообщение Jun 16 2015, 19:06
Сообщение #16


Местный
***

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



Цитата(doom13 @ Jun 16 2015, 21:48) *
выборочной
Попытался обойтись без использования new, добавил в проект простенький класс - конструктор, деструктор и пару функций. Скомпилилось, но при попытке создать объект опять ругается на малый размер памяти. При этом размер программы занял более 100 кБ, а кода там минимум. Вот и вопрос - можно ли как-то настроить Xilinx SDK, чтоб нормально работать с с++? У Altera для Nios II всё работает надо только задать компилятору соответствующие опции.

C++ по определению "плодит" толстые программы и при этом не важно xilinx or altera. Можно поискать опции для "выборочной" линковки стандартных библиотек. все остальное "от лукавого". или переходите на с (но там тоже свои заморочки)
Go to the top of the page
 
+Quote Post
doom13
сообщение Jun 16 2015, 19:13
Сообщение #17


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

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Цитата(Alex77 @ Jun 16 2015, 22:06) *
C++ по определению "плодит" толстые программы и при этом не важно xilinx or altera. Можно поискать опции для "выборочной" линковки стандартных библиотек. все остальное "от лукавого". или переходите на с (но там тоже свои заморочки)

Но не на столько же толстые. С Altera Nios II работал достаточно много и там с этим всё норально. Предполагаю, что и у Xilinx должен быть способ как правильно всё настроить. Только начинаю осваивать MicroBlaze и столкнулся с описанной проблемой. А с одними макросами работать как-то не очень приятно.
Go to the top of the page
 
+Quote Post
doom13
сообщение Jun 17 2015, 08:54
Сообщение #18


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

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Добавил в IP Integrator ядро ten_gig_eth_mac, в BSP высветилось generic и отсутствуют какие-либо драйвера для этого ядра. Что это означает, что на него нет лицензии?
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
doom13
сообщение Jun 17 2015, 13:41
Сообщение #19


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

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Очень даже помогают ключи для компилера (-ffunction-sections -fdata-sections) и линкера (-Wl,--gc-sections), нашёл в этой теме.
Размер кода уменьшился со 190 кБ до 62 кБ. Возможно есть ещё что-то?
Если переписать всё с использованием только си, то размер кода ужимается до 30 кБ.
Go to the top of the page
 
+Quote Post
Alex77
сообщение Jun 18 2015, 05:14
Сообщение #20


Местный
***

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



Цитата(doom13 @ Jun 17 2015, 16:41) *
Очень даже помогают ключи для компилера (-ffunction-sections -fdata-sections) и линкера (-Wl,--gc-sections), нашёл в этой теме.
Размер кода уменьшился со 190 кБ до 62 кБ. Возможно есть ещё что-то?
Если переписать всё с использованием только си, то размер кода ужимается до 30 кБ.

Это практически все. есть еще оптимизация по размеру/скорости типа -o2 и -s (как то так, если не путаю с другим компилятором). Если важен размер самого elf файла - то можно "отрезть" отладочную информацию.
Go to the top of the page
 
+Quote Post
doom13
сообщение Jun 18 2015, 06:06
Сообщение #21


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

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



С O2 и Os понятно, но тогда не получится нормально отлаживать программу, а пока это рано. Есть ещё каких-то 30 кБ разницы между кодом си и с++. У Altera для Nios II как-то всё сразу более оптимально настроено, в 60 кБ помещается программа с куда более значительным кодом (без использования Os и др.).

Почему для 10G Ethernet MAC driver name получился равным generic, что это означает?
Цитата
BEGIN DRIVER
PARAMETER DRIVER_NAME = generic
PARAMETER DRIVER_VER = 2.0
PARAMETER HW_INSTANCE = ten_gig_eth_mac_0
END
Go to the top of the page
 
+Quote Post
doom13
сообщение Jun 18 2015, 08:25
Сообщение #22


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

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



В папке с установкой Xilinx SDK (\Xilinx\SDK\2015.1\data\embeddedsw\XilinxProcessorIPLib\drivers\) нет каких-либо исходников для 10G Ethernet MAC. Означает ли это и вышеописанный generic, что у Xilinx нет поддержки данного ядра в виде драйвера BSP? Что-то на их сайте никакой инфы по этому поводу найти не могу.
Go to the top of the page
 
+Quote Post
doom13
сообщение Jun 18 2015, 18:30
Сообщение #23


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

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Ответили на форуме Xilinx, оказывается, никакого BSP для 10G EMAC нет.
Остаётся вопрос по настройке проекта для с++.
Go to the top of the page
 
+Quote Post
Alex77
сообщение Jun 19 2015, 09:14
Сообщение #24


Местный
***

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



Цитата(doom13 @ Jun 18 2015, 21:30) *
Ответили на форуме Xilinx, оказывается, никакого BSP для 10G EMAC нет.
Остаётся вопрос по настройке проекта для с++.

Посмотрите в map.lst (создается опциями) что там на компилилось и с линковалось. сравните с аналогичным map.lst от altera при идентичных исходниках. далее по результатам...
Go to the top of the page
 
+Quote Post
doom13
сообщение Jun 19 2015, 09:21
Сообщение #25


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

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Цитата(Alex77 @ Jun 19 2015, 12:14) *
Посмотрите в map.lst (создается опциями) что там на компилилось и с линковалось. сравните с аналогичным map.lst от altera при идентичных исходниках. далее по результатам...

Да, спасибо, map-файл уже генерю, но пока только просмотрел, что оно подключает. Отложил этот вопрос "на потом".
Go to the top of the page
 
+Quote Post
doom13
сообщение Jun 26 2015, 13:35
Сообщение #26


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

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Может кто подскажет, где у меня ошибка?
Разбираюсь с работой ядра CDMA. В Simple Mode всё работает (смотрю в Memory, что данные перебрасываются из одной области памяти в другую), а вот Scatter Gather Mode работать не хочет.
CODE

#include "xaxicdma_i.h"
#include "xparameters.h"
#include "xaxicdma.h"
#include "string.h"


#define BD_SPACE_BASE XPAR_DESCRIPTOR_MEMORY_AXI_BRAM_CTRL_2_S_AXI_BASEADDR
#define BD_SPACE_HIGH XPAR_DESCRIPTOR_MEMORY_AXI_BRAM_CTRL_2_S_AXI_HIGHADDR
#define NUMBER_OF_BDS_TO_TRANSFER 4


int main()
{
int n = 1024;

unsigned int *mem0_ptr = (unsigned int *) XPAR_INTERNAL_MEMORY_0_AXI_BRAM_CTRL_0_S_AXI_BASEADDR;
unsigned int *mem1_ptr = (unsigned int *) XPAR_INTERNAL_MEMORY_1_AXI_BRAM_CTRL_1_S_AXI_BASEADDR;

memset(mem0_ptr, 0, n*sizeof(unsigned int));
memset(mem1_ptr, 0, n*sizeof(unsigned int));
memset(mem1_ptr + n, 0, n*sizeof(unsigned int));

for(int i = 0; i < n; i++)
{
mem0_ptr[i] = i;
}

int status, desc_count_max;
XAxiCdma_Bd decs_template;
XAxiCdma_Config *cfg_ptr;
XAxiCdma cdma_engine;
XAxiCdma *cdma = &cdma_engine;


cfg_ptr = XAxiCdma_LookupConfig(XPAR_AXI_CDMA_0_DEVICE_ID);

status = XAxiCdma_CfgInitialize(cdma, cfg_ptr, cfg_ptr->BaseAddress);
XAxiCdma_Reset(cdma);

while(!XAxiCdma_ResetIsDone(cdma))
;

while(XAxiCdma_IsBusy(cdma))
;

//--------------------------------------------------------------------
// SG Mode
//--------------------------------------------------------------------
memset(mem1_ptr, 0, 32768);

if(XAxiCdma_IsSimpleMode(cdma))
{
XAxiCdma_SwitchMode(cdma, XAXICDMA_SG_MODE);
}

if(XAxiCdma_IsSimpleMode(cdma))
{
XAxiCdma_SwitchMode(cdma, XAXICDMA_SG_MODE);
}

desc_count_max = XAxiCdma_BdRingCntCalc(XAXICDMA_BD_MINIMUM_ALIGNMENT, BD_SPACE_HIGH - BD_SPACE_BASE + 1, BD_SPACE_BASE);
status = XAxiCdma_BdRingCreate(cdma, BD_SPACE_BASE, BD_SPACE_BASE, XAXICDMA_BD_MINIMUM_ALIGNMENT, desc_count_max);
if(status != XST_SUCCESS)
{
return 1;
}

XAxiCdma_BdClear(&decs_template);
XAxiCdma_BdRingClone(cdma, &decs_template);

XAxiCdma_Bd *desc_ptr, *curr_desc_ptr;

status = XAxiCdma_BdRingAlloc(cdma, NUMBER_OF_BDS_TO_TRANSFER, &desc_ptr);
if(status != XST_SUCCESS)
{
return 1;
}

curr_desc_ptr = desc_ptr;

for(int i = 0; i < NUMBER_OF_BDS_TO_TRANSFER; i++)
{
status = XAxiCdma_BdSetSrcBufAddr(curr_desc_ptr, (unsigned long) mem0_ptr);
if(status != XST_SUCCESS)
{
return 1;
}
status = XAxiCdma_BdSetDstBufAddr(curr_desc_ptr, (unsigned long) (mem1_ptr + i*n));
if(status != XST_SUCCESS)
{
return 1;
}
status = XAxiCdma_BdSetLength(curr_desc_ptr, n*sizeof(unsigned int));
if(status != XST_SUCCESS)
{
return 1;
}

curr_desc_ptr = XAxiCdma_BdRingNext(cdma, curr_desc_ptr);
}

XAxiCdma_BdRingToHw(cdma, NUMBER_OF_BDS_TO_TRANSFER, desc_ptr, 0, 0);

while(XAxiCdma_IsBusy(cdma))
;

while(1) {}
}
Go to the top of the page
 
+Quote Post
doom13
сообщение Jun 27 2015, 07:55
Сообщение #27


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

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Ошибка в том, что в использовании функции XAxiCdma_SwitchMode() нет необходимости. Текущий режим проверяется при старте CDMA (ф-ии XAxiCdma_BdRingToHw() и XAxiCdma_SimpleTransfer()), а при ручном включении необходимого режима нарушается алгоритм работы драйвера.
Go to the top of the page
 
+Quote Post
kaktus
сообщение Jun 30 2015, 09:23
Сообщение #28


Участник
*

Группа: Участник
Сообщений: 52
Регистрация: 5-05-05
Из: Санкт-Петербург
Пользователь №: 4 756



Цитата(Golikov A. @ Jun 11 2015, 22:58) *
конфигурацию железа не меняли?
У ксалинкса передача всех параметров идет через автосоздаваемый заголовочный файл. Он иногда почему то не автопересоздается, и тогда после смены конфигурации железа вообще Ад начинается.

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


Якобы должно помогать: правой кнопкой по BSP (Board Support Package) - Index - Rebuild.
Если не помогает, я просто его стираю и создаю новый: получается, например, standalone_bsp_4 со всеми драйверами обновленного железа и актуальными адресами в xparameters.h
Остается указать в свойствах программного проекта, чтобы тот ссылался на новый BSP:
правой кнопкой по Hello World - Properties - Project Reference - поставить галочку напротив вновь созданного BSP.
Go to the top of the page
 
+Quote Post
doom13
сообщение Jul 28 2015, 11:01
Сообщение #29


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

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Пытаюсь запустить проект в XSDK (2015.2) под Linux (Ubuntu 15.04). Доустановил кучу либ - проект собрался.
При запуске дебага возникают проблемы:
Цитата
17:51:27 ERROR : Unexpected error while launching program.
java.lang.RuntimeException: Target request failed: Target is not responding (timed out).
at com.xilinx.sdk.debug.core.XilinxAppLaunchConfigurationDelegate.debugApplication(
XilinxAppLaunchConfigurationDelegate.java:778)
at com.xilinx.sdk.debug.core.XilinxAppLaunchConfigurationDelegate.launch(XilinxAppL
aunchConfigurationDelegate.java:298)
at com.xilinx.sdk.debug.ui.XilinxAppLaunchDelegateWrapper.launch(XilinxAppLaunchDel
egateWrapper.java:31)
at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.j
ava:858)
at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.j
ava:707)
at org.eclipse.debug.internal.ui.DebugUIPlugin.buildAndLaunch(DebugUIPlugin.java:10
18)
at org.eclipse.debug.internal.ui.DebugUIPlugin$8.run(DebugUIPlugin.java:1222)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53)
Go to the top of the page
 
+Quote Post
doom13
сообщение Jul 31 2015, 15:04
Сообщение #30


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

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Проблема была с правами пользователя. Сегодня руки дошли и ещё раз попробовал всё запустить. Vivado запускал из консоли с правами суперпользователя, SDK запускал из меню Vivado и не работало.
Попробовал стартануть SDK из консоли с правами суперпользователя - всё запустилось.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 8th July 2025 - 05:45
Рейтинг@Mail.ru


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