On 20 June 2017 at 03:29, Rich Wilson <[email protected]> wrote: > Thank you for your response, Nathan. > Top posting is supposed to be bad. So scroll way down to the bottom! > And I may have discovered a big hint, see the end of my response. > > On Sun, Jun 18, 2017 at 11:54 PM, Nathan Rossi <[email protected]> > wrote: >> >> On 19 June 2017 at 15:59, Rich Wilson <[email protected]> wrote: >> > I have tried to follow the directions in meta-xilinx to build >> > microzed-zynq7, and the results aren't booting (from micro-SD). >> > Boot results: >> > ===================================================== >> > U-Boot SPL 2017.01 (Jun 17 2017 - 07:44:02) >> > mmc boot >> > Trying to boot from MMC1reading system.dtb >> > spl_load_image_fat_os: error reading image system.dtb, err - -1 >> > reading u-boot.img >> > reading u-boot.img >> > >> > >> > U-Boot 2017.01 (Jun 17 2017 - 07:44:02 -0700) >> > >> > Model: Zynq MicroZED Board >> > Board: Xilinx Zynq >> > DRAM: ECC disabled 1 GiB >> > MMC: sdhci@e0100000: 0 >> > SF: Detected s25fl128s_64k with page size 256 Bytes, erase size 64 KiB, >> > total 1B >> > *** Warning - bad CRC, using default environment >> > >> > In: serial@e0001000 >> > Out: serial@e0001000 >> > Err: serial@e0001000 >> > Model: Zynq MicroZED Board >> > Board: Xilinx Zynq >> > Net: ZYNQ GEM: e000b000, phyaddr 0, interface rgmii-id >> > >> > Warning: ethernet@e000b000 (eth0) using random MAC address - >> > 92:62:5b:ad:43:d0 >> > eth0: ethernet@e000b000 >> > ** Bad device size - mmc 0 ** >> > Checking if uenvcmd is set ... >> > Hit any key to stop autoboot: 0 >> > Copying FIT from SD to RAM... >> > ** Bad device size - mmc 0 ** >> >> Your issue appears to be here, for some reason U-Boot is failing to >> access the SD card. Are you able to use the mmcinfo and fatls commands >> in U-Boot to list and or manually load the images from your SD card? >> >> If not then there might be an issue with the card or with how you have >> set up the partitions/etc. >> >> OE can generate an image with partition table/etc setup such that it >> can be directly dd'd to the disk. To enable that up just add the >> following to your local.conf: >> >> IMAGE_FSTYPES_append = " wic" >> WKS_FILES = "sdimage-bootpart.wks" >> >> Re-run your image build and the output image will be >> "core-image-minimal.wic". >> >> > Zynq> >> > ==================================================== >> > Bitbake: >> > rw@linux-pbup:~/poky/build> bitbake core-image-minimal >> > Parsing recipes: 100% |##########################################| Time: >> > 0:00:33 >> > Parsing of 871 .bb files complete (0 cached, 871 parsed). 1342 targets, >> > 80 >> > skipped, 0 masked, 0 errors. >> > NOTE: Resolving any missing task queue dependencies >> > >> > Build Configuration: >> > BB_VERSION = "1.34.0" >> > BUILD_SYS = "x86_64-linux" >> > NATIVELSBSTRING = "universal-4.8" >> > TARGET_SYS = "arm-poky-linux-gnueabi" >> > MACHINE = "microzed-zynq7" >> > DISTRO = "poky" >> > DISTRO_VERSION = "2.3" >> > TUNE_FEATURES = "arm armv7a vfp thumb neon callconvention-hard >> > cortexa9" >> > TARGET_FPU = "hard" >> > meta >> > meta-poky >> > meta-yocto-bsp = "pyro:f01b909a266498853e6b3f10e6b39f2d95148129" >> > meta-xilinx = "pyro:2371ecf0a0ad37cb775d4c09e89a1e70ab8f347a" >> > meta-webserver = "pyro:5e82995148a2844c6f483ae5ddd1438d87ea9fb7" >> > ==================================================== >> > Contents of boot partition (and you can see where I copied the files >> > from): >> > >> > linux-pbup:/home/rw/poky/build/tmp/deploy/images/microzed-zynq7 # ls >> > /mnt >> > boot.bin microzed-zynq7.dtb >> > uEnv.txt >> > core-image-minimal-microzed-zynq7.cpio.gz.u-boot u-boot.img >> > uImage >> > ======================================================= >> > contents of uEnv.txt, which seemed to be equivalent to the directions >> > (or >> > do I need to replace the ${...} constructs? I don't think it's getting >> > that >> > far :) ) >> > >> > kernel_image=uImage >> > devicetree_image=microzed-zynq7.dtb >> > bootargs=console=ttyPS0,115200 root=/dev/mmcblk0p2 rw rootwait >> > earlyprintk >> > loadkernel=fatload mmc 0 ${kernel_load_address} ${kernel_image} >> > loaddtb=fatload mmc 0 ${devicetree_load_address} ${devicetree_image} >> > bootkernel=run loadkernel && run loaddtb && bootm ${kernel_load_address} >> > - >> > ${devicetree_ >> > load_address} >> > uenvcmd=run bootkernel >> > ============================================================== >> > Potential screwup by me: When I first bitbaked, meta-xilinx was at >> > the master branch. After checking out pyro, I rebaked, but >> > it didn't do anything. I removed /build/tmp, and the bitbake >> > was pretty fast. Same result. >> >> It looks like your build is fine, and pryo/master point at the same >> commit at the moment so there should be no differences. Also no need >> to modify the generated uEnv.txt. >> >> Regards, >> Nathan > > > I added the requested lines to local.conf and bitbaked. The first time I > tried this, > it got stuck for over 10 minutes, guile do_compile IIRC, with over 99% user > CPU time. That didn't seem right, so CTRL/C and tried again. Succeeded > very quickly. Here's the evidence: > > Keyboard Interrupt, closing down... > > > Second Keyboard Interrupt, stopping... > > Execution was interrupted, returning a non-zero exit code. > NOTE: Sending SIGTERM to remaining 1 tasks > Traceback (most recent call last): > File "/home/rw/poky/bitbake/bin/bitbake", line 48, in <module> > cookerdata.CookerConfiguration())) > File "/home/rw/poky/bitbake/lib/bb/main.py", line 470, in bitbake_main > server_connection.terminate() > File "/home/rw/poky/bitbake/lib/bb/server/process.py", line 231, in > terminate > self.procserver.join(0.1) > File "/usr/lib64/python3.4/multiprocessing/process.py", line 121, in join > res = self._popen.wait(timeout) > File "/usr/lib64/python3.4/multiprocessing/popen_fork.py", line 51, in > wait > if not wait([self.sentinel], timeout): > File "/usr/lib64/python3.4/multiprocessing/connection.py", line 926, in > wait > ready = selector.select(timeout) > File "/usr/lib64/python3.4/selectors.py", line 367, in select > fd_event_list = self._poll.poll(timeout) > KeyboardInterrupt > > > And after the appropriate dd, here is the result: > > U-Boot SPL 2017.01 (Jun 19 2017 - 00:20:53) > mmc boot > Trying to boot from MMC1reading system.dtb > spl_load_image_fat_os: error reading image system.dtb, err - -1 > reading u-boot.img > reading u-boot.img > > > U-Boot 2017.01 (Jun 19 2017 - 00:20:53 -0700) > > Model: Zynq MicroZED Board > Board: Xilinx Zynq > DRAM: ECC disabled 1 GiB > MMC: sdhci@e0100000: 0 > SF: Detected s25fl128s_64k with page size 256 Bytes, erase size 64 KiB, > total 1B > *** Warning - bad CRC, using default environment > > In: serial@e0001000 > Out: serial@e0001000 > Err: serial@e0001000 > Model: Zynq MicroZED Board > Board: Xilinx Zynq > Net: ZYNQ GEM: e000b000, phyaddr 0, interface rgmii-id > > Warning: ethernet@e000b000 (eth0) using random MAC address - > 92:62:5b:ad:43:d0 > eth0: ethernet@e000b000 > ** Bad device size - mmc 0 ** > Checking if uenvcmd is set ... > Hit any key to stop autoboot: 0 > Copying FIT from SD to RAM... > ** Bad device size - mmc 0 ** > Zynq> mmcinfo > Device: sdhci@e0100000 > Manufacturer ID: 3 > OEM: 5344 > Name: SL16G > Tran Speed: 50000000 > Rd Block Len: 512 > SD version 3.0 > High Capacity: Yes > Capacity: 14.8 GiB > Bus Width: 4-bit > Erase Group Size: 512 Bytes > Zynq> fatls mmc 0 > 69424 boot.bin > 21929 microzed-zynq7.dtb > 465013 u-boot.img > 417 uenv.txt > 3597520 uimage > > 5 file(s), 0 dir(s) > > Zynq> > > > Now an interesting experiment. I typed three commands from > uenvcmd=fatload mmc 0 0x3000000 ${kernel_image} && fatload mmc 0 0x2A00000 > ${devicetree_image} && bootm 0x3000000 - 0x2A00000 > > and the kernel took off. But couldn't find root, no surprise. > > AHA! This might be a big hint what is going on: > (after a reboot) > > Zynq> fatls mmc 0 > ** Bad device size - mmc 0 ** > Zynq> mmcinfo > Device: sdhci@e0100000 > Manufacturer ID: 3 > OEM: 5344 > Name: SL16G > Tran Speed: 50000000 > Rd Block Len: 512 > SD version 3.0 > High Capacity: Yes > Capacity: 14.8 GiB > Bus Width: 4-bit > Erase Group Size: 512 Bytes > Zynq> fatls mmc 0 > 69424 boot.bin > 21929 microzed-zynq7.dtb > 465013 u-boot.img > 417 uenv.txt > 3597520 uimage > > 5 file(s), 0 dir(s) > > Zynq>
I was able to reproduce (on a Zybo) the "Bad device size" that is printed first (which is when u-boot tries to process preboot). However I needed to use a different/slower? card to make it happen. And I was only able to reproduce it in u-boot v2017.01 and not v2017.05 (which is in oe-core master). Would you be able to test u-boot v2017.05 and see if you can reproduce it there? If you can still reproduce your issue there, the following patch might be needed to force u-boot to rescan the mmc devices before attempting to load the preboot config. The follow commit for meta-xilinx should work for u-boot v2017.01 and v2017.05 (on pyro or master). https://github.com/nathanrossi/meta-xilinx/commit/20ae90016aaacec9569c1cb34a60552231fe733d You will probably also need this patch to get the autoboot working properly, since mainline u-boot doesn't set all the variables used by default. https://github.com/nathanrossi/meta-xilinx/commit/6472328917c240d1ad03561f038a6fe2de8bb382 Regards, Nathan -- _______________________________________________ meta-xilinx mailing list [email protected] https://lists.yoctoproject.org/listinfo/meta-xilinx
