Jump to content

    

Digi

Свой
  • Content Count

    180
  • Joined

  • Last visited

Community Reputation

0 Обычный

About Digi

  • Rank
    Частый гость
  • Birthday 07/10/1978

Контакты

  • Сайт
    Array
  • ICQ
    Array

Recent Profile Visitors

2926 profile views
  1. Пока проблему решил путём аппаратной доработки железки. Кинул внешние проводники, высверлив старые.
  2. У меня как раз десятка, и там такого не нашел. И этого в логах тоже не нашёл... По идее этот параметр должен был быть применён. Ещё поковыряюсь, как чего наковыряю - сообщу. :)
  3. В каком описании это нашли ? Мне как раз и надо чтобы было NO_DC_GAIN, а Transciever Toolkit показывает значение по умолчанию 4.
  4. Немного накосячили с топологией шины PCIe. При помощи настройки параметров трансивера из Transciever Toolkit удалось добиться нормальной работы устройства, но как прописать теперь эти значения в сам трансивер, что бы после загрузки они были такими ? Попробовал а Assigment editor прописать set_instance_assignment -name XCVR_C10_RX_EQ_DC_GAIN_TRIM NO_DC_GAIN -to PCIE_RX , но изменений не произошло. Плис: Cyclone 10GX, Корка: pcie_a10_hip
  5. Я планировал что команды будут передаваться по одному BAR без DMA, а блок данных, объёмом несколько Мб по другому BAR и через DMA. Алгоритм примерно такой: 1 Установили частоту и режим работы. 2 Отправили СТАРТ 3 4 Дождались готовности новых 5 Считали данные по ДМА 6 Goto 2
  6. Команды команды произвольные, медленные. Типа: установки частоты, режима работы, итд... Сейчас буду пробовать что то изобразить )))
  7. Делаем устройство которое должно работать под управлением ОС LINUX и нужно поблочно передавать данные из/в устройство (используя DMA) и нужно передавать управляющие команды. По сути это плата аналогового ввода вывода данных. По реализации я себе это представляю так: обмен по DMA будет осуществляться с внешней DDR3 памятью подключенной к ПЛИС. Для работы с управляющими командами планировал выделить что то вроде регистровой памяти. Плис: Cyclone 10 GX. Кто нибудь таким занимался ? Посоветуйте как лучше это реализовать. PS: Если есть, кто сможет такое быстро реализовать, а ещё лучше если вы будете из Воронежа, то пишите. Рассмотрим различные варианты сотрудничества в плане разработки прошивок под FPGA.
  8. Срочно нужна PE42551 или PE42553 1 штука. Могу забратт в Москве или Воронеже.
  9. Вопрос снят. Объявил s_GSINIT как внешнюю и всё заработало. Уж не знаю, почему у меня её пришлось объявлять, но во всех других примерах дополнительного объявления не требовалось. .globl s_GSINIT __standard_interrupt_vector:: __reset_vector:: ljmp s_GSINIT
  10. Пытаюсь скомпилировать программу в SDCC для FX2 контроллера (MSC51), но столкнулся с проблемой. При подключении файла vectors.asm ассемблер не может найти функцию s_GSINIT. SDCC 4.0.0 До этого с такой связкой ни разу не работал. Буду рад если поделитесь примером проекта для связки Eclipse и SDCC. Возможно что что то не так настроил. Компилирую из под ECLIPSE , для asm файлов используется sdas8051 Ошибка такая: Building file: ../src/asm/vectors.asm Invoking: SDCC Assembler sdas8051 -l -o "src/asm/vectors.rel" "../src/asm/vectors.asm" removing src/asm/vectors.rel ../src/asm/vectors.asm:43: Error: <u> undefined symbol encountered during assembly make: *** [src/asm/vectors.rel] Error 2 .module vectors ;;; ---------------------------------------------------------------- ;;; standard FX2 interrupt vectors ;;; ---------------------------------------------------------------- .area CSEG (CODE) .area GSINIT (CODE) .area CSEG (CODE) __standard_interrupt_vector:: __reset_vector:: ljmp s_GSINIT ;; 13 8-byte entries. We point them all at __isr_nop ljmp __isr_nop ; 3 bytes .ds 5 ; + 5 = 8 bytes for vector slot ljmp __isr_nop .ds 5 ljmp __isr_nop .ds 5 ljmp __isr_nop .ds 5 ljmp __isr_nop .ds 5 ljmp __isr_nop .ds 5 ljmp __isr_nop .ds 5 ljmp __isr_nop .ds 5 ljmp __isr_nop .ds 5 ljmp __isr_nop .ds 5 ljmp __isr_nop .ds 5 ljmp __isr_nop .ds 5 ljmp __isr_nop .ds 5 __isr_nop:: reti ;;; ---------------------------------------------------------------- ;;; the FIFO/GPIF autovector. 14 4-byte entries. ;;; must start on a 128 byte boundary. ;;; ---------------------------------------------------------------- . = __reset_vector + 0x0080 __fifo_gpif_autovector:: ljmp __isr_nop nop
  11. Подскажите диагностический и сервисный код на прибор Aeroflex 2948B. Надеюсь в меню диагностики обнаружить ручное управление блоками. Не могу понять, проблема в измерителе или аттенюаторе. Было с ним несколько проблем, явно видно что узел неисправен. Ремонтирую, всё работает, потом через некоторое время опять почти тоже самое. Сейчас проблема такая: При измерении мощности в широкой полосе показания правильные, в узкой - на 10 дб больше. Последний раз уже ради пробы поставил проходной аттенюатор на блок приёмника на 10 дб. Какое-то время всё работало правильно, через несколько дней, опять +10 дб.
  12. Вопрос так был сформулирован потому, что я многого не знал. Сейчас для себя нашёл удобный способ работы. Пишу проги сразу на удалённой машине с использованием VisualStudio code и расширения Remote SSH. VSCode кэширует файлы на локальной машине и при медленном и нестабильном инете работать достаточно комфортно. При необходимости скачиваю оттуда файлы по SCP при помощи SmartTTY. GDB пока не настроил, нет необходимости.
  13. Очередной косяк найден. Оказалось, что переменные объявлялись несколько раз, из-за этого их адреса перекрывались.
  14. Попробую упростить проект и перешлю. Но описание структуры и обращение к ней у меня правильно реализовано ? Или я что то не так понял и делаю недопустимые действия ?
  15. Причину падения нашёл. Её вызывает эта строчка st_stat_data[0].peak_levels[9] = 155; При её вызове перезаписывается переменная volatile uint16_t period_ms_cdg5; Разве я делаю неправильное обращение ? При выполнении записи пишет по адресу 0x8001d7f4 хотя, судя по регистрам, должен по другому адресу записать. Описана структура вот так: volatile typedef struct _station_status { double mean_comp_shift; uint32_t mean_levels[23]; uint32_t peak_levels[23]; uint32_t noise_levels[23]; uint8_t good_comps[23]; uint32_t comp_edges[23*2]; uint8_t n_good; uint8_t status_synhro[3]; //1й бит - цикл найден, 2й - точная подстройка выполнена, 3й - подстройка ои выполнена //float mean_phases[23]; } station_status; station_status st_stat_data[4]; map файл .scommon 0x000000008001d7e8 0x2c ./control.o 0x000000008001d7e8 alive_skip 0x000000008001d7ec portAnsCalibr 0x000000008001d7f0 prev_xtime 0x000000008001d7f4 period_ms_cdg5 0x000000008001d7f6 portAnsAutoFreqOI 0x000000008001d7f8 xtick_cntr 0x000000008001d7fc curr_time_msec 0x000000008001d800 addrDSTAnsAutoFreqOI 0x000000008001d804 xtime .... *(COMMON) COMMON 0x000000008001d940 0x7d0 ./_main.o 0x000000008001d940 st_stat_data 0x000000008001e100 head_stat_data COMMON 0x000000008001e110 0x80000 ./dprint.o 0x000000008001e110 Data COMMON 0x000000008009e110 0x0 ./hardware.o COMMON 0x000000008009e110 0x145478 ./reciever.o 0x000000008009e110 re_bank2 Дизассемблер: 999 st_stat_data[0].peak_levels[9] = 155; 0x8000fd0c: lui v0,0x8002 0x8000fd10: addiu v0,v0,-10600 0x8000fd14: li v1,155 0x8000fd18: sw v1,136(v0) v0 = 0x8001d698 v1 = 155 Вот ещё добавил запись двух переменных, пишет в одно и тоже место. В симуляторе эффект тот же. 366 period_ms_cdg5 =154; 0x800012ac: lui v0,0x8002 0x800012b0: li v1,154 0x800012b4: sh v1,-10440(v0) 367 st_stat_data[0].peak_levels[9] = 155; 0x800012b8: lui v0,0x8002 0x800012bc: addiu v0,v0,-10576 0x800012c0: li v1,155 0x800012c4: sw v1,136(v0)