Jump to content

    

xxxmatrixxx

Участник
  • Content Count

    65
  • Joined

  • Last visited

Community Reputation

0 Обычный

About xxxmatrixxx

  • Rank
    Участник
  • Birthday 05/31/1985

Контакты

  • Сайт
    http://petrov3372@yandex.ru
  • ICQ
    578797369

Информация

  • Город
    Санкт-Петербург

Recent Profile Visitors

951 profile views
  1. залоченный, но мне пока хватает и этого
  2. патченный помог прошить в J-Link, спасибо
  3. нет, к сожалению только одна плата ST-LINK/V2 (mini) я хотел, используя ST Link Upgrade перепрошить, или так невозможно сделать? по форумам я только нашел бинарные файлы, которые скорее всего шьются в программатор через другой программатор, или я не прав? а какую? я в сети нашел 4.3.0.0, но она не позволила мне сделать выбор, какую именно версию ставить, только STM32+STM8 а вот патченную Reflash не смог найти, не скините ссылку?
  4. Здравствуйте, уважаемые форумчане купил в магазине вот такую плату: 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 сталкивался ли кто-нибудь с такой проблемой и как ее возможно решить? спасибо, буду рад любой помощи
  5. STM32L496: не работает SDMMC с USB MASS STORAGE

    я решил проблему с отображением 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
  6. Всем доброго дня!!! Я использую в своих разработках плату 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) Буду очень признателен за любую помощь!!! спасибо
  7. у меня такая же ошибка выскакивает, точно ли во флэшке дело? а как в итоге решили проблему?
  8. Установил Altium Designer Beta 19.1.2 Build 11(https://rutracker.org/forum/viewtopic.php?t=4118530), проблема с копированием исчезла всем спасибо за помощь
  9. меня, честно, очень удивляет такой подход, я разрабатывал электрику в Allegro 16.5 и MentorGraphics vx 2.1 до Альтиума, в Аллегро выше 16.5 нет совместимости версий, у Ментора вообще нет совместимости между версиями, т.е. даже vx 1.1 несовместима с 1.2, а тут 3 версии одного пакета хранить, чтобы обойти косяки разработчиков - мне очень этим Ментор не понравился, т.к. сырой ужасно продукт, приходилось самому ручками писать скрипты, чтобы перечень элементов создавать, в конфигурационные файлы проекта лазить и править там ручками, чтобы Ментор подхватил изменения верно, короче, очень много заморочек было, которые надо было дорабатывать в ручном режиме за разработчиками Альтиум очень красиво выглядит, просто и лаконично, я думал, что здесь таких проблем, как с Ментором, у меня не будет, но вот сразу наткнулся на нее
  10. я устанавливал до этого на этот же комп Altium 17.1.9 версии 536, был тот же косяк
  11. Здравствуйте, уважаемые форумчане в связи с тем, что мое предприятие решило перейти на САПР Altium при разработке электрических схем, пришлось осваивать данный продукт и я столкнулся со следующей проблемой: 1. я установил Altium 17.1.9 версии 592(вот отсюда https://rutracker.net/forum/viewtopic.php?t=5478817), ОС Win10 X64 2. при любом копировании(выделяем, щелкаем правой кнопкой, выбираем Copy) компонентов (библиотечных, либо нарисованных собственноручно, т.е. например линии) происходит сразу зависание программы Altium - помогает только убивание программы через Диспетчер задач, но при повторном выполнении операции копировании происходит тоже самое зависание 3. на другом компе стоит та же версия Altium, и все копируется и вставляется, не виснет
  12. прочитал документацию по тому, как делаются последовательности спасибо большое я нашел файл /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?
  13. Все делается из Linux, т.е. я передаю файл rootfs по Ethernet на плату Zedboard, где крутится TCP сервер, принимаю данные, записываю их в файл, сохраняю файл, и затем записываю его в соответствующий раздел mtd (пока "spare"), вот такой командой: flashcp -v /home/update.txt "/dev/mtd0" я пока не могу понять: 1. как соответствующий раздел соотносится с rootfs при загрузке Линукс, т.е. как настроить petalinux, чтобы файловая система находилась именно в этом разделе mtd 2. как из линукса изменить bootenv(я пока только смог это сделать через fw_setenv после настроек и пересборки, описанной выше), чтобы изменить место с которого грузить файловую систему, при этом оставив резервной старую файловую систему
  14. спасибо большое за ответ не могли бы скинуть ссылки на документацию, где можно об этом прочитать сейчас у меня стоит первостепенная задача: 1. по Ethernet грузить новый образ RootFS c измененной программой 2. загрузить его в новый раздел QSPI Flash(например, spare) 3. затем изменить переменную окружения(пока я так же не понимаю, какую переменную там надо менять), чтобы подхватывался RootFS уже с раздела "spare"
  15. Здравствуйте, уважаемые форумчане Возникла потребность обновлять образ 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 <giometti@linux.it> 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? бьюсь уже третью неделю, буду благодарен за любую помощь спасибо