Fast Development Kit(FDK)-嵌入式Linux开发包介绍

设计思想

我们启动一个嵌入式Linux系统需要什么,下面这4个是最基本的配置项。

  1. uboot
  2. kernel
  3. 根文件系统
  4. 设备树

通常的启动流程为:

uboot -> kernel

对于一些SOC来说,它的内部SRAM可能会比较小(比如freescale T2080的512KB),小到无法装载下一个完整的uboot镜像,那么就需要spl(Secondary Program Loader),它主要负责初始化外部RAM和环境,并加载真正的uboot镜像到外部RAM中来执行。此时的启动流程为:

spl -> uboot -> kernel

另外,根据板卡或者的特性,还需要额外的配置项。比如xilinx zynq,zynq内部包含了一个双核A9 ARM(PS),和一个FPGA(PL),相当于CPU+FPGA的板卡,这里的CPU可以是i.MX8等,FPGA正常工作需要下载配置文件,在CPU FPGA分立的板子上,FPGA配置文件可由自己配置Flash单独加载,在zynq里,这个工作由PS部分负责。xilinx zynq的spl不是uboot中的的spl,而是官方开发的称之为fsbl程序,fsbl可以下载PL,加载uboot,但uboot也可以加载PL,如果zynq里用到PL部分,则启动流程为:

fsbl -> pl -> uboot -> kernel

或,

fsbl -> uboot -> pl -> kernel

对于xilinx zynq ultrascale+,多了pmu(peripheral manage unit)firmware和atf(arm trusted firmware),启动流程为:

fsbl -> pmu firmware -> atf -> uboot -> pl -> kernel

文件目录组织

bsp目录如下,对应不同的平台的bsp子目录,包含uboot,内核等源代码等。

zc@ubuntu:~/program/fdk$ ls -l bsp
total 16
drwxr-xr-x 6 zc zc 4096 Jan 17 16:20 t2080
drwxrwxr-x 4 zc zc 4096 Jan  8 11:03 x86
drwxrwxr-x 7 zc zc 4096 Jan 17 16:20 zynq
drwxrwxr-x 9 zc zc 4096 Jan 22 20:07 zynqmp

zynqmp平台的bsp,包含所有用到的配置项的源代码。

zc@ubuntu:~/program/fdk$ ls -l bsp/zynqmp/
total 14608
drwxrwxr-x 18 zc zc    4096 Dec  5 17:09 arm-trusted-firmware-v2018.2
drwxrwxr-x 67 zc zc    4096 May 30  2018 device-tree-xlnx-v2018.2
drwxrwxr-x  7 zc zc    4096 Dec  5 17:09 embeddedsw-v2018.2
drwxrwxr-x 26 zc zc    4096 Feb 18 14:29 linux-xlnx-v2018.2
drwxrwxr-x  7 zc zc    4096 Dec 12 16:58 package-v2018.2
-rw-rw-r--  1 zc zc     181 Jan 17 16:20 readme.txt
-rw-r--r--  1 zc zc 7428054 Dec 25 09:41 rootfs-v2018.2.cpio.gz
-rw-r--r--  1 zc zc 7494357 Dec 25 09:41 rootfs-v2018.2.ext4.gz
drwxrwxr-x 25 zc zc    4096 Jan 24 11:40 u-boot-xlnx-v2018.2

zynq平台的bsp,包含所有用到的配置项的源代码。

zc@ubuntu:~/program/fdk$ ls -l bsp/zynq
total 6216
drwxrwxr-x 57 zc zc    4096 Jun 26  2015 device-tree-xlnx-v2015.2.1
drwxrwxr-x  7 zc zc    4096 Dec  5 17:09 embeddedsw-v2018.2
drwxrwxr-x 24 zc zc    4096 Jan 22 20:01 linux-xlnx-v2015.2.1
drwxrwxr-x  7 zc zc    4096 Dec 12 16:58 package-v2015.2.1
-rw-rw-r--  1 zc zc     181 Jan 17 16:20 readme.txt
-rw-rw-r--  1 zc zc 6336565 Dec 24 11:04 rootfs-v2015.2.1.cpio.gz
drwxrwxr-x 22 zc zc    4096 Jan 16 19:46 u-boot-xlnx-v2015.2.1

t2080平台的bsp,包含所有用到的配置项的源代码。

zc@ubuntu:~/program/fdk$ ls -l bsp/t2080/
total 32448
drwxrwxr-x  2 zc zc     4096 Dec  5 17:09 device-tree-qoriq-v2.0
drwxrwxr-x 24 zc zc     4096 Feb 14 17:28 linux-qoriq-v2.0
drwxrwxr-x  7 zc zc     4096 Jan 15 19:09 package-v2.0
-rw-rw-r--  1 zc zc      181 Jan 17 16:20 readme.txt
-rw-r--r--  1 zc zc 33203510 Jan 15 18:52 rootfs-v2.0.ext2.gz
drwxrwxr-x 22 zc zc     4096 Jan 23 21:22 u-boot-qoriq-v2.0

x86平台的bsp,适用于ubuntu16.04.4操作系统。

zc@ubuntu:~/program/fdk$ ls -l bsp/x86/
total 8
drwxrwxr-x 29 zc zc 4096 Jan 10 16:09 linux-source-4.13.0
drwxrwxr-x  7 zc zc 4096 Jan  8 11:03 package-v16.04.4

settings.sh为环境变量脚本,fdk为编译工具,其实有了上面的源代码,进入代码目录执行makemake install,用不用这套编译工具无所谓,这些是嵌入式Linux的基本操作。

zc@ubuntu:~/program/fdk$ ls -l
total 120
drwxrwxr-x 6 zc zc   4096 Feb 19 10:17 bsp
drwxrwxr-x 2 zc zc   4096 Dec 25 15:19 etc
-rwxrwxr-x 1 zc zc 109632 Jan 22 20:28 fdk
-rwxrwxr-x 1 zc zc   2344 Jan 22 19:33 settings.sh

revision

2020年02月24日 19:10:52

qe@ubuntu:~/project/fdk/mwm1127$ fdk -h
Usage: fdk [OPTION...]

Examples:

fdk -t xilinx -p ~/x.hdf           # Create workspace in current path.
fdk -t xilinx -p ~/x.hdf -s ~/mwm  # Create workspace in ~/mwm.
fdk -c kernel menu                 # Open kernel menuconfig.
fdk -c uboot menu                  # Open kernel menuconfig.
fdk -b all                         # Build all component of project.
fdk -b kernel                      # Build kernel of project.
fdk -b uboot                       # Build uboot of project.
fdk -d all                         # Clean all component of project.
fdk -d kernel                      # Clean kernel of project.
fdk -d uboot                       # Clean uboot of project.
fdk -k boot mini                   # Packet BOOT.BIN for xilinx in [mini] mode.
fdk -k boot normal -g ./mwm.bit    # Packet BOOT.BIN for xilinx in [normal] mode.
fdk -k dftfs ext4                  # Install default rootfs ext4 image.
fdk -k rootfs ext4                 # Packet rootfs into ext4 image.
fdk -k fit zImage                  # Packet FIT image.
fdk -h                             # Show help
fdk -v                             # Show version information.
fdk -k dftfs cpio && fdk -k fsroot cpio && fdk -k fsapp && fdk -k fslibso && fdk -b modules_install && fdk -k fsmod && fdk -k fsdpm && fdk -k rootfs ext4 && fdk -k fsurd ext4

Main operation mode:

  -t <target>:            project target[xilinx, zynq, zynqmp, t2080, x86, ft1500a, ft2000ahk, ls2k1000, hi3531d]
                            [xilinx] can automatically identify the target [zynq] or [zynqmp]
  -s <path>:              workspace path
  -p <path>:              hdf path, for target xilinx
  -u <component>:         update component[fsbl, pmufw, dts]
  -c <component> <mode>:  config component[uboot, kernel] with mode[init, menu]
  -b <component>:         build component[all | fsbl, pmufw, atf, uboot, kernel, dtb, dts]
                                misc[ubootenvtool, modules, modules_install]
  -d <component>:         clean component[all | fsbl, pmufw, atf, uboot, kernel]
                                bsp[bsp]
                                note: if clean kernel, then exec -c init
  -k <type> <mode>:       packet image with type[boot, rootfs, fit]
                            boot:     packet bootloader for xilinx device with mode[mini, normal]
                                        mini: fsbl and uboot for zynq
                                              fsbl, pmufw, atf, uboot for zynqmp
                                        normal: mode[mini] + FPGA bitstream
                            rootfs:   packet rootfs with mode[all | cpio, ext2, ext4, jffs2, ubifs]
                            fsroot:   extract rootfs from type[cpio, ext2, ext4]
                            dftfs:    install default rootfs with mode[all | cpio, ext2, ext4]
                            fsdft:    set project rootfs as default rootfs with mode[all | cpio, ext2, ext4]
                            rawdft:   set raw rootfs as default rootfs with mode[all | cpio, ext2, ext4]
                            fsurd:    packet rootfs into uboot format[all | cpio, ext2, ext4]
                            fsapp:    install app into project rootfs
                            fslibso:  install lib *.so into project rootfs
                            fsmod:    install module into project rootfs
                            fsdpm:    depmod project rootfs
                            fit:      packet kernel, rootfs and dtb
                                        Image: kernel Image for zynqmp
                                        zImage: kernel zImage for zynq
                                        gzip: compress kernel Image with gzip for zynqmp
                            uImage:   packet kernel into uImage format
                            bootfs:   install boot image into rootfs
                            update:   create rootfs update package
  -g <path>:              bit path, when packet boot image in normal mode
  -h:                     show this help
  -v:                     show version information

[1]+  Done                    gedit zynq_dts/system-top.dts
qe@ubuntu:~/project/fdk/mwm1127$ fdk -v
Version:

fdk path:          /home/qe/program/fdk
fdk version:       1.0.0
petalinux path:    /home/qe/program/petalinux-v2015.2.1-final
petalinux version: 2015.2.1

Revision:

fdk is a fast developing kit for embedded linux
    target for xilinx[zynq/zynqmp]
               nxp[t2080]
               x86
               phytium[ft1500a/ft2000ahk]
Time          Author        Revision
2018-09-17    Zhu Ce        Initial release, support xilinx zynqmp with petalinux-v2017.4
2018-10-02    Zhu Ce        Add support for xilinx zynq with petalinux-v2017.4
2018-10-05    Zhu Ce        Add support for nxp t2080 with qoriq-sdk-2.0
2018-11-01    Zhu Ce        Add support for xilinx zynq with petalinux-v2015.2.1
2018-11-20    Zhu Ce        Add support for xilinx zynqmp with petalinux-v2018.2
2019-07-28    Zhu Ce        Add support for phytium ft1500a with kylin-4.0
2019-11-08    Zhu Ce        Add support for phytium ft2000ahk with kylin-4.0
2019-11-29    Zhu Ce        Add support for ls2k1000
2019-12-26    Zhu Ce        Add support for hi3531d

2018年11月20日 10:22:40

添加对Xilinx zynqmp petalinux-v2018.2的支持。

$ fdk -h
Usage: fdk [OPTION...]

Examples:

fdk -t xilinx -p ~/x.hdf           # Create workspace in current path.
fdk -t xilinx -p ~/x.hdf -s ~/mwm  # Create workspace in ~/mwm.
fdk -c kernel menu                 # Open kernel menuconfig.
fdk -c uboot menu                  # Open kernel menuconfig.
fdk -b all                         # Build all component of project.
fdk -b kernel                      # Build kernel of project.
fdk -b uboot                       # Build uboot of project.
fdk -d all                         # Clean all component of project.
fdk -d kernel                      # Clean kernel of project.
fdk -d uboot                       # Clean uboot of project.
fdk -k boot mini                   # Packet BOOT.BIN for xilinx in [mini] mode.
fdk -k boot normal -g ./mwm.bit    # Packet BOOT.BIN for xilinx in [normal] mode.
fdk -k dftfs ext4                  # Install default rootfs ext4 image.
fdk -k rootfs ext4                 # Packet rootfs into ext4 image.
fdk -k fit zImage                  # Packet FIT image.
fdk -h                             # Show help
fdk -v                             # Show version information.

Main operation mode:

  -t <target>:            project target[xilinx, nxp]
  -s <path>:              workspace path
  -p <path>:              hdf path, for target xilinx
  -u <component>:         update component[fsbl, pmufw, dts]
  -c <component> <mode>:  config component[uboot, kernel] with mode[init, menu]
  -b <component>:         build component[all | fsbl, pmufw, atf, uboot, kernel, dtb, dts]
                                misc[ubootenvtool, modules, modules_install]
  -d <component>:         clean component[all | fsbl, pmufw, atf, uboot, kernel]
                                bsp[bsp]
  -k <type> <mode>:       packet image with type[boot, rootfs, fit]
                            boot:     packet bootloader for xilinx device with mode[mini, normal]
                                        mini: fsbl and uboot for zynq
                                              fsbl, pmufw, atf, uboot for zynqmp
                                        normal: mode[mini] + FPGA bitstream
                            rootfs:   packet rootfs with mode[all | cpio, ext2, ext4]
                            fsroot:   extract rootfs from type[cpio, ext2, ext4]
                            dftfs:    install default rootfs with mode[all | cpio, ext2, ext4]
                            fsdft:    set project rootfs as default rootfs with mode[all | cpio, ext2, ext4]
                            fsurd:    packet rootfs into uboot format[all | cpio, ext2, ext4]
                            fsapp:    install app into project rootfs
                            fslibso:  install lib *.so into project rootfs
                            fsmod:    install module into project rootfs
                            fsdpm:    depmod project rootfs
                            fit:      packet kernel, rootfs and dtb
                                        Image: kernel Image for zynqmp
                                        zImage: kernel zImage for zynq
                                        gzip: compress kernel Image with gzip for zynqmp
                            uImage:   packet kernel into uImage format
  -g <path>:              bit path, when packet boot image in normal mode
  -h:                     show this help
  -v:                     show version information

$ fdk -v
Version:

fdk path:          /home/zc/program/fdk
fdk version:       1.0.0
petalinux path:    /home/zc/program/petalinux-v2018.2-final
petalinux version: 2018.2

Revision:

fdk is a fast developing kit for embedded linux, target for xilinx[zynq/zynqmp], nxp[t2080]
Time          Author        Revision
2018-09-17    Zhu Ce        Initial release, support xilinx zynqmp with petalinux-v2017.4
2018-10-02    Zhu Ce        Add support for xilinx zynq with petalinux-v2017.4
2018-10-05    Zhu Ce        Add support for nxp t2080 with qoriq-sdk-2.0
2018-11-01    Zhu Ce        Add support for xilinx zynq with petalinux-v2015.2.1
2018-11-20    Zhu Ce        Add support for xilinx zynqmp with petalinux-v2018.2

在这里插入图片描述

2018年11月01日 11:01:40

添加对Xilinx zynq petalinux-v2015.2.1的支持。

$ fdk -h
Usage: fdk [OPTION...]

Examples:

fdk -t xilinx -p ~/x.hdf           # Create workspace in current path.
fdk -t xilinx -p ~/x.hdf -s ~/mwm  # Create workspace in ~/mwm.
fdk -c kernel menu                 # Open kernel menuconfig.
fdk -c uboot menu                  # Open kernel menuconfig.
fdk -b all                         # Build all component of project.
fdk -b kernel                      # Build kernel of project.
fdk -b uboot                       # Build uboot of project.
fdk -d all                         # Clean all component of project.
fdk -d kernel                      # Clean kernel of project.
fdk -d uboot                       # Clean uboot of project.
fdk -k boot mini                   # Packet BOOT.BIN for xilinx in [mini] mode.
fdk -k boot normal -g ./mwm.bit    # Packet BOOT.BIN for xilinx in [normal] mode.
fdk -k dftfs ext4                  # Install default rootfs ext4 image.
fdk -k rootfs ext4                 # Packet rootfs into ext4 image.
fdk -k fit zImage                  # Packet FIT image.

Main operation mode:

  -t <target>:            project target[xilinx, nxp]
  -s <path>:              workspace path
  -p <path>:              hdf path, for target xilinx
  -u <component>:         update component[fsbl, pmufw, dts]
  -c <component> <mode>:  config component[uboot, kernel] with mode[init, menu]
  -b <component>:         build component[all | fsbl, pmufw, atf, uboot, kernel, dtb, dts]
                                misc[ubootenvtool]
  -d <component>:         clean component[all | fsbl, pmufw, atf, uboot, kernel]
                                bsp[bsp]
  -k <type> <mode>:       packet image with type[boot, rootfs, fit]
                            boot:   packet bootloader for xilinx device with mode[mini, normal]
                                      mini: fsbl and uboot for zynq
                                            fsbl, pmufw, atf, uboot for zynqmp
                                      normal: mode[mini] + FPGA bitstream
                            rootfs: packet rootfs with mode[all | cpio, ext4]
                            dftfs:  install default rootfs with mode[all | cpio, ext4]
                            fit:    packet kernel, rootfs and dtb
                                      Image: kernel Image for zynqmp
                                      zImage: kernel zImage for zynq
                                      gzip: compress kernel Image with gzip for zynqmp
                            uImage: packet kernel into uImage format
                            urd:    packet rootfs into uboot format
  -g <path>:              bit path, when packet boot image in normal mode
  -h:                     show this help

Revision:

fdk is a fast developing kit for embedded linux, target for xilinx[zynq/zynqmp], nxp[t2080]
Time          Author        Revision
2018-09-17    Zhu Ce        Initial release, support xilinx zynqmp with petalinux-v2017.4
2018-10-02    Zhu Ce        Add support for xilinx zynq with petalinux-v2017.4
2018-10-05    Zhu Ce        Add support for nxp t2080 with qoriq-sdk-2.0
2018-11-01    Zhu Ce        Add support for xilinx zynq with petalinux-v2015.2.1

在这里插入图片描述

2018年10月06日 22:54:40

添加对NXP(Freescale) T2080的支持,尚未在项目中验证验证。

zc@ubuntu:~/fdk_develope$ fdk -h
Usage: fdk [OPTION...]

Examples:

fdk -t xilinx -p ~/hdf             # Create workspace in current path.
fdk -t xilinx -p ~/hdf -s ~/mwm    # Create workspace in ~/mwm.
fdk -c kernel menu                 # Open kernel menuconfig.
fdk -c uboot menu                  # Open kernel menuconfig.
fdk -b all                         # Build all component of project.
fdk -b kernel                      # Build kernel of project.
fdk -b uboot                       # Build uboot of project.
fdk -d all                         # Clean all component of project.
fdk -d kernel                      # Clean kernel of project.
fdk -d uboot                       # Clean uboot of project.
fdk -k boot mini                   # Packet BOOT.BIN for xilinx in [mini] mode.
fdk -k boot normal -g ./mwm.bit    # Packet BOOT.BIN for xilinx in [normal] mode.
fdk -k rootfs                      # Packet rootfs.
fdk -k fit                         # Packet FIT image.

Main operation mode:

  -t <target>:            project target[xilinx, nxp]
  -s <path>:              workspace path
  -p <path>:              hdf path, for target xilinx
  -u <component>:         update component[fsbl, pmufw, dts]
  -c <component> <mode>:  config component[uboot, kernel] with mode[init, menu]
  -b <component>:         build component[all | fsbl, pmufw, atf, uboot, kernel, dtb, dts]
                                misc[ubootenvtool]
  -d <component>:         clean component[all | fsbl, pmufw, atf, uboot, kernel]
                                bsp[bsp]
  -k <type> <mode>:       packet image with type[boot, rootfs, fit]
                            boot:   packet bootloader for xilinx device with mode[mini, normal]
                                      mini: fsbl and uboot for zynq
                                            fsbl, pmufw, atf, uboot for zynqmp
                                      normal: mode[mini] + FPGA bitstream
                            rootfs: packet rootfs with mode[all | cpio, ext4]
                            fit:    packet kernel, rootfs and dtb
  -g <path>:              bit path, when packet boot image in normal mode
  -h:                     show this help

Revision:
fdk is a fast developing kit for embedded linux, target for xilinx[zynq/zynqmp], nxp[t2080]
Time          Author        Revision
2018-09-17    Zhu Ce        Initial release, support xilinx zynqmp with petalinux-v2017.4
2018-10-02    Zhu Ce        Add support for xilinx zynq with petalinux-v2017.4
2018-10-05    Zhu Ce        Add support for nxp t2080 with qoriq-sdk-2.0

2018年10月03日 18:54:40

自己实践中总结的一套开发工具,包括了常用的工具集我已经制作好发布在根文件系统中,目前支持Xilinx zynq,Xilinx zynqmp,NXP t2080的支持在下一步开发计划中,目前支持功能如下,

zc@ubuntu:~/fdk_develope$ fdk -h
Usage: fdk [OPTION...]

Examples:

fdk -t xilinx -p ~/hdf             # Create workspace in current path.
fdk -t xilinx -p ~/hdf -s ~/mwm    # Create workspace in ~/mwm.
fdk -c kernel menu                 # Open kernel menuconfig.
fdk -c uboot menu                  # Open kernel menuconfig.
fdk -b all                         # Build all component of project.
fdk -b kernel                      # Build kernel of project.
fdk -b uboot                       # Build uboot of project.
fdk -d all                         # Clean all component of project.
fdk -d kernel                      # Clean kernel of project.
fdk -d uboot                       # Clean uboot of project.
fdk -k boot mini                   # Packet BOOT.BIN for xilinx in [mini] mode.
fdk -k boot normal -g ./mwm.bit    # Packet BOOT.BIN for xilinx in [normal] mode.
fdk -k rootfs                      # Packet rootfs.
fdk -k fit                         # Packet FIT image.

Main operation mode:

  -t <target>:            project target[xilinx, nxp]
  -s <path>:              workspace path
  -p <path>:              hdf path, for target xilinx
  -u <component>:         update component[fsbl, pmufw, dts]
  -c <component> <mode>:  config component[uboot, kernel] with mode[init, menu]
  -b <component>:         build component[all | fsbl, pmufw, atf, uboot, kernel, dtb, dts]
                                misc[ubootenvtool]
  -d <component>:         clean component[all | fsbl, pmufw, atf, uboot, kernel]
                                bsp[bsp]
  -k <type> <mode>:       packet image with type[boot, rootfs, fit]
                            boot:   packet bootloader for xilinx device with mode[mini, normal]
                                      mini: fsbl and uboot for zynq
                                            fsbl, pmufw, atf, uboot for zynqmp
                                      normal: mode[mini] + FPGA bitstream
                            rootfs: packet rootfs with mode[all | cpio, ext4]
                            fit:    packet kernel, rootfs and dtb
  -g <path>:              bit path, when packet boot image in normal mode
  -h:                     show this help

Revision:
fdk is a fast developing kit for embedded linux, target for xilinx[zynq/zynqmp], nxp[t2080]
Time          Author        Revision
2018-09-17    Zhu Ce        Initial release, support xilinx zynqmp with petalinux-v2017.4
2018-10-02    Zhu Ce        Add support for xilinx zynq with petalinux-v2017.4

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值