I have spent the few days trying to get the latest Layerscape SDK (LSDK 19.09) BSP to boot on my FRWY-LS1012A dev board but have been unsuccessful. I have flashed the composite firmware to QSPI flash, flashed micro SD card, and uboot boots but Linux will fail to mount rootfs at some point and panics. It looks like it fails when Linux kernel tries to access the micro SD card and throws several errors when trying to mount rootfs (see attached log).
When I first received the board, I tried the pre-built images following `FRWY-LS1012AGSG.pdf` instructions (LSDK 17.12 it looks like) and can successfully boot into the BSP ubuntu rootfs. But for some reason, I cannot get the latest LSDK versions to work.
I am beginning to think either FRWY-LS1012A is not supported by NXP's LSDK anymore, I have a faulty board, or I completely missed something. Hopefully someone here can help me out.
Here's what I have tried:
OS: Fedora 31 (Workstation Edition) x86_64 (NOTE I use the docker image provided in the LSDK)
Kernel: 5.5.7-200.fc31.x86_64
Shell: zsh 5.7.1
Docker version 19.03.7, build 7141c199a2
TFTP server using docker `pghalliday/tftp`
I have also tried this on a Laptop using Ubuntu 18.04 live CD, and a VMWare virtual machine running Ubuntu 18.04.
FRWY-LS1012A-PB
PSU: Meanwell GST25U05-PJ1 (5V, 4A; recommended from `FRWY-LS1012AGSG.pdf`)
Purchased from Mouser on Feb 22, 2020
Stickers on bottom:
SCH-32169 REV C
700-32169 REV X2
PCB trace on bottom:
170-32169 REV C
I assume then I have REV C. I also noticed that this board has 512MB DDR3L RAM (Micron), but all of the provided documentation (`FRWY-LS1012AGSG.pdf`, `FRWY-LS1012ARM.pdf`, and `FRWY-LS1012A-PA-DF`) call out Kingston 1GB DDR3L RAM. I assume then that all of that documentation found on https://www.nxp.com/design/qoriq-developer-resources/layerscape-frwy-ls1012a-board:FRWY-LS1012A is for a REV A? Where can I find the documentation and design files that matches my board (REV C)?
I have attached a few full boot logs (uboot + linux) and the commands that I ran.
On your host PC, in LSDK1909, please run the following command to deploy image to SD card.
$ flex-installer -b bootpartition_LS_arm64_lts_4.19.tgz -r ubuntu_xenial_arm64_rootfs_202003072137.tgz -f
firmware_ls1012afrwy_uboot_sdboot.img -d /dev/mmcblk0
Please configure bootargs as the following under u-boot prompt on the target board.
setenv bootargs "console=ttyS0,115200 earlycon=uart8250,mmio,0x21c0500 root=/dev/mmcblk0p4 rw rootwait"
HI Yiping,
I tried what you asked but that didn't work.
Running:
flex-installer -b bootpartition_LS_arm64_lts_4.19.tgz -r ubuntu_xenial_arm64_rootfs_202003072137.tgz -f firmware_ls1012afrwy_uboot_sdboot.img -d /dev/sdd
Produces this error:
Not found bootpartition_LS_arm64_lts_4.19.tgz
I tried again but this time I added `-i auto -m ls1012afrwy` options since I saw that in the LSDK user guide to auto-download those files:
flex-installer -i auto -m ls1012afrwy -b bootpartition_LS_arm64_lts_4.19.tgz -r ubuntu_xenial_arm64_rootfs_202003072137.tgz -f firmware_ls1012afrwy_uboot_sdboot.img -d /dev/sdd
But that produces this error:
Installing system rootfs partition, please wait ...
format unknown is not supported
I then tried removing `-r ubuntu_xenial_arm64_rootfs_202003072137.tgz` option. This was able to flash the SD card OK (although uses rootfs_lsdk1909_LS_arm64_main.tgz instead of ubuntu_xenial_arm64_rootfs_202003072137.tgz). I then set the uboot bootargs variable like you said but produced the same kernel panic as before.
I've attached a full log showing what I did.
EDIT: forgot to attach log
Rootfs is not deployed in SD card, probably there is problem in ubuntu_xenial_arm64_rootfs_202003072137.tgz.
Please download rootfs rootfs_lsdk2003_ubuntu_lite_arm64.tgz from https://drive.google.com/open?id=1aaW9raM-VZBTi_sUFbWBwaT1QXMe2zzi
flex-installer -b bootpartition_LS_arm64_lts_4.19.tgz -r rootfs rootfs_lsdk2003_ubuntu_lite_arm64.tgz -f firmware_ls1012afrwy_uboot_sdboot.img -d /dev/sdd
Under u-boot prompt, please run the following commands
=>setenv bootargs "console=ttyS0,115200 earlycon=uart8250,mmio,0x21c0500 root=/dev/mmcblk0p4 rw rootwait"
=>saveenv
If the above works, please generate Ubuntu-based main rootfs with the following commands.
$ flex-builder -i mkrfs -r ubuntu:main
Ok I downloaded rootfs_lsdk2003_ubuntu_lite_arm64.tgz from the link you provided and ran the flex-installer command you provided. That flashed to SD card OK. I ran the uboot commands like you asked, inserted SD card, then reset the board. Still does not work...linux kernel panics like before.
I tried two different uSD cards and two different USB card readers just to be sure.
In your log, bootargs was saved in SPI flash not in SD CARD.
When you insert SD CARD enter into u-boot, please click "Enter" to go to u-boot prompt, then run the following commands
=>setenv bootargs "console=ttyS0,115200 earlycon=uart8250,mmio,0x21c0500 root=/dev/mmcblk0p4 rw rootwait"
=>saveenv
Then reset the target board to reboot.
I hope I understood you correctly. This time I inserted the SD card first and entered u-boot and ran the u-boot commands but it didn't work either.
Is u-boot supposed to save its environment to the SD card on the LS1012AFRWY board? All documentation says QSPI flash is the only boot source on that board (u-boot can only be loaded from QSPI, not SD card). I assume if this board loads u-boot from QSPI, then it must save its environment to QSPI.
Here's what I did:
At this point I reflashed the SD card and tried again:
Would you please use "pri" command to print you u-boot environment?
=> pri
arch=arm
baudrate=115200
board=ls1012afrdm
board_name=ls1012afrdm
boot_a_script=load ${devtype} ${devnum}:${distro_bootpart} ${scriptaddr} ${prefix}${script}; env exists secureboot && load ${devtype} ${devnum}:${distro_bootpart} ${scripthdraddr} ${prefix}${boot_script_hdr}; env exists secureboot && esbc_validate ${scripthdraddr};source ${scriptaddr}
boot_efi_binary=if fdt addr ${fdt_addr_r}; then bootefi bootmgr ${fdt_addr_r};else bootefi bootmgr ${fdtcontroladdr};fi;load ${devtype} ${devnum}:${distro_bootpart} ${kernel_addr_r} efi/boot/bootaa64.efi; if fdt addr ${fdt_addr_r}; then bootefi ${kernel_addr_r} ${fdt_addr_r};else bootefi ${kernel_addr_r} ${fdtcontroladdr};fi
boot_extlinux=sysboot ${devtype} ${devnum}:${distro_bootpart} any ${scriptaddr} ${prefix}${boot_syslinux_conf}
boot_net_pci_enum=pci enum
boot_net_usb_start=usb start
boot_prefixes=/ /boot/
boot_script_dhcp=boot.scr.uimg
boot_script_hdr=hdr_ls1012afrwy_bs.out
boot_scripts=ls1012afrwy_boot.scr
boot_syslinux_conf=extlinux/extlinux.conf
boot_targets=mmc0 usb0
bootargs=console=ttyS0,115200 earlycon=uart8250,mmio,0x21c0500 root=/dev/mmcblk0p4 rw rootwait
bootcmd=pfe stop; run distro_bootcmd; run sd_bootcmd; env exists secureboot && esbc_halt;
bootcmd_mmc0=devnum=0; run mmc_boot
bootcmd_usb0=devnum=0; run usb_boot
bootdelay=10
console=ttyS0,115200
cpu=armv8
distro_bootcmd=scsi_need_init=; for target in ${boot_targets}; do run bootcmd_${target}; done
efi_dtb_prefixes=/ /dtb/ /dtb/current/
eth1addr=00:04:9f:05:ce:24
ethaddr=00:04:9f:05:ce:23
fdt_addr=0x00f00000
fdt_addr_r=0x90000000
fdt_high=0xffffffffffffffff
fdtcontroladdr=b7b14fa0
fdtheader_addr_r=0x80100000
initrd_high=0xffffffffffffffff
installer=load mmc 0:2 $load_addr /flex_installer_arm64.itb; bootm $load_addr#$board
ipaddr=192.168.2.2
kernel_addr=0x01000000
kernel_addr_r=0x81000000
kernel_addr_sd=0x8000
kernel_size=0x2800000
kernel_size_sd=0x16000
kernelhdr_addr_sd=0x4000
kernelhdr_size_sd=0x10
kernelheader_addr=0x1fc000
kernelheader_addr_r=0x80200000
kernelheader_size=0x40000
load_addr=0x96000000
load_efi_dtb=load ${devtype} ${devnum}:${distro_bootpart} ${fdt_addr_r} ${prefix}${efi_fdtfile}
mmc_boot=if mmc dev ${devnum}; then devtype=mmc; run scan_dev_for_boot_part; fi
qspi_bootcmd=echo Trying load from qspi..;sf probe && sf read $load_addr $kernel_addr $kernel_size; env exists secureboot && sf read $kernelheader_addr_r $kernelheader_addr $kernelheader_size && esbc_validate ${kernelheader_addr_r}; bootm $load_addr#$board
scan_dev_for_boot=echo Scanning ${devtype} ${devnum}:${distro_bootpart}...; for prefix in ${boot_prefixes}; do run scan_dev_for_scripts; done;
scan_dev_for_boot_part=part list ${devtype} ${devnum} devplist; env exists devplist || setenv devplist 1; for distro_bootpart in ${devplist}; do if fstype ${devtype} ${devnum}:${distro_bootpart} bootfstype; then run scan_dev_for_boot; fi; done
scan_dev_for_efi=setenv efi_fdtfile ${fdtfile}; for prefix in ${efi_dtb_prefixes}; do if test -e ${devtype} ${devnum}:${distro_bootpart} ${prefix}${efi_fdtfile}; then run load_efi_dtb; fi;done;if test -e ${devtype} ${devnum}:${distro_bootpart} efi/boot/bootaa64.efi; then echo Found EFI removable media binary efi/boot/bootaa64.efi; run boot_efi_binary; echo EFI LOAD FAILED: continuing...; fi; setenv efi_fdtfile
scan_dev_for_extlinux=if test -e ${devtype} ${devnum}:${distro_bootpart} ${prefix}${boot_syslinux_conf}; then echo Found ${prefix}${boot_syslinux_conf}; run boot_extlinux; echo SCRIPT FAILED: continuing...; fi
scan_dev_for_scripts=for script in ${boot_scripts}; do if test -e ${devtype} ${devnum}:${distro_bootpart} ${prefix}${script}; then echo Found U-Boot script ${prefix}${script}; run boot_a_script; echo SCRIPT FAILED: continuing...; fi; done
scriptaddr=0x80000000
scripthdraddr=0x80080000
scsi_boot=run scsi_init; if scsi dev ${devnum}; then devtype=scsi; run scan_dev_for_boot_part; fi
scsi_init=if ${scsi_need_init}; then scsi_need_init=false; scsi scan; fi
sd_bootcmd=echo Trying load from sd card..;mmcinfo; mmc read $load_addr $kernel_addr_sd $kernel_size_sd ;env exists secureboot && mmc read $kernelheader_addr_r $kernelhdr_addr_sd $kernelhdr_size_sd && esbc_validate ${kernelheader_addr_r};bootm $load_addr#$board
serverip=192.168.2.1
soc=fsl-layerscape
stderr=serial
stdin=serial
stdout=serial
usb_boot=usb start; if usb dev ${devnum}; then devtype=usb; run scan_dev_for_boot_part; fi
vendor=freescale
verify=no
Environment size: 4416/65532 bytes
Please configure the following command under u-boot
=>setenv bootcmd “ext2load mmc 0:2 0x81000000 Image; ext2load mmc 0:2 0x8f000000 fsl-ls1012a-rdb.dtb;booti 0x81000000 - 0x8f000000”
=>saveenv