Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: С для NIOS
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Системы на ПЛИС - System on a Programmable Chip (SoPC)
torik
не ругайте матом, но ткните носом в мануал на компилятор С или там С++ для ниоса, а то что-то не вижу его 07.gif

как логическое XOR сотворить и прочее.... а не оболочку.
vetal
Ниос тут не при чем - вам нужно книжку по С искать.
http://www.citforum.ru/programming/cpp_ref/ref_4.shtml
torik
С C знаком более менее, каковы различия?

Вопрос не по синтезу:
пытаюсь читать флеш как это написано в мануале:
Код
   alt_flash_fd* fd;
   int ret_code = 0x0;  
   int test_offset;   //это 0
   alt_u8 dest[64]; //массив приемник

   test_offset = 0x0000;
   fd = alt_flash_open_dev("/dev/cfi_flash_0");  //имя как написано в system.h
   if (fd!=NULL) {
      ret_code = alt_read_flash(fd, test_offset, dest, 64);
   } else {
      dest[1] = 1;  //всегда попадаем сюда
   }


Почему он не хочет открывать флеш? Смотрю в дебагере...
vetal
Цитата
Смотрю в дебагере...

Для отладки периферии нужно использовать аппаратный, а не программный отладчик.

C он и в африке С smile.gif
torik
да хоть аппаратный, хоть программный (симулятор что ли?) - в железе-то все равно не работает. Вот это
Код
   } else {
      dest[1] = 1;  //всегда попадаем сюда
   }

зажигает лампочку на плате, т.е. тут даже без дебагера не работает...

Не увидел решение проблемы в описании на софт и на переферию (cfi). Еще с нулевого адреса флеш грузится процессор, но тут вроде не должно быть гвоздя?
vetal
Цитата
if (fd!=NULL) {

Если файл не открыт вы попадете в эту ветку, а если открыт то будете мигать светодиодом.
стр.6.8 Nios II Software Developer’s Handbook
torik
lol.gif Это я прочитал. ПОЧЕМУ он файл не хочет открывать? При этом программа размещается в той же флеш и грузится нормально...

Ой, невнимательно прочитал фразу, е-мое, приду домой - проверю! Не может быть smile.gif
torik
Короче говоря, нафиг нужны эти
"fd = alt_flash_open_dev("/dev/cfi_flash_0");"

проще воспользоваться стандартными функциями или вообще через DMA



Блин, люди!
Ткните где читать - не вкуриваю как мне из флеша читать совершенно....
например если я пишу
dest[1] = alt_read_query_entry_8bit((void*)CFI_FLASH_0_BASE,0);

компилятор дает ошибку
Alezi
Для доступа к CFI памяти в SOPC builder необходимо наличие (ug_nios2_flash_programmer.pdf):
 Nios II Processor, with Joint Text Action Group (JTAG) debug module level 1 or greater
 Avalon-MM Tristate Bridge
 Flash Memory (Common Flash Interface)

На плате Altera DE2 (я с ней работал) установлена CFI флеш память фирмы SPANSION объемом 4МБ, которая имеет 22 адресных линии и 8 данных. Тайминги при работе были выставлены 70-100-70 нс (с другими значениями не известно).
Особенностью является установка в Quartus II пина (FL_RST_N) как входного, хотя как пин от флеш памяти не присутствует, но есть в Pin Planner при импорте всех пинов. Без установки этого пина как входного (VCC) память работать не будет.
Для чтения/записи, вы должны использовать API HAL, чтобы и читать и писать данные. Про HAL функции здесь (n2sw_nii5v2.pdf, раздел 6-16; раздел 12). Функции API определены в sys/alt_flash.h (подключается в программе для NIOS).
Для примера
Код
#include <stdio.h>
#include "sys/alt_flash.h"
#include "system.h"

int main ()
{   alt_flash_fd* fd;
    int ret_code;
    flash_region* regions;
    int number_of_regions;

fd = alt_flash_open_dev("/dev/cfi_flash");
    if (fd)
        {   ret_code = alt_get_flash_info(fd, &regions, &number_of_regions);
            if (!ret_code)
  {
      printf("Offset of this region from start of the flash - %d \n", regions->offset);  
      printf("Size of this erase region  - %d \n", regions->region_size);
      printf("Number of blocks in this region  - %d \n", regions->number_of_blocks);
      printf("Size of each block in this erase region  - %d byte \n", regions->block_size);
      printf("The number of erase regions in the flash - %d \n", number_of_regions);
  };
        alt_flash_close_dev(fd);
        }
    else
    {
       printf("Can’t open cfi_flash\n");
    }
return 0;
}
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.