1891ВМ12Я 0 8 мая, 2016 Опубликовано 8 мая, 2016 · Жалоба Есть самый младший Altera Cyclone IV EP4CE6E22C8, в нем сидит Nios 2 и один общий контроллер памяти 16 Килобайт для всего: ПЗУ и ОЗУ. Есть там и JTAG UART, в настройках указано что вывод должен осуществляться в JTAG UART. И есть простая программа: #include "system.h" #include "altera_avalon_pio_regs.h" #include "sys/alt_stdio.h" int main() { char leds = 0x01; int i = 0, n = 0; while(true) { IOWR_ALTERA_AVALON_PIO_DATA(GPIO_BASE, leds); for(i = 0; i < (ALT_CPU_CPU_FREQ / 25); i++); //alt_putchar('*'); //alt_putchar('\n'); //alt_putchar('\r'); leds++; n++; } return 0; } Пока я не раскомментировал alt_putchar (а это самый легковесный вариант для печати символа, вроде) - всё запускается и работает, светодиоды мигают. Но с alt_putchar уже не хватает памяти. Я попробую урезать кэши и еще что-нибудь, но есть ли возможность как-то низкоуровнево записать в регистр чтобы символ ASCII вывелся в JTAG UART, не задействуя alt_putchar? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dim99 0 9 мая, 2016 Опубликовано 9 мая, 2016 · Жалоба Стоит посмотреть в настройки проекта - могут быть подключены все подряд драйвера. Там есть галочка reduced drivers или что-то такое. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_pv 52 9 мая, 2016 Опубликовано 9 мая, 2016 · Жалоба #include "altera_avalon_jtag_uart_regs.h" #include "system.h" int UartRead(char * data, int num){ int n = 0; while (n < num){ unsigned int d = IORD_ALTERA_AVALON_JTAG_UART_DATA(JTAG_UART_BASE); if (d & ALTERA_AVALON_JTAG_UART_DATA_RVALID_MSK) data[n++] = d; else break; } return n; } int UartWrite(char * data, int num){ int n = 0; while (n < num){ unsigned int d = IORD_ALTERA_AVALON_JTAG_UART_CONTROL(JTAG_UART_BASE); if (d & ALTERA_AVALON_JTAG_UART_CONTROL_WSPACE_MSK) IOWR_ALTERA_AVALON_JTAG_UART_DATA(JTAG_UART_BASE, data[n++]); else break; } return n; } Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
1891ВМ12Я 0 10 мая, 2016 Опубликовано 10 мая, 2016 · Жалоба #include "altera_avalon_jtag_uart_regs.h" #include "system.h" int UartRead(char * data, int num) int UartWrite(char * data, int num){ Спасибо! Всё работает, всё поместилось! :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Raven 8 10 мая, 2016 Опубликовано 10 мая, 2016 · Жалоба Настройки BSP - в студию, пожалуйста. "Hellp, World!" с выводом в UART прекрасно помещается в 4-6 kB (если не меньше, указанный объем - это уже с парой процедурок тестирования памяти). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
1891ВМ12Я 0 11 мая, 2016 Опубликовано 11 мая, 2016 · Жалоба Настройки BSP - в студию, пожалуйста. В каком файле они содержатся? Я рано радовался - оказалось что кроме той простейшей функции вывода в JTAG-UART - больше ничего и не помещается, а ведь мне надо еще несколько килобайт кода туда засовывать... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_sda 0 11 мая, 2016 Опубликовано 11 мая, 2016 · Жалоба В каком файле они содержатся? Я рано радовался - оказалось что кроме той простейшей функции вывода в JTAG-UART - больше ничего и не помещается, а ведь мне надо еще несколько килобайт кода туда засовывать... C++ отключили? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
1891ВМ12Я 0 11 мая, 2016 Опубликовано 11 мая, 2016 · Жалоба C++ отключили? Надо попробовать, не отключал. Сильно кушает? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_sda 0 11 мая, 2016 Опубликовано 11 мая, 2016 · Жалоба Надо попробовать, не отключал. Сильно кушает? Конечно. Ещё это помогает. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Raven 8 11 мая, 2016 Опубликовано 11 мая, 2016 · Жалоба Давайте сверим карты. Вы свой пример делаете на базе готового примера "Hello, World" Small ? Такое впечатление, что нет, поскольку все нужные настройки в нем уже сделаны, и размер для него получается маленький. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
1891ВМ12Я 0 11 мая, 2016 Опубликовано 11 мая, 2016 · Жалоба Давайте сверим карты. Вы свой пример делаете на базе готового примера "Hello, World" Small ? Такое впечатление, что нет, поскольку все нужные настройки в нем уже сделаны, и размер для него получается маленький. Не на базе него... Сделаю новый проект на базе этого small. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Raven 8 11 мая, 2016 Опубликовано 11 мая, 2016 · Жалоба Поисследуйте строение малых сих - будет очень полезно. Они вполне обозримы для новичка в Alter'овской NIOS-экосистеме. Я, например, довольно быстро прикрутил к Hello-Small копи-паст вариант упрощенного uart_printf (на базе alt_printf) - чтобы выводить HEX-ы с удобством. А в варианте MemoryTest-Small почему-то и полноценный printf() работал (хотя, вроде бы, не должен). Попробуйте, может он и в Hello-Small заведется. А нет - так можно помаленьку контролируемо что-то добавлять в проект. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
1891ВМ12Я 0 11 мая, 2016 Опубликовано 11 мая, 2016 · Жалоба Конечно. Ещё это помогает. Вот это помогло! Info: (test_led.elf) 2492 Bytes program size (code + initialized data). Info: 13 KBytes free for stack + heap. А еще, что меня удивило - BSP было скомпилено по дефлоту в режиме debug без оптимизаций, это не могло не сожрать всю память. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Raven 8 13 мая, 2016 Опубликовано 13 мая, 2016 · Жалоба Да вроде бы, Debug-вариант не настолько сильно толстеет. Я, когда экспериментировал с вышеописанным, только в Debug'е все и собирал - и размеры были те, что упоминались. Чем все закончилось-то? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
1891ВМ12Я 0 14 мая, 2016 Опубликовано 14 мая, 2016 · Жалоба Чем все закончилось-то? Всё закончилось успешно, проект с лихвой влезает, я даже использую обычный printf и могу получать текст в среде Eclipse или отдельной программе nios2-terminal - для этого воспользовался BSP Editor для настройки stdout. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться