xxxmatrixxx 0 5 февраля, 2019 Опубликовано 5 февраля, 2019 (изменено) · Жалоба Здравствуйте, уважаемые форумчане Возникла потребность обновлять образ 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? бьюсь уже третью неделю, буду благодарен за любую помощь спасибо Изменено 6 февраля, 2019 пользователем xxxmatrixxx Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gosha-z 2 5 февраля, 2019 Опубликовано 5 февраля, 2019 · Жалоба Так, обо всем по порядку. 1. JFFS2 - не для QSPI 2. По поводу PL-части (FPGA) у вас есть два варианта - грузить его явным образом из U-Boot либо закатать внутрь FIT-файла (Flattened Image Tree, примеры в u-boot/doc/uImage.FIT). Разумеется, речь идет о Full Reconfiguration. Partial Reconfiguration тоже можно, но это бубен из другого ансамбля. Оба варианта подразумевают не битстрим, а бинарь, полученный из битстрима проходом bootgen, см.UG1283 3. По поводу ядра - ровно то же самое, два варианта - грузим отдельно либо в составе FIT. Второй вариант мне нравится больше - не надо заморачиваться разбивкой памяти при декомпрессии ядра (да-да, ядро можно сжать, например, lzma и сказать U-Boot'у декомпрессить его перед загрузкой, то же самое относится и к PL). 4. rootfs - три варианта: ext4 на sdcard, ramdisk в QSPI отдельно, ramdisk внутри FIT. Второй и третий варианты все равно потребуют какого-то writable storage для логов, /tmp и прочего, так что, ПМСМ, при наличии SDcard не имеют смысла. Какую комбинацию вариантов из 2/3/4 применить - решать вам. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
xxxmatrixxx 0 6 февраля, 2019 Опубликовано 6 февраля, 2019 (изменено) · Жалоба спасибо большое за ответ не могли бы скинуть ссылки на документацию, где можно об этом прочитать сейчас у меня стоит первостепенная задача: 1. по Ethernet грузить новый образ RootFS c измененной программой 2. загрузить его в новый раздел QSPI Flash(например, spare) 3. затем изменить переменную окружения(пока я так же не понимаю, какую переменную там надо менять), чтобы подхватывался RootFS уже с раздела "spare" Изменено 6 февраля, 2019 пользователем xxxmatrixxx Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gosha-z 2 6 февраля, 2019 Опубликовано 6 февраля, 2019 · Жалоба 3 hours ago, xxxmatrixxx said: 1. по Ethernet грузить новый образ RootFS c измененной программой Из загруженного Linux или из U-Boot? 3 hours ago, xxxmatrixxx said: 2. загрузить его в новый раздел QSPI Flash(например, spare) Тот же вопрос - из U-Boot или из Linux? 3 hours ago, xxxmatrixxx said: 3. затем изменить переменную окружения(пока я так же не понимаю, какую переменную там надо менять), чтобы подхватывался RootFS уже с раздела "spare" Менять bootcmd, чтобы она звала две разных последовательности команд. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
xxxmatrixxx 0 6 февраля, 2019 Опубликовано 6 февраля, 2019 · Жалоба 17 minutes ago, gosha-z said: Из загруженного Linux или из U-Boot? Тот же вопрос - из U-Boot или из Linux? Менять bootcmd, чтобы она звала две разных последовательности команд. Все делается из Linux, т.е. я передаю файл rootfs по Ethernet на плату Zedboard, где крутится TCP сервер, принимаю данные, записываю их в файл, сохраняю файл, и затем записываю его в соответствующий раздел mtd (пока "spare"), вот такой командой: flashcp -v /home/update.txt "/dev/mtd0" я пока не могу понять: 1. как соответствующий раздел соотносится с rootfs при загрузке Линукс, т.е. как настроить petalinux, чтобы файловая система находилась именно в этом разделе mtd 2. как из линукса изменить bootenv(я пока только смог это сделать через fw_setenv после настроек и пересборки, описанной выше), чтобы изменить место с которого грузить файловую систему, при этом оставив резервной старую файловую систему Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gosha-z 2 6 февраля, 2019 Опубликовано 6 февраля, 2019 · Жалоба Делаете две последовательности, одна грузит rootfs из одного раздела, вторая- - из другого, в зависимости от того,откуда хотите грузить - меняете bootcmd. UPD: Слегка наврал - bitstream в FIT компрессить нельзя, только "снаружи" Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
xxxmatrixxx 0 7 февраля, 2019 Опубликовано 7 февраля, 2019 (изменено) · Жалоба прочитал документацию по тому, как делаются последовательности спасибо большое я нашел файл /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? Изменено 7 февраля, 2019 пользователем xxxmatrixxx Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gosha-z 2 7 февраля, 2019 Опубликовано 7 февраля, 2019 · Жалоба По поводу Petalinux: единственная от него польза - готовые toolchains, далее берете U-Boot (можно родной, можно Xilinx, примерно позавчера они уравнялись по версиям), ядро (в вашем случае лучше Xilinx fork, ибо в mainline нет драйвера Zynq QSPI, от Каденса не подходит, хотя и похож), buildroot, делаете все, что надо и собираете воедино. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Dvorkin 1 7 февраля, 2020 Опубликовано 7 февраля, 2020 (изменено) · Жалоба On 2/5/2019 at 11:34 AM, xxxmatrixxx said: как загрузить файл rootfs.jffs2 в QSPI FLASH? Отформатировать раздел /dev/mtd3, например, в ext4, и распаковать в него rootfs.tar.gz On 2/6/2019 at 1:20 PM, xxxmatrixxx said: я пока не могу понять: 1. как соответствующий раздел соотносится с rootfs при загрузке Линукс, т.е. как настроить petalinux, чтобы файловая система находилась именно в этом разделе mtd В bootargs указываете root=/dev/mtd3 rw rootwait rootfstype=ext4 Изменено 7 февраля, 2020 пользователем Dvorkin Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Dvorkin 1 7 февраля, 2020 Опубликовано 7 февраля, 2020 · Жалоба On 2/6/2019 at 1:20 PM, xxxmatrixxx said: 2. как из линукса изменить bootenv(я пока только смог это сделать через fw_setenv после настроек и пересборки, описанной выше), чтобы изменить место с которого грузить файловую систему, при этом оставив резервной старую файловую систему Можно прочитать /dev/mtd1 (который bootenv) и посмотреть, в каком формате хранятся переменные u-boot. Не маловат размер раздела 11 МБ для RootFS? И вообще, QSPI всего 32 МБ, проще грузиться с SD и хранить переменные u-boot в uEnv.txt Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться