Перейти к содержанию
    

xxxmatrixxx

Участник
  • Постов

    140
  • Зарегистрирован

  • Посещение

Весь контент xxxmatrixxx


  1. Здравствуйте, уважаемые форумчане всегда использовал IP Core Triple-Speed Ethernet в своих разработках, и не задумывался о том, что данная кора зашифрована, пока не полез в тот проект, что сгенерировал QSYS есть ли возможность отрыть код для данной коры, т.к. это крайне необходимо для сдачи заказчику, либо может порекомендуете IP Core с открытым кодом Ethernet ? спасибо, буду благодарен любой помощи
  2. залоченный, но мне пока хватает и этого
  3. патченный помог прошить в J-Link, спасибо
  4. нет, к сожалению только одна плата ST-LINK/V2 (mini) я хотел, используя ST Link Upgrade перепрошить, или так невозможно сделать? по форумам я только нашел бинарные файлы, которые скорее всего шьются в программатор через другой программатор, или я не прав? а какую? я в сети нашел 4.3.0.0, но она не позволила мне сделать выбор, какую именно версию ставить, только STM32+STM8 а вот патченную Reflash не смог найти, не скините ссылку?
  5. Здравствуйте, уважаемые форумчане купил в магазине вот такую плату: ST-LINK/V2 (mini), Внутрисхемный программатор/отладчик JTAG для мк STM8 и STM32(https://www.chipdip.ru/product/st-link-v2-mini) сейчас хочу перепрошить ее в JLINK через STLinkReflash, скачанный с сайта Segger.com у меня стоит на программаторе прошивка STM32+STM8 STLinkReflash пишет, что не поддерживает данный тип, на форумах я прочитал, что необходимо перепрошить ST LINK прошивкой, где поддерживается только STM32, тогда JLINK подхватит ее но я так и не нашел способа, как это сделать, через ST LINK Upgrade возможно только перепрошить на более новую версию STM32+STM8, но никак не выбрать только STM32 сталкивался ли кто-нибудь с такой проблемой и как ее возможно решить? спасибо, буду рад любой помощи
  6. я решил проблему с отображением SD карты на USB MASS STORAGE следующим образом: 1. неверно были указаны количество и размер блоков 2. поставил цикл ожидания после того, как запустил DMA в файле usbd_storage_if.c должно быть следующее: int8_t STORAGE_GetCapacity_FS(uint8_t lun, uint32_t *block_num, uint16_t *block_size) { /* USER CODE BEGIN 3 */ //printf("\r STORAGE_GetCapacity_FS \n"); *block_num = hsd1.SdCard.LogBlockNbr; *block_size = hsd1.SdCard.LogBlockSize; //printf("\r block_num = %d, block_size = %d \n",*block_num,*block_size); return (USBD_OK); /* USER CODE END 3 */ } int8_t STORAGE_Read_FS(uint8_t lun, uint8_t *buf, uint32_t blk_addr, uint16_t blk_len) { /* USER CODE BEGIN 6 */ // printf("\r Start STORAGE_Read_FS \n"); uint8_t status = BSP_SD_ReadBlocks_DMA((uint32_t*)buf, (uint32_t)blk_addr, (uint32_t) blk_len); //printf("\r End STORAGE_Read_FS %d\n",status); if(status != MSD_OK) return (USBD_FAIL); /* Wait until SD card is ready to use for new operation */ while (BSP_SD_GetCardState() != SD_TRANSFER_OK){} return (USBD_OK); /* USER CODE END 6 */ } int8_t STORAGE_Write_FS(uint8_t lun, uint8_t *buf, uint32_t blk_addr, uint16_t blk_len) { /* USER CODE BEGIN 7 */ //printf("\r Start STORAGE_Write_FS \n"); uint8_t status = BSP_SD_WriteBlocks_DMA((uint32_t*)buf, blk_addr, (uint32_t) blk_len); //printf("\r End STORAGE_Write_FS %d\n",status); if(status != MSD_OK) return (USBD_FAIL); /* Wait until SD card is ready to use for new operation */ while (BSP_SD_GetCardState() != SD_TRANSFER_OK){} return (USBD_OK); /* USER CODE END 7 */ } все заработало, надеюсь, кому-нибудь эта информация пригодится у меня остался один нерешенный вопрос: 2. если раскоментировать код в функции STORAGE_Init_FS, а именно: int8_t STORAGE_Init_FS(uint8_t lun) { /* USER CODE BEGIN 2 */ /* uint8_t res; //printf("\r STORAGE_Init_FS \n"); res = BSP_SD_Init(); if( res == MSD_ERROR_SD_NOT_PRESENT) { printf("\rSD Card don't set\n"); return USBD_FAIL; } else if(res == MSD_ERROR){ printf("\rSD Card is set, Init SD Card ERROR\n"); return USBD_FAIL; } printf("\rSD Card is set, Init SD Card OK\n");*/ return (USBD_OK); /* USER CODE END 2 */ } то зывисает в BSP_SD_Init(), где вызывается задержка HAL_DELAY(2U), которая построена на подсчете тиков от системного клока, причем при вызове этой функции в функции main(файл main.c) такого не происходит функция BSP_SD_Init() генерируется CubeMX, задержка HAL_DELAY(2U) находится в ней, я бы очень не хотел корректировать эту функцию, т.к. при пересборке надо будет туда всегда лазить системный таймер у меня настроен вот таким образом(см приложение) 2.bmp 1.bmp
  7. Всем доброго дня!!! Я использую в своих разработках плату NUCLEO-L496ZG, мне необходимо реализовать задание с ЦАП напряжения, считывания его с АЦП, а так же подключение SD карточки, считывания и запись файла на нее, а так же отображение SD карты через usb устройство как USB MASS STORAGE Генерацию проекта я использовал CUBE MX 5.3.0, версия репозитория STM32Cube_FW_L4_V1.14.0 я начал с того, чтобы монтировать карту памяти, читать и записывать файлы - увидел, что не приходят прерывания по DMA на передачу при записи в файл - помогла очень вот эта тема https://community.st.com/s/feed/0D50X00009XkVtKSAV в итоге монтируется SD карточка и происходит запись и чтение файлов перешел к отображению SD карты на ПК как съемного носителя через USB - здесь не работает, верно определяется размер карточки и количество секторов на стороне ПК, но вот выдается ошибка, что диск поврежден и требуется форматирование, при нажатии на форматирование Windows выдает ошибку, что форматирование закончилось ошибкой, при этом по логу от процессора STM32L496 через терминал я вижу, что идет обращение к функциям чтении(STORAGE_Read_FS) и записи(STORAGE_Write_FS) устройства У меня следующие вопросы: 1. как заставить отображаться верно SD карту как USB MASS STORAGE??? 2. если раскоментировать код в функции STORAGE_Init_FS, а именно: res = BSP_SD_Init(); if( res == MSD_ERROR_SD_NOT_PRESENT) { printf("\rSD Card don't set\n"); return USBD_FAIL; } else if(res == MSD_ERROR){ printf("\rSD Card is set, Init SD Card ERROR\n"); return USBD_FAIL; } printf("\rSD Card is set, Init SD Card OK\n"); то зывисает в BSP_SD_Init(), где вызывается задержка HAL_DELAY(2U), которая построена на подсчете тиков от системного клока, причем при вызове этой функции в функции main(файл main.c) такого не происходит как это исправить, т.к. мне необходимо переставлять карточки во время работы, а значит должна обновляться информация о них, а это делается через BSP_SD_Init()??? 3. если я подмонтировал SD карту к процессору через f_mount, при этом подключил SD карту как USB MASS STORAGE к компьютеру, при этом я пишу в один файл через процессор STM32 через f_write, но на стороне компютера я данный файл не трогаю, а просматриваю содержимое других файлов корректно ли будет отображение файлов SD карты на компьютере, а так же работа с теми файлами, которые я не использую на данный момент через процессор??? либо перед тем как подключаться к компьютеру SD карту (отображение SD карты через USB на компьютер), мне необходимо отмонтировать SD карту от STM32, и только после этого разрешать работать с SD картой Проект прикладываю, делал все в Eclipse(https://yadi.sk/d/Dzue0E79O_m_Rw) Буду очень признателен за любую помощь!!! спасибо
  8. у меня такая же ошибка выскакивает, точно ли во флэшке дело? а как в итоге решили проблему?
  9. Установил Altium Designer Beta 19.1.2 Build 11(https://rutracker.org/forum/viewtopic.php?t=4118530), проблема с копированием исчезла всем спасибо за помощь
  10. меня, честно, очень удивляет такой подход, я разрабатывал электрику в Allegro 16.5 и MentorGraphics vx 2.1 до Альтиума, в Аллегро выше 16.5 нет совместимости версий, у Ментора вообще нет совместимости между версиями, т.е. даже vx 1.1 несовместима с 1.2, а тут 3 версии одного пакета хранить, чтобы обойти косяки разработчиков - мне очень этим Ментор не понравился, т.к. сырой ужасно продукт, приходилось самому ручками писать скрипты, чтобы перечень элементов создавать, в конфигурационные файлы проекта лазить и править там ручками, чтобы Ментор подхватил изменения верно, короче, очень много заморочек было, которые надо было дорабатывать в ручном режиме за разработчиками Альтиум очень красиво выглядит, просто и лаконично, я думал, что здесь таких проблем, как с Ментором, у меня не будет, но вот сразу наткнулся на нее
  11. я устанавливал до этого на этот же комп Altium 17.1.9 версии 536, был тот же косяк
  12. Здравствуйте, уважаемые форумчане в связи с тем, что мое предприятие решило перейти на САПР Altium при разработке электрических схем, пришлось осваивать данный продукт и я столкнулся со следующей проблемой: 1. я установил Altium 17.1.9 версии 592(вот отсюда https://rutracker.net/forum/viewtopic.php?t=5478817), ОС Win10 X64 2. при любом копировании(выделяем, щелкаем правой кнопкой, выбираем Copy) компонентов (библиотечных, либо нарисованных собственноручно, т.е. например линии) происходит сразу зависание программы Altium - помогает только убивание программы через Диспетчер задач, но при повторном выполнении операции копировании происходит тоже самое зависание 3. на другом компе стоит та же версия Altium, и все копируется и вставляется, не виснет
  13. прочитал документацию по тому, как делаются последовательности спасибо большое я нашел файл /build/tmp/deploy/images/plnx_arm/fitimage.its в котором указаны данные последовательности, но он является генерируемым при при сборке самого проекта petalinux( petalinux-build) где я могу найти исходник, т.е. из чего он генится, для данного файла при сборке под petalinux, либо сгенерированный файл fitimage.its надо после команды petalinux-build изменять, как мне надо, и пересобирать через mkimage -f fitimage.its fit.itb? по документации мне необходимо ручками прописать во флэшку файл fit.itb, можно ли это сделать в автоматическом режиме при сборке самого проекта petalinux?
  14. Все делается из Linux, т.е. я передаю файл rootfs по Ethernet на плату Zedboard, где крутится TCP сервер, принимаю данные, записываю их в файл, сохраняю файл, и затем записываю его в соответствующий раздел mtd (пока "spare"), вот такой командой: flashcp -v /home/update.txt "/dev/mtd0" я пока не могу понять: 1. как соответствующий раздел соотносится с rootfs при загрузке Линукс, т.е. как настроить petalinux, чтобы файловая система находилась именно в этом разделе mtd 2. как из линукса изменить bootenv(я пока только смог это сделать через fw_setenv после настроек и пересборки, описанной выше), чтобы изменить место с которого грузить файловую систему, при этом оставив резервной старую файловую систему
  15. спасибо большое за ответ не могли бы скинуть ссылки на документацию, где можно об этом прочитать сейчас у меня стоит первостепенная задача: 1. по Ethernet грузить новый образ RootFS c измененной программой 2. загрузить его в новый раздел QSPI Flash(например, spare) 3. затем изменить переменную окружения(пока я так же не понимаю, какую переменную там надо менять), чтобы подхватывался RootFS уже с раздела "spare"
  16. Здравствуйте, уважаемые форумчане Возникла потребность обновлять образ FPGA и программ на собранном Linux под процессор Zync Если я все понимаю, то обновление программы должно происходить так: 1. загрузить новую прошивку в соответствующий раздел 2. изменить переменную окружающей среды(bootenv), чтобы она грузила RootFS с нового раздела 3. перезагрузить модуль Как переключаться между прошивками FPGA пока не знаю, а именно, что менять в bootenv для этого Для конфигурации и получения соответствующих образов использовал Petalinux 2017.4 настроил Petalinux через команду petalinux-config следующим образом: 1. Subsystem AUTO Hardware Settings ->Flash Settings выделил следуюшие разделы mtd: dev: size erasesize name mtd0: 00500000 00010000 "boot" mtd1: 00020000 00010000 "bootenv" mtd2: 00a80000 00010000 "kernel" mtd3: 00a80000 00010000 "jffs2" mtd4: 00010000 00010000 "spare" -> Advanced bootable images storage Settings -> boot image settings - image storage media = primary flash - flash partition name = boot - image name = BOOT.BIN -> u-boot env partition settings - image storage media = primary flash - flash partition name = bootenv -> kernel image settings - image storage media = primary flash - flash partition name = kernel - image name = image.ub -> jffs2 rootfs image settings - image storage media = primary flash - flash partition name = jffs2 - image name = rootfs.jffs2 -> dtb image settings - image storage media = from boot image - image name = system.dtb 2. Image Packaging Configuration -> Root filesystem type = JFFS2 -> jffs2 erase block size = 64 Kib -> name for bootable kernel image = image.ub после этого набрал команду для сборки petalinux-build cгенерировал BOOT.BIN для загрузки в QSPI FLASH командой: petalinux-package --boot --fsbl /opt/pkg/petalinux/mil_eth/images/linux/zynq_fsbl.elf --fpga /opt/pkg/petalinux/mil_eth/images/linux/ethernet_1553ud2.bit --u-boot --kernel --force сгенерировался файл BOOT.BIN, который содержит образ ОС Linux, но он явно не содержит RootFS, т.к. ее надо загружать отдельно прошивал QSPI FLASH я через утилитку Program Flash Memory, которая входит в состав Vivado SDK сейчас выдает ошибку загрузки файловой системы при загрузке Линукса вопрос 1: как загрузить файл rootfs.jffs2 в QSPI FLASH? я загружал образы в QSPI FLASH всегда через утилитку Program Flash Memory, возможно ли средствами petalinux все необходимое загрузить? какое смещение необходимо задать в Program Flash Memory, чтобы попасть в mtd3 "jffs2", я так понимаю, что именно в этот раздел я должен скопировать файл rootfs.jffs2??? Загружаю образ Линукса через утилитку Program Flash Memory(файл BOOT.BIN) затем я файл rootfs.jffs2 перевожу в формат MCS через утилитку Create Boot Image, посчитал смещение mtd3 относительно начала, вышло 0x500000+0x20000+0xA80000=0xFA0000, данное смещение вбиваю в поле Offset в утилитке Program Flash Memory и прошиваю полученный файл JFFS2.MCS в QSPI FLASHПри старте модуля ZedBord при загрузке Linux выдает ошибку загрузки файловой системы 0 SF: Detected s25fl256s_64k with page size 256 Bytes, erase size 64 KiB, total 32 MiB device 0 offset 0x520000, size 0xa80000 SF: 11010048 bytes @ 0x520000 Read: OK ## Loading kernel from FIT Image at 10000000 ... Using 'conf@2' configuration Verifying Hash Integrity ... OK Trying 'kernel@0' kernel subimage Description: Linux Kernel Type: Kernel Image Compression: uncompressed Data Start: 0x100000d4 Data Size: 3747256 Bytes = 3.6 MiB Architecture: ARM OS: Linux Load Address: 0x00008000 Entry Point: 0x00008000 Hash algo: sha1 Hash value: 5226f85855534a82f6f18fb528855ebb37ed6032 Verifying Hash Integrity ... sha1+ OK ## Loading fdt from FIT Image at 10000000 ... Using 'conf@2' configuration Trying 'fdt@0' fdt subimage Description: Flattened Device Tree blob Type: Flat Device Tree Compression: uncompressed Data Start: 0x10392f80 Data Size: 14184 Bytes = 13.9 KiB Architecture: ARM Hash algo: sha1 Hash value: 9c6769fe771579f8dafa6c861d8c6ab2879340e3 Verifying Hash Integrity ... sha1+ OK Booting using the fdt blob at 0x10392f80 Loading Kernel Image ... OK Loading Device Tree to 07ff9000, end 07fff767 ... OK Starting kernel ... Uncompressing Linux... done, booting the kernel. Booting Linux on physical CPU 0x0 Linux version 4.9.0-xilinx-v2017.4 (sokolovd@ubuntu) (gcc version 6.2.1 20161016 (Linaro GCC 6.2-2016.11) ) #1 SMP PREEMPT Tue Jan 22 12:14:17 MSK 2019 CPU: ARMv7 Processor [413fc090] revision 0 (ARMv7), cr=18c5387d CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache OF: fdt:Machine model: xlnx,zynq-7000 bootconsole [earlycon0] enabled cma: Reserved 16 MiB at 0x1f000000 Memory policy: Data cache writealloc percpu: Embedded 14 pages/cpu @debca000 s25932 r8192 d23220 u57344 Built 1 zonelists in Zone order, mobility grouping on. Total pages: 130048 Kernel command line: console=ttyPS0,115200 earlyprintk root=mtd:jffs2 rw rootfstype=jffs2 PID hash table entries: 2048 (order: 1, 8192 bytes) Dentry cache hash table entries: 65536 (order: 6, 262144 bytes) Inode-cache hash table entries: 32768 (order: 5, 131072 bytes) Memory: 493036K/524288K available (6144K kernel code, 200K rwdata, 1460K rodata, 1024K init, 229K bss, 14868K reserved, 16384K cma-reserved, 0K highmem) Virtual kernel memory layout: vector : 0xffff0000 - 0xffff1000 ( 4 kB) fixmap : 0xffc00000 - 0xfff00000 (3072 kB) vmalloc : 0xe0800000 - 0xff800000 ( 496 MB) lowmem : 0xc0000000 - 0xe0000000 ( 512 MB) pkmap : 0xbfe00000 - 0xc0000000 ( 2 MB) modules : 0xbf000000 - 0xbfe00000 ( 14 MB) .text : 0xc0008000 - 0xc0700000 (7136 kB) .init : 0xc0900000 - 0xc0a00000 (1024 kB) .data : 0xc0a00000 - 0xc0a32000 ( 200 kB) .bss : 0xc0a32000 - 0xc0a6b698 ( 230 kB) Preemptible hierarchical RCU implementation. Build-time adjustment of leaf fanout to 32. RCU restricting CPUs from NR_CPUS=4 to nr_cpu_ids=2. RCU: Adjusting geometry for rcu_fanout_leaf=32, nr_cpu_ids=2 NR_IRQS:16 nr_irqs:16 16 efuse mapped to e0800000 slcr mapped to e0802000 L2C: platform modifies aux control register: 0x72360000 -> 0x72760000 L2C: DT/platform modifies aux control register: 0x72360000 -> 0x72760000 L2C-310 erratum 769419 enabled L2C-310 enabling early BRESP for Cortex-A9 L2C-310 full line of zeros enabled for Cortex-A9 L2C-310 ID prefetch enabled, offset 1 lines L2C-310 dynamic clock gating enabled, standby mode enabled L2C-310 cache controller enabled, 8 ways, 512 kB L2C-310: CACHE_ID 0x410000c8, AUX_CTRL 0x76760001 zynq_clock_init: clkc starts at e0802100 Zynq clock init sched_clock: 64 bits at 333MHz, resolution 3ns, wraps every 4398046511103ns clocksource: arm_global_timer: mask: 0xffffffffffffffff max_cycles: 0x4ce07af025, max_idle_ns: 440795209040 ns Switching to timer-based delay loop, resolution 3ns clocksource: ttc_clocksource: mask: 0xffff max_cycles: 0xffff, max_idle_ns: 537538477 ns timer #0 at e080a000, irq=17 Console: colour dummy device 80x30 Calibrating delay loop (skipped), value calculated using timer frequency.. 666.66 BogoMIPS (lpj=3333333) pid_max: default: 32768 minimum: 301 Mount-cache hash table entries: 1024 (order: 0, 4096 bytes) Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes) CPU: Testing write buffer coherency: ok CPU0: thread -1, cpu 0, socket 0, mpidr 80000000 Setting up static identity map for 0x100000 - 0x100058 CPU1: thread -1, cpu 1, socket 0, mpidr 80000001 Brought up 2 CPUs SMP: Total of 2 processors activated (1333.33 BogoMIPS). CPU: All CPU(s) started in SVC mode. devtmpfs: initialized VFP support v0.3: implementor 41 architecture 3 part 30 variant 9 rev 4 clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns pinctrl core: initialized pinctrl subsystem NET: Registered protocol family 16 DMA: preallocated 256 KiB pool for atomic coherent allocations cpuidle: using governor menu hw-breakpoint: found 5 (+1 reserved) breakpoint and 1 watchpoint registers. hw-breakpoint: maximum watchpoint size is 4 bytes. zynq-ocm f800c000.ocmc: ZYNQ OCM pool: 256 KiB @ 0xe0840000 zynq-pinctrl 700.pinctrl: zynq pinctrl initialized e0001000.serial: ttyPS0 at MMIO 0xe0001000 (irq = 25, base_baud = 3125000) is a xuartps `▒▒׋▒Led console [ttyPS0] enabled bootconsole [earlycon0] disabled bootconsole [earlycon0] disabled vgaarb: loaded SCSI subsystem initialized usbcore: registered new interface driver usbfs usbcore: registered new interface driver hub usbcore: registered new device driver usb media: Linux media interface: v0.10 Linux video capture interface: v2.00 pps_core: LinuxPPS API ver. 1 registered pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <[email protected]> PTP clock support registered EDAC MC: Ver: 3.0.0 FPGA manager framework fpga-region fpga-full: FPGA Region probed Advanced Linux Sound Architecture Driver Initialized. clocksource: Switched to clocksource arm_global_timer NET: Registered protocol family 2 TCP established hash table entries: 4096 (order: 2, 16384 bytes) TCP bind hash table entries: 4096 (order: 3, 32768 bytes) TCP: Hash tables configured (established 4096 bind 4096) UDP hash table entries: 256 (order: 1, 8192 bytes) UDP-Lite hash table entries: 256 (order: 1, 8192 bytes) NET: Registered protocol family 1 RPC: Registered named UNIX socket transport module. RPC: Registered udp transport module. RPC: Registered tcp transport module. RPC: Registered tcp NFSv4.1 backchannel transport module. hw perfevents: enabled with armv7_cortex_a9 PMU driver, 7 counters available futex hash table entries: 512 (order: 3, 32768 bytes) workingset: timestamp_bits=30 max_order=17 bucket_order=0 jffs2: version 2.2. (NAND) (SUMMARY) © 2001-2006 Red Hat, Inc. io scheduler noop registered io scheduler deadline registered io scheduler cfq registered (default) dma-pl330 f8003000.dmac: Loaded driver for PL330 DMAC-241330 dma-pl330 f8003000.dmac: DBUFF-128x8bytes Num_Chans-8 Num_Peri-4 Num_Events-16 xdevcfg f8007000.devcfg: ioremap 0xf8007000 to e0828000 [drm] Initialized brd: module loaded loop: module loaded m25p80 spi0.0: found s25fl256s1, expected n25q512a m25p80 spi0.0: s25fl256s1 (32768 Kbytes) 5 ofpart partitions found on MTD device spi0.0 Creating 5 MTD partitions on "spi0.0": 0x000000000000-0x000000500000 : "boot" 0x000000500000-0x000000520000 : "bootenv" 0x000000520000-0x000000fa0000 : "kernel" 0x000000fa0000-0x000001a20000 : "jffs2" 0x000001a20000-0x000001f20000 : "spare" libphy: Fixed MDIO Bus: probed CAN device driver interface libphy: MACB_mii_bus: probed macb e000b000.ethernet eth0: Cadence GEM rev 0x00020118 at 0xe000b000 irq 27 (00:0a:35:00:ea:16) Marvell 88E1510 e000b000.etherne:00: attached PHY driver [Marvell 88E1510] (mii_bus:phy_addr=e000b000.etherne:00, irq=-1) e1000e: Intel(R) PRO/1000 Network Driver - 3.2.6-k e1000e: Copyright(c) 1999 - 2015 Intel Corporation. ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver ehci-pci: EHCI PCI platform driver usbcore: registered new interface driver usb-storage mousedev: PS/2 mouse device common for all mice i2c /dev entries driver cdns-wdt f8005000.watchdog: Xilinx Watchdog Timer at e0942000 with timeout 10s EDAC MC: ECC not enabled Xilinx Zynq CpuIdle Driver started sdhci: Secure Digital Host Controller Interface driver sdhci: Copyright(c) Pierre Ossman sdhci-pltfm: SDHCI platform and OF driver helper mmc0: SDHCI controller on e0100000.sdhci [e0100000.sdhci] using ADMA ledtrig-cpu: registered to indicate activity on CPUs usbcore: registered new interface driver usbhid usbhid: USB HID core driver NET: Registered protocol family 10 sit: IPv6, IPv4 and MPLS over IPv4 tunneling driver NET: Registered protocol family 17 can: controller area network core (rev 20120528 abi 9) NET: Registered protocol family 29 can: raw protocol (rev 20120528) can: broadcast manager protocol (rev 20161123 t) can: netlink gateway (rev 20130117) max_hops=1 Registering SWP/SWPB emulation handler hctosys: unable to open rtc device (rtc0) of_cfs_init of_cfs_init: OK ALSA device list: No soundcards found. jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00000000: 0xfffe instead mmc0: new high speed SDHC card at address 59b4 jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00000004: 0xfffe instead mmcblk0: mmc0:59b4 SDC 7.51 GiB mmcblk0: p1 p2 jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00000008: 0xfffe instead jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0000000c: 0xfffe instead jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00000010: 0xfffe instead jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00000014: 0xfffe instead jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00000018: 0xfffe instead jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0000001c: 0xfffe instead jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00000020: 0x5566 instead jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00000024: 0x4e58 instead jffs2: Further such events for this erase block will not be printed jffs2: Empty flash at 0x000000a0 ends at 0x000000a4 jffs2: Empty flash at 0x000000a8 ends at 0x000000ac jffs2: Empty flash at 0x000000b0 ends at 0x000000b4 jffs2: Empty flash at 0x000000b8 ends at 0x000000bc jffs2: Empty flash at 0x000000c0 ends at 0x000000c4 jffs2: Empty flash at 0x000000c8 ends at 0x000000cc jffs2: Empty flash at 0x000000d0 ends at 0x000000d4 jffs2: Empty flash at 0x000000d8 ends at 0x000000dc jffs2: Empty flash at 0x000000e0 ends at 0x000000e4 jffs2: Empty flash at 0x000000e8 ends at 0x000000ec jffs2: Empty flash at 0x000000f0 ends at 0x000000f4 jffs2: Empty flash at 0x000000f8 ends at 0x000000fc jffs2: Empty flash at 0x00000100 ends at 0x00000104 jffs2: Empty flash at 0x00000108 ends at 0x0000010c jffs2: Empty flash at 0x00000110 ends at 0x00000114 jffs2: Empty flash at 0x00000118 ends at 0x0000011c random: fast init done Я попробовал грузить временно RootFS с SD карточки, переконфигурировал Petalinux и запустил Для того, чтобы осуществить загрузку из другого раздела, необходимо поправить содержимое раздела bootenv но вот команды изменения переменных окружающей среды(ENV) из загруженного на Zedboard Линукса, а именно fw_printenv, fw_setenv, не обнаруживаются при вводе их, вышел из положения вот таким образом: добавил в конец файла в проекте /project-spec/meta-user/conf/petalinuxbsp.conf следующее: IMAGE_INSTALL_append += " \ u-boot-fw-utils \ " и пересобрал его, после этого fw_printenv и fw_setenv добавились в сборку вот что выдает при выполнении fw_printenv root@mil_eth:/# fw_printenv Warning: Bad CRC, using default environment bootcmd=run $modeboot bootdelay=3 baudrate=115200 fit_image=fit.itb load_addr=0x2000000 fit_size=0x800000 flash_off=0x100000 nor_flash_off=0xE2100000 fdt_high=0x20000000 initrd_high=0x20000000 norboot=echo Copying FIT from NOR flash to RAM... && cp.b ${nor_flash_off} ${load_addr} ${fit_size} && bootm ${load_addr} sdboot=echo Copying FIT from SD to RAM... && load mmc 0 ${load_addr} ${fit_image} && bootm ${load_addr} jtagboot=echo TFTPing FIT to RAM... && tftpboot ${load_addr} ${fit_image} && bootm ${load_addr} usbboot=if usb start; then echo Copying FIT from USB to RAM... && load usb 0 ${load_addr} ${fit_image} && bootm ${load_addr}; fi dfu_ram_info=set dfu_alt_info ${kernel_image} ram 0x3000000 0x500000\\;${devicetree_image} ram 0x2A00000 0x20000\\;${ramdisk_image} ram 0x2000000 0x600000 dfu_ram=run dfu_ram_info && dfu 0 ram 0 thor_ram=run dfu_ram_info && thordown 0 ram 0 dfu_mmc_info=set dfu_alt_info ${kernel_image} fat 0 1\\;${devicetree_image} fat 0 1\\;${ramdisk_image} fat 0 1 dfu_mmc=run dfu_mmc_info && dfu 0 mmc 0 thor_mmc=run dfu_mmc_info && thordown 0 mmc 0 но вот при изменении переменных через fw_setenv Линукс ругается на невозможность корректировки, я открыл файл /etc/fw_env.config и раскомментил одну строчку # Configuration file for fw_(printenv/setenv) utility. # Up to two entries are valid, in this case the redundant # environment sector is assumed present. # Notice, that the "Number of sectors" is not required on NOR and SPI-dataflash. # Futhermore, if the Flash sector size is ommitted, this value is assumed to # be the same as the Environment size, which is valid for NOR and SPI-dataflash # NOR example # MTD device name Device offset Env. size Flash sector size Number of sectors /dev/mtd1 0x0000 0x20000 0x4000 #/dev/mtd2 0x0000 0x4000 0x4000 # MTD SPI-dataflash example # MTD device name Device offset Env. size Flash sector size Number of sectors #/dev/mtd1 0x500000 0x20000 #/dev/mtd6 0x4200 0x4200 # NAND example #/dev/mtd0 0x4000 0x4000 0x20000 2 # Block device example #/dev/mmcblk0 0xc0000 0x20000 # VFAT example #/boot/uboot.env 0x0000 0x4000 после этого fw_setenv позволило изменить переменную среды(fw_setenv bootdelay 1), причем при просмотре видно, что она уже помещена в конец с измененным значением bootdelay=1 но вот при перезагрузке модуля получаю вот такую ошибку: MMC: sdhci@e0100000: 0 (SD) SF: Detected s25fl256s_64k with page size 256 Bytes, erase size 64 KiB, total 32 MiB In: serial Out: serial Err: serial Net: ZYNQ GEM: e000b000, phyaddr ffffffff, interface rgmii-id Warning: ethernet@e000b000 (eth0) using random MAC address - 1a:79:bb:ae:ba:89 eth0: ethernet@e000b000 Hit any key to stop autoboot: 0 run - run commands in an environment variable Usage: run var [...] - run the commands in the environment variable(s) 'var' Zynq> вопрос 2: как правильно изменить переменные в разделе bootenv? какие переменные необходимо изменить, чтобы переключиться на другой раздел RootFS? какие переменные необходимо изменить, чтобы переключиться на другую сборку Linux? бьюсь уже третью неделю, буду благодарен за любую помощь спасибо
  17. Здравствуйте, уважаемые форумчане Возникла такая проблема и пока не нашел решения Я осуществлял обмен через Ethernet, используя сокеты и настраивая их на работу по TCP/IP, вычитывал данные пакета порционально, т.е. например, приходило 30 байт, я вычитывал заголовок 7 байт, а затем относительно него уже думал, что делать с пакетом все вычитывалось через read без проблем Сейчас возникла потребность работать по UDP: создаю сокет и подключаю его на прослушку к конкретному интерфейсу вот так: p_new_eth_dev->eth_dev_fd = socket(AF_INET , SOCK_DGRAM , 0) bind(p_new_eth_dev->eth_dev_fd, (struct sockaddr *)&(p_new_eth_dev->eth_bind_address), sizeof(struct sockaddr_in) затем запускаю поток на прослушку и вычитываю данные так же через read,т.е. read_len = read(port_fd,&(read_data),length); по логу видно, что я затребываю 7 байт(length = 7), мне возвращаются эти 7 байт(read_len = 7) пробовал и через функцию read_len = recv(port_fd,&(read_data),length ,0); с использованием флагов MSG_OOB, MSG_TRUNC , MSG_WAITALL считывается так же, при флаге MSG_PEEK данные не удаляются, как и было обещено в документации как я сказал раньше, пакет у меня 30 байт(для примера, на самом деле он может быть всегда разным по длине, именно по заголовку я узнаю, сколько реально пакет длинной), при вычитывании 7 байт по UDP, хоть пакет и был 30 байт, но они исчезают, такое ощущение, что при чтении 7 байт из 30 у меня из буфера вычитываются все 30 байт сразу возможно ли в UDP считывание частичное пакета, как мне сокет настроить на такой режим работы??? как вообще считывать по UDP, если не знаешь длины пакета, постоянно в тупую максимум кидать и ждать, что вернется?
  18. Спасибо большое за помощь!!! сделал свою кору по аналогии с демультиплексором на avalon-stream(*\altera\13.0sp1\ip\altera\merlin\altera_merlin_demultiplexer\) пришлось написать свой собственный TCL файл, а так же откорректировать файл top уровня моего проекта, чтобы скрипт корректировал данный файл под параметры, задаваемые пользователем в итоге, я так понял, что скрипт на TCL управляет отображением IP Core в QSYS, а так же генерирует сам файл top уровня, открывая его и подставляя параметры пользователя, генерируя требуемый код на verilog(vhdl и т.д.) еще раз спасибо!!!
  19. Здравствуйте, уважаемые форумчане!!! возникла такая задача - необходимо размножить IP Core интерфейса, написанного мною на verilog, в зависимости от параметров, задаваемых пользователем при выборе IP Core в QSYS т.е. при выборе IP Core во время вставки ее в QSYS систему, если пользователь вводит в окошке количество интерфейсов цифру 3, то у меня должно появиться 3 Avalon-MM Master, если 1, то 1 Avalon-MM Master и т.д. в результате в зависимости от параметра появлялись, либо исчезали интерфейсы, относящиеся к Avalon шине, либо какие-либо внешние сигналы я так понял, что сам Quartus и Qsys не позволяют сгенерировать такой tcl код, практических примеров в интернете я тоже не нашел огромная просьба, поделиться примерами tcl кодов, которые реализовывают данные функции, если скините ссылки на документацию, где это описано,тоже буду очень благодарен
  20. Решил проблему, мне данный драйвер передали от другого программиста, дело было в том, что он не разрешал выходить модулю на шину мастером, короче не вызывал функцию pci_master_enable() всем спасибо
  21. Всем добрый день!!! Уже 3ю неделю бьюсь с прерываниями MSI под Ubuntu 16.04 на компьютерах, где стоит UEFI BIOS - msi прерывания генерируются платой(это видно чипскопом), но ОС их не видит причем все нормально работает, т.е. прерывания приходят на компьютерах(это видно и в proc/interrupts и то , что вызывается обработчик прерывания), где стоит простой BIOS(не UEFI), как на 32х разрядной, так и на 64х разрядной ОС пробовал следующее, но это не помогло: - отключать Secure Boot - дописал откл и вкл прерываний после регистрации обработчика прерывания: //MSI if (pci_enable_msi(device_mil[minor].pdev) == 0) { debug_print("MSI IRQ is %d\n",device_mil[minor].pdev->irq); device_mil[minor].irq_num = device_mil[minor].pdev->irq; debug_print("MSI DEVICE IRQ is %d\n",device_mil[minor].irq_num); debug_print("MSI enabed! \n"); } else { printk(KERN_ERR"DEV_MIL_DRV_UDx: MSI not enabed! \n"); pr_err("pci_enable_msi:"); goto err6; } //IRQ if (request_irq(device_mil[minor].irq_num, (irq_handler_t) irq_handler, IRQF_PROBE_SHARED, (char *)device_mil[minor].dev_name, &device_mil[minor]) != 0) { printk(KERN_ERR"DEV_MIL_DRV_UDx: IRQ requesting failed \n"); pr_err("request_irq:"); goto err6; } disable_irq(device_mil[minor].irq_num); enable_irq(device_mil[minor].irq_num); - пробовал откл APIC контроллер вот лог /proc/interrupt после загрузки драйвера и после посылки данных, когда прерывания должны были прийти( PCIe_1553UDx_0 мое устройство): CPU0 CPU1 CPU2 CPU3 CPU4 CPU5 CPU6 CPU7 0: 23 0 0 0 0 0 0 0 IO-APIC 2-edge timer 1: 3 0 0 0 0 0 0 0 IO-APIC 1-edge i8042 5: 0 0 0 0 0 0 0 0 IO-APIC 5-edge parport0 8: 1 0 0 0 0 0 0 0 IO-APIC 8-edge rtc0 9: 0 0 0 0 0 0 0 0 IO-APIC 9-fasteoi acpi 12: 4 0 0 0 0 0 0 0 IO-APIC 12-edge i8042 14: 0 0 0 0 0 0 0 0 IO-APIC 14-fasteoi INT345D:00 16: 0 0 0 0 0 0 0 0 IO-APIC 16-fasteoi idma64.0, i2c_designware.0 17: 611 303 0 0 0 0 0 0 IO-APIC 17-fasteoi idma64.1, snd_hda_intel:card1, i2c_designware.1 20: 0 0 0 0 0 0 0 0 IO-APIC 20-fasteoi idma64.2 121: 753 697 0 362 0 5675 0 2013 PCI-MSI 327680-edge xhci_hcd 314: 13101 0 0 0 4398 0 1686 0 PCI-MSI 376832-edge ahci[0000:00:17.0] 315: 55 0 3506 0 0 522 0 0 PCI-MSI 2097152-edge enp4s0 316: 0 0 0 0 0 0 0 0 PCI-MSI 3145728-edge enp6s0 317: 1213 0 0 0 0 0 0 58559 PCI-MSI 524288-edge nvkm 318: 30 0 0 0 0 0 0 0 PCI-MSI 360448-edge mei_me 319: 703 105 0 0 0 0 0 0 PCI-MSI 514048-edge snd_hda_intel:card0 320: 0 0 0 0 0 0 0 0 PCI-MSI 1572864-edge PCIe_1553UDx_0 NMI: 1 0 0 0 0 0 0 1 Non-maskable interrupts LOC: 1994714 659098 501525 243498 293273 190401 520489 2272568 Local timer interrupts SPU: 0 0 0 0 0 0 0 0 Spurious interrupts PMI: 1 0 0 0 0 0 0 1 Performance monitoring interrupts IWI: 0 0 0 0 0 0 0 0 IRQ work interrupts RTR: 6 0 0 0 0 0 0 0 APIC ICR read retries RES: 1818 1485 603 471 389 302 301 537 Rescheduling interrupts CAL: 1814 1765 1811 1696 1666 1820 1672 1738 Function call interrupts TLB: 239 279 281 195 193 393 239 212 TLB shootdowns TRM: 1 1 1 1 1 1 1 1 Thermal event interrupts THR: 0 0 0 0 0 0 0 0 Threshold APIC interrupts DFR: 0 0 0 0 0 0 0 0 Deferred Error APIC interrupts MCE: 0 0 0 0 0 0 0 0 Machine check exceptions MCP: 3 3 3 3 3 3 3 3 Machine check polls ERR: 0 MIS: 0 PIN: 0 0 0 0 0 0 0 0 Posted-interrupt notification event PIW: 0 0 0 0 0 0 0 0 Posted-interrupt wakeup event так же лог загрузки драйвера: [ 521.782072] DEV_MIL_DRV_UDx: module_start() begin. [ 521.782088] DEV_MIL_DRV_UDx: Find Device UDx(DEVICE_ID = 0x9472) #1 [ 521.782227] DEV_MIL_DRV_UDx: cdev_init [ 521.782229] DEV_MIL_DRV_UDx: Memory [ 521.782332] DEV_MIL_DRV_UDx: Memory [ 521.782333] DEV_MIL_DRV_UDx: Maska was setted [ 521.782334] DEV_MIL_DRV_UDx: module_start(): try to allocate DMA buffer. [ 521.783197] DEV_MIL_DRV_UDx: module_start(): to address = 0xffffa78fc9681000 was written 0xfd000000 [ 521.783199] DEV_MIL_DRV_UDx: module_start(): to address = 0xffffa78fc9681004 was written 0xf [ 521.783287] DEV_MIL_DRV_UDx: MSI IRQ is 320 [ 521.783288] DEV_MIL_DRV_UDx: MSI DEVICE IRQ is 320 [ 521.783289] DEV_MIL_DRV_UDx: MSI enabed! [ 521.783322] DEV_MIL_DRV_UDx: IRQ requesting good [ 521.783325] DEV_MIL_DRV_UDx: dev_type = 0x43 [ 521.783326] DEV_MIL_DRV_UDx: DEVICE CREATE GOOD вот лог lspci -v после загрузки драйвера: 03:00.0 Communication controller: Device a203:9472 (rev 03) Subsystem: Device a203:9472 Flags: fast devsel, IRQ 320 Memory at df200000 (64-bit, non-prefetchable) Capabilities: [40] Power Management version 3 Capabilities: [48] MSI: Enable+ Count=1/1 Maskable- 64bit+ Capabilities: [58] Express Endpoint, MSI 00 Capabilities: [100] Device Serial Number 00-00-00-00-00-00-00-00 я смотрел, полностью карту регистров, а конкретно регистры, которые отвечают за MSI(cap_id = 0х05), там выставлено ОС все верно возникала ли у кого такая проблема и как решали вы ее??? буду очень благодарен за любой совет, пока даже не знаю, где копать...
  22. нашел причину, почему стандартные средства QNX не отрабатывали флаг PCI_USE_MSI - необходимо грузить ядро с pci-bios-v2 вместо простого pci-bios, после пересборки ядра с этим сервером, MSI верно определились всю информацию можно найти в http://www.qnx.com/developers/docs/6.5.0/i...ck_gettime.html вбив в строку поиска msi надеюсь, эта информация кому-нибудь поможет
  23. Всем добрый вечер!!! Есть плата с шиной Pci Express, в данной плате реализована работа MSI прерываний я написал драйвер под Linux, разрешение MSI прерываний осуществляется через функцию pci_msi_anable и все хорошо работало, пока не появилась потребность переписать драйвер под QNX 6.5.0 по документации на pci server(стандартный, что устанавливается вместе с QNX), достаточно просто передать флаг PCI_USE_MSI в функцию pci_attach_device и все само настроится... но вот только не работает... вот таким образом я получаю дескриптор на устройство: pci_dev_hndl = pci_attach_device(NULL,( PCI_SEARCH_VENDEV | PCI_INIT_ALL | PCI_INIT_IRQ | PCI_MASTER_ENABLE | PCI_USE_MSI),minor,&pci_info); результат так же сохраняется в структуре pci_dev_info pci_info, одним из полей которой является: uint8_t msi; данное поле всегда равно нулю при считывании после выполнения pci_attach_device, мне казалось, там должен быть сохранен номер msi прерывания, информации по данному полю я не смог найти если набрать команду pci -vvv до загрузки драйвера и после, то ничего не меняется в адресном пространстве pci, самое главное, что я смотрю, это capability регистр с id 0x05, там видно, что msi прерывания запрещены, адреса в нулях и данные... Class = Communication (Other) Vendor ID = a203h, Unknown Device ID = 9472h, Unknown Unknown PCI index = 0h Class Codes = 078000h Revision ID = 3h Bus number = 3 Device number = 0 Function num = 0 Status Reg = 10h Command Reg = 107h I/O space access enabled Memory space access enabled Bus Master enabled Special Cycle operations ignored Memory Write and Invalidate disabled Palette Snooping disabled Parity Error Response disabled Data/Address stepping disabled SERR# driver enabled Fast back-to-back transactions to different agents disabled PCI INTx enabled Header type = 0h Single-function BIST = 0h Build-in-self-test not supported Latency Timer = 0h Cache Line Size= 8h un-cacheable BAR - 0 [Mem] = f7d80000h 64bit length 524288 enabled Subsystem Vendor ID = a203h Subsystem ID = 9472h Max Lat = 0ns Min Gnt = 0ns PCI Int Pin = INT A Interrupt line = 5 CPU Interrupt = 5h Capabilities Pointer = 40h Capability ID = 1h - Power Management Capabilities = 7e03h - 8h Capability ID = 5h - Message Signaled Interrupts Capabilities = 80h - 0h Capability ID = 10h - PCI Express Capabilities = 1h - 288fc0h Device Dependent Registers: 0x040: 0148 037e 0800 0000 0558 8000 0000 0000 0x050: 0000 0000 0000 0000 1000 0100 c08f 2800 0x060: 1028 0b00 11f4 0300 0000 1110 0000 0000 0x070: 0000 0000 0000 0000 0000 0000 0000 0000 ... 0x0f0: 0000 0000 0000 0000 0000 0000 0000 0000 я решил ручками написать функцию, которая активирует MSI прерывания, формально реализовать ту же функцию pci_msi_anable в линукс, но наткнулся на особенную организацию MSI прерываний в архитектуре Intel, настроил адреса вот так: addr_dma_msi_lo = 0xFEE00000; // low part address addr_dma_msi_hi = 0x00000000; // hi part address данные: msi_cap_message_data = 0x4042; Class = Communication (Other) Vendor ID = a203h, Unknown Device ID = 9472h, Unknown Unknown PCI index = 0h Class Codes = 078000h Revision ID = 3h Bus number = 3 Device number = 0 Function num = 0 Status Reg = 10h Command Reg = 507h I/O space access enabled Memory space access enabled Bus Master enabled Special Cycle operations ignored Memory Write and Invalidate disabled Palette Snooping disabled Parity Error Response disabled Data/Address stepping disabled SERR# driver enabled Fast back-to-back transactions to different agents disabled PCI INTx disabled Header type = 0h Single-function BIST = 0h Build-in-self-test not supported Latency Timer = 0h Cache Line Size= 8h un-cacheable BAR - 0 [Mem] = f7d80000h 64bit length 524288 enabled Subsystem Vendor ID = a203h Subsystem ID = 9472h Max Lat = 0ns Min Gnt = 0ns PCI Int Pin = INT A Interrupt line = 5 CPU Interrupt = 5h Capabilities Pointer = 40h Capability ID = 1h - Power Management Capabilities = 7e03h - 8h Capability ID = 5h - Message Signaled Interrupts Capabilities = 81h - fee0000h Enabled Capability ID = 10h - PCI Express Capabilities = 1h - 288fc0h Device Dependent Registers: 0x040: 0148 037e 0800 0000 0558 8100 0000 e0fe 0x050: 0000 0000 4240 0000 1000 0100 c08f 2800 0x060: 1028 0b00 11f4 0300 0000 1110 0000 0000 0x070: 0000 0000 0000 0000 0000 0000 0000 0000 ... 0x0f0: 0000 0000 0000 0000 0000 0000 0000 0000 но мне не получилось зарегистрировать обработчик прерывания на вектор 0x42, что я указал, постоянно InterruptAttach выдавал ошибку уважаемые форумчане, был ли у кого опыт включения MSI прерываний под QNX 6.5.0 X86, поделитесь, пожалуйста опытом, 2 недели уже бьюсь, пока результата никакого????
  24. Добрый день Встала задача написать драйвер под мой модуль, написанный на verilog, на кристалле Zynq 7020(плата Zedboard) под управлением ОС Linux. Я всю свою рабочую деятельность занимался разработкой и программированием ПЛИС Altera, но начальство поставило задачу в этот раз реализовать что-нибудь из требуемого на Xilinx и сравнить по характеристикам и производительности Я установил Vivado 2017.1 на Ubuntu 16.04 Мне удалось запустить образ PetaLinux под данную плату с моим проектом, сейчас встал вопрос о том, как перехватывать и регистрировать прерывания в драйвере, а затем самого сгенерировать прерывание на сторону вышестоящей программы. я создал проект с генерацией статической библиотеки при компиляции в SDK, выбрав ОС LINUX(OS Platform) у меня возникли следующие вопросы: 1. я не смог в SDK под кросскомпилятор arm-xilinx-linux-gnueabi-gcc(папка в SDK arm-xilinx-linux-gnueabi-, да и в других папках тоже) найти файлы для работы с прерываниями, а именно interrupt.h,irq.h, есть только пустой файл irqn.r какие файлы необходимо подключать в SDK для работы с прерываниями под PetaLinux? как регистрировать и передавать прерывания дальше на уровень выше? 2. все прерывания заведены на процессорную системы IRQ_F2P[15:0], как мне добраться до них из-под PetaLinux??? 3. я немного читал про ограничения самой PetaLinux, т.к. надо было получить результат побыстрее, а PetaLinux сразу встал под сгенерированную мною систему может кто посоветует, где взять образ ОС Linux под Zedboard, где она бы не была так урезана, как PetaLinux Буду очень благодарен, если скинете примеры по работе с прерываниями под ОС PetaLinux(либо Linux) под данный кристалл. спасибо, жду ваших предложений
  25. перевод из PCAD в Allegro

    Возникла уже давно такая проблема, я уверен, что не только у меня, да и по форуму видно, что и здесь она поднималась Данная тема была последний раз редактирована в 2006 году... у меня возник вопрос, т.к. уже 2014 год, может получилось перевести электрику из PCAD в Allegro, тоже самое касается разводки??? Просто старых проектов до попы... необходимо их немного отредактировать, а так не хочется рисовать все заново Спасибо
×
×
  • Создать...