zoukankan      html  css  js  c++  java
  • Bringup // Booting linux from QSPI 1024Mb // JTAG+tftp+sf篇

    ㈠ 过程预览

    ⑴ 生成QSPI Flash启动方式所需要的文件

    ① 生成preloader;

    ② 生成uboot;

    ③ 生成dtb;

    ④ 生成kernel;

    ⑤ 生成rootfs;

    ⑵ 上电烧写文件到QSPI Flash

    ① 设置BSEL/CSEL pin使用QSPI Flash启动;

    ② JTAG烧写preloader到QSPI Flash;

    ③ JTAG烧写uboot到QSPI Flash;

    ④ 配置HPS RGMII网口;

    ⑤ tftp下载并烧写dtb到QSPI Flash;

    ⑥ tftp下载并烧写kernel到QSPI Flash;

    ⑦ tftp下载并烧写rootfs文件QSPI Flash;

    ⑧ tftp下载并烧写fpga文件QSPI Flash;

    ⑶ 配置uboot环境变量

    ⑷ QSPI Flash booting log

    ㈡ 注意事项

    ⑴ TAG烧写Flash工具quartus_hps.exe要求文件名扩展名必须为*.bin,否则将会出错。

    quartus_hps -c 1 -o PV -a 0x60000 u-boot.img.bin

    Image(5)[4]

    quartus_hps -c 1 -o PV -a 0x60000 u-boot.img

    Image(6)[4]

    其它文件同理,故都需要增加扩展名为bin。

    ⑵ 由于JTAG理论速度是8Mbps,实际中往往达不到,对于14M字节左右的rootfs,烧写比较费时间。为节省时间也可以使用tftp通过RGMII口来sf命令烧写QSPI FLash。

    ㈢ 步骤细述


    ⑴ 生成QSPI Flash启动方式所需要的文件

    ① 生成preloader;

    命令:bsp-editor.exe

    Image(7)[4]

    C:altera13.1embeddedexampleshardwarecv_soc_devkit_ghrdhps_isw_handoffsoc_system_hps_0

    Image(8)[4]

    修改BOOT_FROM_QSPI

    Image(9)[4]

    命令:make

    Image(10)[4]

    ② 生成uboot;

    命令:make

    Image(11)[4]



    ③ 生成dtb;

    对于QSPI Flash大小:32MByte,每个分区的起始地址、大小及其功能,如下:

    Image(12)[4]

    故修改soc_system_qspi_flash_booting.dts如下:

    Image(13)[4]

    修改之后的dts文件:

    soc_system_qspi_flash_booting.dts

    命令:

    dtc -I dts -O dtb -o soc_system_qspi_flash_booting.dtb soc_system_qspi_flash_booting.dts

    Image(14)[4]

    生成的dtb:

    soc_system_qspi_flash_booting.dtb

    ④ 生成kernel;

    步骤⑤同时会生成kernel:

    Image(21)[4]

    ⑤ 生成rootfs;

    A)下载链接:

    http://releases.rocketboards.org/release/2013.11/gsrd/src/linux-socfpga-gsrd-13.1-src.bsx

    B)生成过程:

    Image(22)[4]

    C)生成后位置:

    Image(23)[4]

    ⑵ 上电烧写文件到QSPI Flash

    ① 设置BSEL/CSEL pin使用QSPI Flash启动;

    Image(15)[4]

    Image(16)[4]

    ② JTAG烧写preloader到QSPI Flash;

    命令:

    quartus_hps -c 1 -o PV -a 0x0000 preloader-mkpimage.bin

    Image(17)[4]

    ③ JTAG烧写uboot到QSPI Flash;

    命令:

    quartus_hps -c 1 -o PV -a 0x60000 u-boot.img.bin

    Image(18)[4]

    ④ 配置HPS RGMII网口;

    命令:

    set ethaddr 01:11:22:33:44:55

    setenv serverip 192.168.1.66

    setenv ipaddr 192.168.1.55

    saveenv

    Image(32)[4]

    ping $serverip

    Image(33)[4]

    ⑤ tftp下载并烧写dtb到QSPI Flash;

    A)tftp Server配置

    Image(34)[4]

    B)命令:

    tftp 0x1000000 soc_system_qspi_flash_booting.dtb

    Image(35)[4]

    C)命令:

    sf erase 0x50000 0x10000

    sf write 0x1000000 0x50000 0x10000

    Image(36)[4]

    ⑥ tftp下载并烧写kernel到QSPI Flash;

    命令:

    tftp 0x1000000 zImage

    Image(37)[4]

    擦除+烧写QSPI Flash命令:

    sf update 0x1000000 0xa0000 0x310000

    Image(38)[4]

    ⑦ tftp下载并烧写rootfs文件QSPI Flash;

    命令:

    tftp 0x1000000 altera-image-minimal-socfpga_cyclone5.jffs2

    Image(39)[4]

    擦除+烧写QSPI Flash命令:

    sf update 0x1000000 0x800000 0xb40000

    Image(40)[4]

    ⑧ tftp下载并烧写fpga文件QSPI Flash;

    命令:

    tftp 0x1000000 output_file.rbf

    Image(41)[4]

    擦除+烧写QSPI Flash命令:

    sf update 0x1000000 0x1800000 0x6b0000

    Image(42)[4]

    ⑶ 配置uboot环境变量

    命令:

    setenv qspifpgaaddr 0x1800000
    setenv qspifpga  sf probe ${qspiloadcs}; sf read ${fpgadata} ${qspifpgaaddr} ${fpgadatasize}; fpga load ${qspiloadcs} ${fpgadata} ${filesize};
    setenv bootcmd run qspifpga; run bridge_enable_handoff; run qspiload; run qspiboot
    saveenv

    Image(43)[4]

    ⑷ QSPI Flash booting log

    QSPI_Flash_booting_linux_RGMII.rar

    版权所有,盗版必究!!!
  • 相关阅读:
    SpringBoot笔记(一)
    线程同步(JAVA笔记-线程基础篇)
    图解JAVA线程的几个状态(JAVA笔记-线程基础篇)
    四种线程池的使用(JAVA笔记-线程基础篇)
    三种使用线程的方法(JAVA笔记-线程基础篇)
    图解数据结构——链表
    工作中Selenium常用方法汇总java版(工作笔记)
    【Spring】IoC容器
    【Spring】IoC容器
    【Spring】IoC容器
  • 原文地址:https://www.cnblogs.com/StevenZhan/p/Booting_Linux_from_QSPI_Flash_1024Mbit.html
Copyright © 2011-2022 走看看