[meta-xilinx] Help with boot failure
Rich Wilson
richaw at gmail.com
Tue Jun 20 08:34:04 PDT 2017
On Tue, Jun 20, 2017 at 6:27 AM, Nathan Rossi <nathan at nathanrossi.com>
wrote:
> On 20 June 2017 at 03:29, Rich Wilson <richaw at gmail.com> 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 <nathan at nathanrossi.com>
> > wrote:
> >>
> >> On 19 June 2017 at 15:59, Rich Wilson <richaw at gmail.com> 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 at 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 at e0001000
> >> > Out: serial at e0001000
> >> > Err: serial at e0001000
> >> > Model: Zynq MicroZED Board
> >> > Board: Xilinx Zynq
> >> > Net: ZYNQ GEM: e000b000, phyaddr 0, interface rgmii-id
> >> >
> >> > Warning: ethernet at e000b000 (eth0) using random MAC address -
> >> > 92:62:5b:ad:43:d0
> >> > eth0: ethernet at 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 at 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 at 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 at e0001000
> > Out: serial at e0001000
> > Err: serial at e0001000
> > Model: Zynq MicroZED Board
> > Board: Xilinx Zynq
> > Net: ZYNQ GEM: e000b000, phyaddr 0, interface rgmii-id
> >
> > Warning: ethernet at e000b000 (eth0) using random MAC address -
> > 92:62:5b:ad:43:d0
> > eth0: ethernet at 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 at 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 at 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
>
Can you give me a hint where I should look for instructions on how to do
this?
Or I could spend all day combing the documentation and trying various
experiments :)
(to demonstrate my confusion: Do I fiddle with
meta-xilinx/recipes-bsp/u-boot?
meta/recipes-bsp/u-boot? Or is there some magic I can do in local.conf? or
bblayers.conf?)
(and if I need to apply the patch, ...? I would be tempted to just find
the file and
edit it. But that's probably not correct.)
--
Rich Wilson
richaw at gmail.com
425-337-7129 (land line)
425-374-4760 (Google)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.yoctoproject.org/pipermail/meta-xilinx/attachments/20170620/9347ec43/attachment.html>
More information about the meta-xilinx
mailing list