Hi, everyone!
I’m trying to boot Linux from QSPI on Terasic SoCKit. I’ve reproduced steps from ‘BootTheArrowSoCKitFromQSPI’ document exept building Yocto root filesystem (I got errors while building rootfs in Yocto under Ubuntu 16 and under Ubuntu 12). So I use buildroot filesystem. Also I use arm-linux-gnueabihf from SoC EDS (16.1) tool chain to build Linux kernel (cloned from Rocketboards, version 4.1). MTD support is included in Linux kernel config file, mtd tools are included in buildroot as well. After flashing QSPI and booting from it I get a message “… Unable to mount rootfs…” I contacted Terasic support and they sent me all files to be flashed into QSPI : .dtb, .zImage, preloader_with_header,u-boot, altera-image-minimal-socfpga_cyclone5.jffs2. With all this files into QSPI I got following message: U-Boot SPL 2012.10 (Aug 01 2013 - 10:55:05) SDRAM : Initializing MMR registers SDRAM : Calibrationg PHY SEQ.C: Preparing to start memory calibration SEQ.C: CALIBRATION PASSED SF: Unsupported manufacturer 20 SPI probe failed.# ## ERROR# ## Please RESET the board# ## Here we see that U-Boot SPL release is 2012.10. However, in ‘BootTheArrowSoCKitFromQSPI’ 2013.01.01 release is mentioned. So I tried flashing my own preloader and u-boot and 3 other files from Terasic, but again got “Unable to mount rootfs…” error. Hope to get replies with useful information. Translate Expand Post FPGA Embedded SystemsIntel® SoC FPGA Embedded Development SuiteFinally I solve the problem. Many thanks to Terasic support team and Amy Zhou in particular. It turned out that socfpga_cyclone5_sockit.dts file in linux-socfpga folder didn’t contain correct definition of QSPI-flash (my SocKit board is equipped with N25Q512A). So I got from Terasic support a correct version of .dts (here I adduce not a whole file, but only QSPI definition):
&qspi { status = “okay”; flash0: n25q512a@0 { # address-cells = <1>; # size-cells = <1>; compatible = “n25q512a”; reg = <0>; /* chip select / spi-max-frequency = <100000000>; m25p,fast-read; page-size = <256>; block-size = <16>; / 2^16, 64KB / read-delay = <4>; / delay value in read data capture register / tshsl-ns = <50>; tsd2d-ns = <50>; tchsh-ns = <4>; tslch-ns = <4>; cdns,page-size = <256>; cdns,block-size = <16>; cdns,tshsl-ns = <50>; cdns,tsd2d-ns = <50>; cdns,tchsh-ns = <4>; cdns,tslch-ns = <4>; partition@qspi-boot { / 8MB for raw data. / label = “Flash 0 Raw Data”; reg = <0x0 0x800000>; }; partition@qspi-rootfs { / 56MB for jffs2 data. */ label = “Flash 0 jffs2 Filesystem”; reg = <0x00800000 0x03800000>; }; }; }; I couldn’t generate .dts file using sopc2dts command from SoC EDS shell as shown in ‘GSRD v13.1 - Booting from QSPI’ document on rocketboards.org because of error (“Dont parse…”). To build a preloader-with-qspi-header.img and u-boot.img I used SoC EDS 16.1 under Win 8. As a reference Quartus project a GHRD-project from SoCKit_v.3.0.0_SystemCD Demonstrations\Linux_BSP\Console\GHRD has been used. Under Ubuntu16 I cloned linux-socfpga : git clone https://github.com/altera-opensource/linux-socfpga.git I used linux 4.1 : git checkout socfpga-4.1. Also I installed SoC EDS 16.1 to use it cross-compiler to build a Kernel and a .dtb-file. To build a root filesystem a buildroot was used : git clone git:// git.buildroot.net/buildroot . I set Filesystem images-> jffs2 root filesystem - Flash Type - Parallel flash with 64 kb erase size. Finally I flashed preloader-with-qspi-header.img, u-boot.img, socfpga.dtb, zImage and rootfs.jffs2 into QSPI-flash according to ‘BootTheArrowSoCKitFromQSPI’ document using linux mtd_debug utility. After these steps I can boot Linux from QSPI-flash. Translate Expand Post <feeds_voting-positive-ballot class=“slds-item” data-data-rendering-service-uid=“166” data-aura-rendered-by=“462:264;a”><feeds_voting-vote-up-toggle>