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

 
 
43 страниц V  « < 22 23 24 25 26 > »   
Reply to this topicStart new topic
> NIOS для начинающих
naliwator
сообщение Feb 9 2012, 15:01
Сообщение #346


Частый гость
**

Группа: Свой
Сообщений: 146
Регистрация: 11-08-08
Из: Kolpino
Пользователь №: 39 551



Цитата(Full41 @ Feb 9 2012, 18:25) *
Вот проект тестовый
[attachment=65423:Primer_1.rar]

Похоже вы давно не чистили папку с проектом.
Для генерации BSP вы используете файл CPU.sopcinfo,
а ваша система генерирует CPU_SOPC.sopcinfo.

Последний сгенерировал нормально.


--------------------
Go to the top of the page
 
+Quote Post
Full41
сообщение Feb 10 2012, 05:45
Сообщение #347


Местный
***

Группа: Свой
Сообщений: 309
Регистрация: 31-03-08
Из: САНКТ-ПЕТЕРБУРГ
Пользователь №: 36 375



Цитата(naliwator @ Feb 9 2012, 18:01) *
Похоже вы давно не чистили папку с проектом.
Для генерации BSP вы используете файл CPU.sopcinfo,
а ваша система генерирует CPU_SOPC.sopcinfo.

Последний сгенерировал нормально.

Попробую пересоздать
Go to the top of the page
 
+Quote Post
Pashtet791
сообщение Mar 3 2012, 11:41
Сообщение #348





Группа: Новичок
Сообщений: 4
Регистрация: 3-03-12
Пользователь №: 70 583



Здравствуйте, я полнейший новичок, но так вышло, что сразу попал в пекло на работе. Есть Stratix IV, готовый .ptf - файл. К плате подключена EEPROM AT24C1024 (даташит, очень коротенький: Прикрепленный файл  24c1024.pdf ( 256.17 килобайт ) Кол-во скачиваний: 542
). Задача такая - записать что-то в эту память и считать оттуда это что-то. На данном этапе хотя бы одно слово, чтобы мне разобраться, что куда. Создал шаблонный проект "hello world", собрал, получил system.h. Все, что мне нужно из system.h, - это:

/*
* i2c_comod configuration
*
*/

#define I2C_COMOD_NAME "/dev/i2c_comod"
#define I2C_COMOD_TYPE "i2c_alt"
#define I2C_COMOD_BASE 0x0240a61c
#define I2C_COMOD_SPAN 4
#define ALT_MODULE_CLASS_i2c_comod i2c_alt

Интерфейс работы с AT24C1024 - два 16-разрядных регистра, объединенных в один. Описание интерфейса (одна страничка): Прикрепленный файл  i2c_master__ComMod_.doc ( 37 килобайт ) Кол-во скачиваний: 258
.

В чем проблема - я первый раз в жизни встретился с NIOS, Altera, EEPROM и т.д. Все, что я знаю, это программирование на C++ и университетский курс цифровой схемотехники. Таким образом, если это не составит труда, хотелось бы услышать более разжеванное объяснение в терминах программирования, чего же от меня хотят, т.к. пока что не представляю, как вообще эти регистры интерфейса увязать с самой памятью, то есть проблемы на фундаментальном уровне понимания. Понимаю, как гвозди забивать, но не знаю, куда, и что вообще требуется сколотить. Особо буду рад примерам кода или каким-то ссылкам на то, что мне следовало бы изучить, чтобы понять всё это дело. Еще раз - мне не требуется полноценная программа работы с памятью, только пример записи/считывания слова, чтобы понять фундамент. Дальше сам. Спасибо.
Go to the top of the page
 
+Quote Post
barabek
сообщение Mar 3 2012, 12:50
Сообщение #349


Знающий
****

Группа: Свой
Сообщений: 540
Регистрация: 16-08-07
Из: Владивосток
Пользователь №: 29 831



Цитата(Pashtet791 @ Mar 3 2012, 21:41) *
Здравствуйте, я полнейший новичок,...
В чем проблема - я первый раз в жизни встретился с NIOS, Altera, EEPROM и т.д. Все, что я знаю, это программирование на C++ и университетский курс цифровой схемотехники.

Если Вы правильно описали свой опытто мой совет - начните с мигания светодиодами.
Go to the top of the page
 
+Quote Post
Pashtet791
сообщение Mar 3 2012, 13:34
Сообщение #350





Группа: Новичок
Сообщений: 4
Регистрация: 3-03-12
Пользователь №: 70 583



Цитата(barabek @ Mar 3 2012, 15:50) *
Если Вы правильно описали свой опытто мой совет - начните с мигания светодиодами.


Светодиодами уже мигал. Тут просто не моя инициатива, на работе надо что-то делать, вот дали задание следующее после светодиодов. Парень сказал, что очень легко, но он мне не расскажет, а то мне будет неинтересно. А я прям не знаю, с какой стороны подступиться biggrin.gif
Хвастаться не буду, но обучаемость и интеллект у меня не страдают, так что я чувствую в себе силы в этом разобраться достаточно быстро, вот только нужно вектор движения правильный задать, так как время не ждет.
Go to the top of the page
 
+Quote Post
Konst_777
сообщение Mar 3 2012, 21:16
Сообщение #351


Знающий
****

Группа: Свой
Сообщений: 549
Регистрация: 1-06-05
Пользователь №: 5 644



[attachment=66232:I2C.7z]
Цитата(Pashtet791 @ Mar 3 2012, 16:34) *
...А я прям не знаю, с какой стороны подступиться biggrin.gif ...

Используйте нисходящее программирование, изучите datasheet 24c1024.pdf и задавайте вопросы автору i2c_master__ComMod_.doc.

Если светодиодом успешно помигали, то сможете добавить в проект четыре файла I2C.c, I2C.h, I2C_ioctl.c и I2C_ioctl.h. Добавили? Теперь, самое главное не забыть написать имя автора в заголовках этих файлов. biggrin.gif
I2C.h - уже можно отдать программисту, который будет использовать обмен с EEPROM.

/*
* I2C.h
*
* Created on: 03.03.2012
* Author:
*/

#ifndef I2C_H_
#define I2C_H_
#include "alt_types.h"

// результаты выполнения функций (коды ошибок)
#define I2C_OK 0
#define I2C_IO_ERROR -1
#define I2C_ADDRESS_OVERFLOW -2

// максимальный байт, который можно адресовать в AT24C1024
#define EEPROM_LENGTH 131071

// размер страницы для AT24C1024
#define EEPROM_PAGE_LENGTH 256

/*
*
* Чтение "len" байт в массив "data" начиная с адреса "eeprom_offset" EEPROM.
* Функция возвращает результат выполнения чтения из EEPROM AT24C1024
*
*/
alt_8 I2C_read(alt_u32 eeprom_offset, alt_u32 len, alt_u8* data);


/*
*
* Запись "len" байт начиная с адреса "eeprom_offset" EEPROM из массива "data". Значение "len" должно быть от 1 to 255
* Функция возвращает результат выполнения записи в EEPROM AT24C1024
*
*/
alt_8 I2C_write(alt_u32 eeprom_offset, alt_u16 len, alt_u8* data);


#endif /* I2C_H_ */

Модули I2C.c, I2C_ioctl.c и I2C_ioctl.h Вы будете еще дорабатывать.
Прикрепленные файлы
Прикрепленный файл  I2C.7z ( 1.52 килобайт ) Кол-во скачиваний: 14
 
Go to the top of the page
 
+Quote Post
Pashtet791
сообщение Mar 4 2012, 05:54
Сообщение #352





Группа: Новичок
Сообщений: 4
Регистрация: 3-03-12
Пользователь №: 70 583



Цитата(Konst_777 @ Mar 4 2012, 00:16) *
[attachment=66232:I2C.7z]
Используйте нисходящее программирование, изучите datasheet 24c1024.pdf и задавайте вопросы автору i2c_master__ComMod_.doc.

Если светодиодом успешно помигали, то сможете добавить в проект четыре файла I2C.c, I2C.h, I2C_ioctl.c и I2C_ioctl.h. Добавили? Теперь, самое главное не забыть написать имя автора в заголовках этих файлов. biggrin.gif
I2C.h - уже можно отдать программисту, который будет использовать обмен с EEPROM.

/*
* I2C.h
*
* Created on: 03.03.2012
* Author:
*/

#ifndef I2C_H_
#define I2C_H_
#include "alt_types.h"

// результаты выполнения функций (коды ошибок)
#define I2C_OK 0
#define I2C_IO_ERROR -1
#define I2C_ADDRESS_OVERFLOW -2

// максимальный байт, который можно адресовать в AT24C1024
#define EEPROM_LENGTH 131071

// размер страницы для AT24C1024
#define EEPROM_PAGE_LENGTH 256

/*
*
* Чтение "len" байт в массив "data" начиная с адреса "eeprom_offset" EEPROM.
* Функция возвращает результат выполнения чтения из EEPROM AT24C1024
*
*/
alt_8 I2C_read(alt_u32 eeprom_offset, alt_u32 len, alt_u8* data);


/*
*
* Запись "len" байт начиная с адреса "eeprom_offset" EEPROM из массива "data". Значение "len" должно быть от 1 to 255
* Функция возвращает результат выполнения записи в EEPROM AT24C1024
*
*/
alt_8 I2C_write(alt_u32 eeprom_offset, alt_u16 len, alt_u8* data);


#endif /* I2C_H_ */

Модули I2C.c, I2C_ioctl.c и I2C_ioctl.h Вы будете еще дорабатывать.


Спасибо большое rolleyes.gif
Go to the top of the page
 
+Quote Post
Konst_777
сообщение Mar 4 2012, 06:22
Сообщение #353


Знающий
****

Группа: Свой
Сообщений: 549
Регистрация: 1-06-05
Пользователь №: 5 644



Цитата(Pashtet791 @ Mar 4 2012, 08:54) *
Спасибо большое rolleyes.gif

Добро пожаловать в Nios II rolleyes.gif

Уверен, что программист, который будет использовать обмен с EEPROM вернет Вам I2C.h со следующими вопросами:
  • Почему Вы дали ему I2C.h, хотя он работает с EEPROM и знать не желает, через какой интерфейс идет обмен.
  • Почему у функции I2C_write() ограничение на запись в 256 байт. Ему совсем не интересно знать про Ваши ограничения.
Тогда Вы перепишете Ваши модули и отдадите этому привереде файл EEPROM.h:
/*
* EEPROM.h
*
* Created on: 03.03.2012
* Author:
*/

#ifndef EEPROM_H_
#define EEPROM_H_
#include "alt_types.h"

// результаты выполнения функций (коды ошибок)
#define EEPROM_OK 0
#define EEPROM_IO_ERROR -1
#define EEPROM_ADDRESS_OVERFLOW -2

// максимальный байт, который можно адресовать в AT24C1024
#define EEPROM_LENGTH 131071


/********************************************************************************
*******************************
*
* Чтение "len" байт в массив "data" начиная с адреса "offset" EEPROM.
* Функция возвращает результат выполнения чтения из EEPROM AT24C1024
*
********************************************************************************
*******************************/
alt_8 eeprom_read(alt_u32 eeprom_offset, alt_u32 len, alt_u8* data);


/********************************************************************************
*******************************
*
* Запись "len" байт начиная с адреса "offset" EEPROM из массива "data".
* Функция возвращает результат выполнения записи в EEPROM AT24C1024
*
********************************************************************************
*******************************/
alt_8 eeprom_write(alt_u32 eeprom_offset, alt_u32 len, alt_u8* data);


#endif /* EEPROM_H_ */

В свою очередь, у Вас появится желание задать вопрос автору i2c_master__ComMod_.doc - может ли он создать такой контроллер связи с EEPROM, который будет отображать содержимое EEPROM на область памяти процессора Nios II.
Скорее всего ответ автора контроллера связи с EEPROM будет в духе: "Идите, идите, я не подаю по понедельникам". Но попробовать можно biggrin.gif
Прикрепленные файлы
Прикрепленный файл  EEPROM.7z ( 1.46 килобайт ) Кол-во скачиваний: 17
 
Go to the top of the page
 
+Quote Post
Pashtet791
сообщение Mar 5 2012, 08:22
Сообщение #354





Группа: Новичок
Сообщений: 4
Регистрация: 3-03-12
Пользователь №: 70 583



Цитата(Konst_777 @ Mar 4 2012, 10:22) *
Добро пожаловать в Nios II rolleyes.gif

Уверен, что программист, который будет использовать обмен с EEPROM вернет Вам I2C.h со следующими вопросами:
  • Почему Вы дали ему I2C.h, хотя он работает с EEPROM и знать не желает, через какой интерфейс идет обмен.
  • Почему у функции I2C_write() ограничение на запись в 256 байт. Ему совсем не интересно знать про Ваши ограничения.
Тогда Вы перепишете Ваши модули и отдадите этому привереде файл EEPROM.h:
/*
* EEPROM.h
*
* Created on: 03.03.2012
* Author:
*/

#ifndef EEPROM_H_
#define EEPROM_H_
#include "alt_types.h"

// результаты выполнения функций (коды ошибок)
#define EEPROM_OK 0
#define EEPROM_IO_ERROR -1
#define EEPROM_ADDRESS_OVERFLOW -2

// максимальный байт, который можно адресовать в AT24C1024
#define EEPROM_LENGTH 131071


/********************************************************************************
*******************************
*
* Чтение "len" байт в массив "data" начиная с адреса "offset" EEPROM.
* Функция возвращает результат выполнения чтения из EEPROM AT24C1024
*
********************************************************************************
*******************************/
alt_8 eeprom_read(alt_u32 eeprom_offset, alt_u32 len, alt_u8* data);


/********************************************************************************
*******************************
*
* Запись "len" байт начиная с адреса "offset" EEPROM из массива "data".
* Функция возвращает результат выполнения записи в EEPROM AT24C1024
*
********************************************************************************
*******************************/
alt_8 eeprom_write(alt_u32 eeprom_offset, alt_u32 len, alt_u8* data);


#endif /* EEPROM_H_ */

В свою очередь, у Вас появится желание задать вопрос автору i2c_master__ComMod_.doc - может ли он создать такой контроллер связи с EEPROM, который будет отображать содержимое EEPROM на область памяти процессора Nios II.
Скорее всего ответ автора контроллера связи с EEPROM будет в духе: "Идите, идите, я не подаю по понедельникам". Но попробовать можно biggrin.gif


Сел разбираться. Насколько я понимаю, функция eeprom_write должна записывать данные из массива data в EEPROM. Открыл EEPROM.c и вижу, что функция eeprom_write вызывает I2C_start_io, которая выдает в регистр REG_COMMAND_WRITE команду начала обмена, адрес устройства, бит P0 (так и не понял его назначение) и признак записи/чтения.
Если я правильно понимаю, мне нужно при помощи команд IOWR и IORD записывать/читать по содержащемуся в REG_COMMAND_WRITE адресу информацию из data. А разряды REG_STATUS_READ, помеченные как информация для чтения, должны помещать в себе читаемую информацию.
Go to the top of the page
 
+Quote Post
Konst_777
сообщение Mar 5 2012, 20:52
Сообщение #355


Знающий
****

Группа: Свой
Сообщений: 549
Регистрация: 1-06-05
Пользователь №: 5 644



Цитата(Pashtet791 @ Mar 5 2012, 11:22) *
...Открыл EEPROM.c и вижу, что функция eeprom_write вызывает I2C_start_io...

Это просто пример использования регистра REG_COMMAND_WRITE. В I2C.h я использую макрос с именем COMOD_WR_CONTROL. Действительно, правильнее использовать для этого макроса имя REG_COMMAND_WRITE.
Цитата(Pashtet791 @ Mar 5 2012, 11:22) *
... бит P0 (так и не понял его назначение)...

Нужно изучить 24c1024.pdf. Емкость EEPROM AT24C1024 составляет 128 Кбайт. То есть, чтобы адресовать байт используется 17-разрядный адрес. Младшие 16 разрядов выдаются двумя байтами после Device Address (см. рис. 2, 3, 5, 6). А старший разряд адреса, который не поместился в эти два байта, выдается в разряде P0 байта Device Address.

Цитата(Pashtet791 @ Mar 5 2012, 11:22) *
Если я правильно понимаю...

По-моему, Вам нужно попросить автора i2c_master__ComMod_.doc упростить жизнь и себе и Вам. На самом деле нет никакого выигрыша от применения этого контроллера связи с EEPROM. Ни по времени обращения к EEPROM ни по размеру программы процессора Nios II. Для работы с EEPROM необходимо управлять всего двумя сигналами SCL и SDA. Интерфейс FPGA с EEPROM должен содержать два регистра на чтение и запись. Они так и должны называться SCL и SDA. Через младшие разряды этих регистров процессор Nios II будет устанавливать и считывать состояние линий SCL и SDA. Значение старших разрядов этих регистров должно игнорироваться при записи и устанавливаться в ноль при считывании.
Таким образом, автор i2c_master__ComMod_.doc должен добавить к SOPC два компонента PIO и закончить разработку "контроллера связи с EEPROM" в течение 5 минут. А Вы потратите пару дней на изучение 24c1024.pdf, написание и отладку программы.
Go to the top of the page
 
+Quote Post
Orochi
сообщение Mar 8 2012, 03:44
Сообщение #356


Участник
*

Группа: Участник
Сообщений: 46
Регистрация: 6-07-11
Из: Кострома
Пользователь №: 66 096



Прошу помочь с программированием EPCS4, уже 4-й день мучаюсь но не могу запустить из неё nios II.
Сразу скажу что форум перерыл весь, за 4 дня испробовал всё что тут нашёл, но ничего не работает.

Скриншоты ключевых моментов прилагаются.

Содержание файла nios2-flash-override.txt, не уверент что тут всё правильно написано поправте если что:
CODE

[EPCS-FF] # EPCS4N
sector_size = 65536
sector_count = 8


таким скриптом пользовался:
CODE

#!/bin/sh
sof2flash --input=EPCS4_SRAM.sof --output=epcs.flash --epcs --verbose
elf2flash --input=software/soft/soft.elf --output=soft.flash --epcs --after=epcs.flash --verbose
nios2-elf-objcopy -I srec -O ihex soft.flash soft.hex


Что бы я не делал через nios2-flash-programmer заливаю ли я прошивку или что то подобное, флешка стирается (erase) но прогресс не уходит дальше 0% и имеем то что видим на terminal_bad.gif(прикрепл.).

Пробовал создавать по методике с сайта naliwator.narod.ru там где elf файл добавляли к sof конвертировали в hex и затем конвертером в jic.
Аппаратная часть работает NIOS II так и не смог оживить.
Вектор сброса указал на контроллер EPCS. (eclipse_BSP_editor.gif)

Что дальше делать не знаю, подскажите кто чем может, уже даже не знаю за что и хвататься, что делаю не так?

Сообщение отредактировал Orochi - Mar 8 2012, 03:46
Эскизы прикрепленных изображений
Прикрепленное изображение
Прикрепленное изображение
Прикрепленное изображение
Прикрепленное изображение


Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
naliwator
сообщение Mar 9 2012, 10:54
Сообщение #357


Частый гость
**

Группа: Свой
Сообщений: 146
Регистрация: 11-08-08
Из: Kolpino
Пользователь №: 39 551



Orochi, пробовали на залитой системе активизировать проект, загрузив через Eclipse elf файл? В какой версии Quartus II работаете? Пробовали ли прочитать ончип память после старта процессора? Пробовали ли вы не в Qsys, а в Sopc Builder создать подобный проект?


--------------------
Go to the top of the page
 
+Quote Post
Orochi
сообщение Mar 9 2012, 12:39
Сообщение #358


Участник
*

Группа: Участник
Сообщений: 46
Регистрация: 6-07-11
Из: Кострома
Пользователь №: 66 096



В итоге, после 5 дней "напряжённого труда" удалил проект и создал его заново. И как не странно Flash Programmer с первого раза всё прошил на ура без единой ошибки. А если бы у меня был проект не "тестовый" ... даже страшно думать ... время жалко)

PS: Quartus 11.1 sp2 32-bit/Windows 7 - 32-bit

Сообщение отредактировал Orochi - Mar 9 2012, 12:40
Go to the top of the page
 
+Quote Post
StripSmile
сообщение Mar 16 2012, 13:55
Сообщение #359





Группа: Новичок
Сообщений: 1
Регистрация: 16-03-12
Пользователь №: 70 841



Доброго времери суток, товарищи программеры sm.gif
Подскажите такую штуку: вставляю свои библиотеки в проект (виртуальный каталог с системы), но не все файлы из этих библиотек я использую. Проектов много, и в одних нужно использовать одни файлы, в других другие, но библиотеки общие. Так вот, когда я делаю на ненужных файлах "Exclude from build..." - файл помечается другим значком (типа стал игнорируемым), но при компиляции он остаётся в Makefile и соответственно вкомпиливается и выдаёт ошибки (ошибки связанные с наличием перифирии, которой нет в этом проекте, но используется в других проектах). Если создать несколько файлов в корне проекта - то вроде как функция исколючения файлов с компиляции работает нормально, но именно на виртуальных каталогах непонятный глюк. Подскажите пожалуйста, может я не правильно каталог библиотек добавил, или же нужно как-то по-другому осуществлять менеджмент библиотек?
В примере я исключил FRAM.C но видно, что в Makefile он остался.
ЗЫЖ В Nios II 11й версии уже всё отлично работает, и хорошо всё сделано, НО сам квартус очень глючный,а SOPC вообще неизвестно как компилит sad.gif

Сообщение отредактировал StripSmile - Mar 16 2012, 13:57
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
_Desh_
сообщение Apr 10 2012, 20:55
Сообщение #360


Участник
*

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



Возникла такая проблема. Самый простой пример с прерываниями не работает - count_binary (который идет в комплекте с квартусом и ниосом). Подобные обработчики прерываний раньше уже писал на версии 9.1 - все работает. При переносе проекта на новый квартус 11.1 - ни в какую. В среде NIOS II SBT при компиляции выводит сообщение об ошибке - undefined reference to alt_ic_irq_register (использую vectored interrupt controller). Т.е. не может зарегистрировать обработчик прерывания. Заголовочный файл "sys\alt_irq.h" добавлен. Все по идее должен видеть - но результат нулевой. Не работает также функция alt_irq_register.

На форуме альтеровском смотрел - там были подобные вопросы, но никто толком так ничего и не ответил. Кто что подскажет?

Сообщение отредактировал _Desh_ - Apr 10 2012, 20:59
Go to the top of the page
 
+Quote Post

43 страниц V  « < 22 23 24 25 26 > » 
Reply to this topicStart new topic
5 чел. читают эту тему (гостей: 5, скрытых пользователей: 0)
Пользователей: 0

 


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


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