petalinux 编译生成自定义.ko模块和app用户程序


一、清理并创建自定义目录

Clear the build area of the PetaLinux project for archiving as a BSP or for revision control. This example retains the images directory of the project.

zzz@ubuntu-GCP1820-SS:xilinx$  petalinux-build -x distclean
[INFO] building project
[INFO] sourcing bitbake
[INFO] generating user layers
[INFO] generating workspace directory
INFO: bitbake petalinux-user-image -c cleansstate
Loading cache: 100% 
...
NOTE: Executing RunQueue Tasks
NOTE: Tasks Summary: Attempted 2 tasks of which 0 didn't need to be rerun and all succeeded.
[INFO] successfully built project
zzz@ubuntu-GCP1820-SS:xilinx$
zzz@ubuntu-GCP1820-SS:xilinx$
zzz@ubuntu-GCP1820-SS:xilinx$ petalinux-create -t apps -n one-wire-app --enable 
zzz@ubuntu-GCP1820-SS:xilinx$  # 其中one-wire-app是笔者应用程序的名字。而--enable参数则是使能对应用程序的编译,这样就不用再次去rootfs下再次启动配置。
zzz@ubuntu-GCP1820-SS:xilinx$  # 打开目录<工程根目录>/project-spec/meta-user/recipes-apps/myapp,可以看到file下存放着你的源码,可以根据自己的需求,直接替换
zzz@ubuntu-GCP1820-SS:xilinx$ petalinux-create -t modules --name one-wire --enable
zzz@ubuntu-GCP1820-SS:xilinx$  # 创建并使能自定义驱动模块 one-wire 的编译
zzz@ubuntu-GCP1820-SS:xilinx$  # 打开目录<工程根目录>/project-spec/meta-user/recipes-bsp/device-tree/files, 修改设备树文件 system-user.dtsi
zzz@ubuntu-GCP1820-SS:xilinx$
zzz@ubuntu-GCP1820-SS:xilinx$ cat system-user.dtsi
/include/ "system-conf.dtsi"
/ {
        model = "ZynqMP ZU19EG ShireA Rev0.0.9";

        aliases {
                serial0 = &uart0;
                spi0 = &qspi;
                mmc0=&sdhci0;
        };
        ...
                
                one_wire: onewire@80001000 {
                        compatible = "xxx,one-wire-1.0.0";
                        reg = <0x0 0x80001000 0x0 0x1000>;
                };
...
zzz@ubuntu-GCP1820-SS:xilinx$
zzz@ubuntu-GCP1820-SS:xilinx$

二、编译内核模块和用户程序

zzz@ubuntu-GCP1820-SS:xilinx$ petalinux-build -c one-wire     #only for one-wire moudule                   
[INFO] building one-wire
[INFO] generating Kconfig for project
[INFO] silentconfig project
[INFO] sourcing bitbake
[INFO] generating plnxtool conf
[INFO] generating meta-plnx-generated layer
[INFO] generating machine configuration
[INFO] generating bbappends for project . This may take time ! 
[INFO] generating u-boot configuration files
[INFO] generating kernel configuration files
[INFO] generating user layers
[INFO] generating workspace directory
[INFO] generating kconfig for Rootfs
[INFO] silentconfig rootfs
[INFO] generating petalinux-user-image.bb
INFO: bitbake one-wire
...
NOTE: Successfully copied built images to tftp dir: /tftpboot
[INFO] successfully built one-wire
zzz@ubuntu-GCP1820-SS:xilinx$
zzz@ubuntu-GCP1820-SS:xilinx$
zzz@ubuntu-GCP1820-SS:xilinx$  find . -name "one-wire.ko" #已找到 one-wire 模块
./build/tmp/sysroots-components/plnx_zynqmp/one-wire/lib/modules/4.19.0-xilinx-v2019.2/extra/one-wire.ko
zzz@ubuntu-GCP1820-SS:xilinx$
zzz@ubuntu-GCP1820-SS:xilinx$
zzz@ubuntu-GCP1820-SS:xilinx$ ll ./build/tmp/sysroots-components/plnx_zynqmp/one-wire/lib/modules/4.19.0-xilinx-v2019.2/extra/one-wire.ko
-rw-r--r-- 1 zzz zzz 12880 43 12:16 ./build/tmp/sysroots-components/plnx_zynqmp/one-wire/lib/modules/4.19.0-xilinx-v2019.2/extra/one-wire.ko
zzz@ubuntu-GCP1820-SS:xilinx$  # 当前是最新编译出来的 one-wire 模块 
zzz@ubuntu-GCP1820-SS:xilinx$
zzz@ubuntu-GCP1820-SS:xilinx$
zzz@ubuntu-GCP1820-SS:xilinx$  # 编译 one-wire-app 应用程序, 并将应用程序安装到系统中
zzz@ubuntu-GCP1820-SS:xilinx$ petalinux-build -c one-wire-app -x do_install                    
[INFO] building one-wire-app
[INFO] sourcing bitbake
[INFO] generating user layers
...
Time: 0:00:00
Sstate summary: Wanted 4 Found 0 Missed 8 Current 32 (0% match, 88% complete)
NOTE: Executing SetScene Tasks
NOTE: Executing RunQueue Tasks
NOTE: Tasks Summary: Attempted 267 tasks of which 267 didn't need to be rerun and all succeeded.
INFO: Copying Images from deploy to images
[Errno 13] Permission denied: '/tftpboot/Image'
NOTE: Successfully copied built images to tftp dir: /tftpboot
[INFO] successfully built one-wire-app
zzz@ubuntu-GCP1820-SS:xilinx$ 
zzz@ubuntu-GCP1820-SS:xilinx$ 
zzz@ubuntu-GCP1820-SS:xilinx$ 
zzz@ubuntu-GCP1820-SS:xilinx$ petalinux-build -c rootfs
[INFO] building rootfs
[INFO] sourcing bitbake
[INFO] generating user layers
[INFO] generating workspace directory
...
NOTE: Successfully copied built images to tftp dir: /tftpboot
[INFO] successfully built rootfs
zzz@ubuntu-GCP1820-SS:xilinx$ 
zzz@ubuntu-GCP1820-SS:xilinx$ 
zzz@ubuntu-GCP1820-SS:xilinx$ 
zzz@ubuntu-GCP1820-SS:xilinx$ petalinux-build -x package
[INFO] building project
[INFO] sourcing bitbake
[INFO] generating user layers
[INFO] generating workspace directory
INFO: bitbake virtual/kernel
...
NOTE: Successfully copied built images to tftp dir: /tftpboot
[INFO] successfully built project
zzz@ubuntu-GCP1820-SS:xilinx$ 
zzz@ubuntu-GCP1820-SS:xilinx$ 

三、编译设备树和整个工程

zzz@ubuntu-GCP1820-SS:xilinx$ petalinux-build -c device-tree  #only for device-tree
[INFO] building device-tree
[INFO] sourcing bitbake
[INFO] generating user layers
[INFO] generating workspace directory
...
[INFO] successfully built device-tree
zzz@ubuntu-GCP1820-SS:xilinx$ 
zzz@ubuntu-GCP1820-SS:xilinx$ 
zzz@ubuntu-GCP1820-SS:xilinx$ 
zzz@ubuntu-GCP1820-SS:xilinx$ petalinux-build   #for all
[INFO] building project
[INFO] sourcing bitbake
[INFO] generating user layers
[INFO] generating workspace directory
INFO: bitbake petalinux-user-image
Loading cache: 100% 
...
[Errno 13] Permission denied: '/tftpboot/Image'
NOTE: Successfully copied built images to tftp dir: /tftpboot
[INFO] successfully built project
zzz@ubuntu-GCP1820-SS:xilinx$ 
zzz@ubuntu-GCP1820-SS:xilinx$ 

四、制作 BOOT.BIN 文件

zzz@ubuntu-GCP1820-SS:xilinx$ petalinux-package --boot --format BIN --fsbl --pmufw  --fpga  --u-boot --output  BOOT.BIN --force              
INFO: File in BOOT BIN: "/home/zzz/petalinux/xilinx/images/linux/zynqmp_fsbl.elf"
INFO: File in BOOT BIN: "/home/zzz/petalinux/xilinx/images/linux/pmufw.elf"
INFO: File in BOOT BIN: "/home/zzz/petalinux/xilinx/project-spec/hw-description/evt2_shireA_V11_000017.bit"
INFO: File in BOOT BIN: "/home/zzz/petalinux/xilinx/images/linux/bl31.elf"
INFO: File in BOOT BIN: "/home/zzz/petalinux/xilinx/images/linux/u-boot.elf"
INFO: Generating zynqmp binary package BOOT.BIN...


****** Xilinx Bootgen v2019.2
  **** Build date : Oct 23 2019-22:59:42
    ** Copyright 1986-2019 Xilinx, Inc. All Rights Reserved.

INFO: Binary is ready.
zzz@ubuntu-GCP1820-SS:xilinx$ 
zzz@ubuntu-GCP1820-SS:xilinx$ 
zzz@ubuntu-GCP1820-SS:xilinx$ ll images/linux/ -htr
total 714M
-rw-r--r--  1 zzz zzz  20M 125  2020 system.bit
drwxrwxr-x  2 zzz zzz 4.0K 322 15:11 pxelinux.cfg/
drwxrwxr-x  3 zzz zzz 4.0K 322 15:11 ../
-rwxr-xr-x  1 zzz zzz 176M 326 18:54 sdk.sh*
drwxr-xr-x 17 zzz zzz 4.0K 329 11:44 rootfs/
drwxrwxr-x  5 zzz zzz 4.0K 329 14:30 .Xil/
-rw-rw-r--  1 zzz zzz  21M 43 11:50 boot.bin
-rw-r--r--  1 zzz zzz  66M 43 12:33 Image
-rw-r--r--  1 zzz zzz 303M 43 12:33 vmlinux
-rw-r--r--  1 zzz zzz 3.3M 43 12:33 System.map.linux
-rw-r--r--  1 zzz zzz  25M 43 12:33 image.ub
-rw-r--r--  1 zzz zzz 130K 43 12:33 zynqmp_fsbl.elf
-rw-r--r--  1 zzz zzz 665K 43 12:33 u-boot.elf
-rw-r--r--  1 zzz zzz 600K 43 12:33 u-boot.bin
-rw-r--r--  1 zzz zzz 598K 43 13:03 rootfs.testdata.json
-rw-r--r--  1 zzz zzz 9.2K 43 13:03 rootfs.manifest
-rw-r--r--  1 zzz zzz 6.9M 43 13:03 rootfs.tar.gz
-rw-r--r--  1 zzz zzz  49M 43 13:03 rootfs.cpio
-rw-r--r--  1 zzz zzz 6.9M 43 13:03 rootfs.cpio.gz
-rw-r--r--  1 zzz zzz 6.9M 43 13:03 rootfs.cpio.gz.u-boot
-rw-r--r--  1 zzz zzz  12M 43 13:03 rootfs.jffs2
drwxrwxr-x  5 zzz zzz 4.0K 43 13:07 ./
-rw-rw-r--  1 zzz zzz  21M 43 14:45 BOOT.BIN
zzz@ubuntu-GCP1820-SS:xilinx$ 

参考链接
参考链接
参考链接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值