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

 
 
> Nios 2, вывод символа в JTAG UART, не хватает памяти даже для alt_putchar
AVR
сообщение May 8 2016, 12:06
Сообщение #1


фанат Linux'а
*****

Группа: Свой
Сообщений: 1 353
Регистрация: 23-10-05
Из: SPB.RU
Пользователь №: 10 008



Есть самый младший 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?


--------------------
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
_pv
сообщение May 9 2016, 08:19
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 563
Регистрация: 8-04-05
Из: Nsk
Пользователь №: 3 954



Код
#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;
}

Go to the top of the page
 
+Quote Post
AVR
сообщение May 10 2016, 19:46
Сообщение #3


фанат Linux'а
*****

Группа: Свой
Сообщений: 1 353
Регистрация: 23-10-05
Из: SPB.RU
Пользователь №: 10 008



Цитата(_pv @ May 9 2016, 11:19) *
Код
#include "altera_avalon_jtag_uart_regs.h"
#include "system.h"
int UartRead(char * data, int num)
int UartWrite(char * data, int num){

Спасибо! Всё работает, всё поместилось! sm.gif


--------------------
Go to the top of the page
 
+Quote Post



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

 


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


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