前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PetaLinux学习笔记 1

PetaLinux学习笔记 1

作者头像
全栈程序员站长
发布2022-10-01 15:50:43
4610
发布2022-10-01 15:50:43
举报

大家好,又见面了,我是你们的朋友全栈君。

底板迟迟做不出来,所以只能把Linux写到FLASH上了。还好这个FLASH够大。使用的命令和黑金的官方教程有一点不一样,最后也算是可以从FLASH启动了,但是接下来发现没有外设只有串口也不怎么好玩。

后来还是买了底板。。。 记录一下创建一个工程以及遇到的问题吧。

设置环境:

代码语言:javascript
复制
source /opt/pkg/petalinux/settings.sh
source /opt/Vivado/2018.3/settings64.sh

创建工程

代码语言:javascript
复制
$ petalinux-create --type project --template zynq --name project_1.petalinux
INFO: Create project: project_1.petalinux
INFO: New project successfully created in /home/godenfreemans/FTP_Folder/project_1/project_1.petalinux

导入硬件描述文件

代码语言:javascript
复制
$ petalinux-config --get-hw-description ../project_1.sdk
INFO: Getting hardware description...
INFO: Rename design_1_wrapper.hdf to system.hdf
[INFO] generating Kconfig for project
[INFO] menuconfig project


*** End of the configuration.
*** Execute 'make' to start the build or try 'make help'.

[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 kconfig for Rootfs
[INFO] oldconfig rootfs
[INFO] generating petalinux-user-image.bb

没有做什么配置,都是默认

编译 配置一下多线程编译,这样快一点。

代码语言:javascript
复制
$ petalinux-config
→ Yocto Settings → Parallel thread execution

(12) sets number of bb threads (BB_NUMBER_THREADS)
(12) sets number of parallel make -j (PARALLEL_MAKE)

编译

代码语言:javascript
复制
$ petalinux-build
[INFO] building project
[INFO] sourcing bitbake
INFO: bitbake petalinux-user-image
Loading cache: 100% |##############################################################################################################| Time: 0:00:00
Loaded 3444 entries from dependency cache.
Parsing recipes: 100% |############################################################################################################| Time: 0:00:03
Parsing of 2569 .bb files complete (2536 cached, 33 parsed). 3445 targets, 149 skipped, 0 masked, 0 errors.
NOTE: Resolving any missing task queue dependencies
Initialising tasks: 100% |#########################################################################################################| Time: 0:00:06
Checking sstate mirror object availability: 100% |#################################################################################| Time: 0:00:09
NOTE: Executing SetScene Tasks
NOTE: Executing RunQueue Tasks
WARNING: petalinux-user-image-1.0-r0 do_rootfs: [log_check] petalinux-user-image: found 1 warning message in the logfile:
[log_check] warning: %post(sysvinit-inittab-2.88dsf-r10.plnx_zynq7) scriptlet failed, exit status 1

NOTE: Tasks Summary: Attempted 3065 tasks of which 3061 didn't need to be rerun and all succeeded.

Summary: There was 1 WARNING message shown.
INFO: Copying Images from deploy to images
NOTE: Failed to copy built images to tftp dir:  /tftpboot
[INFO] successfully built project

出现了一个警告。官方对这个有解释,这个是脚本第一次运行的时候会出现的问题:AR# 71110,可以直接忽略它就行了。

(其实在这之前编译一直都不能通过,一直在报错,解决不了,后来发现连Vivado都不能编综合了,将bash改回dash后一切都恢复正常了。) 编译完成后,都在 project_1.petalinux/images/linux 下,看看都生成了些什么。

代码语言:javascript
复制
-rw-r--r-- 1 godenfreemans godenfreemans  9867524 9月  20 21:12 image.ub
-rw-r--r-- 1 godenfreemans godenfreemans  9867524 9月  20 21:12 rootfs.bin
-rw-r--r-- 1 godenfreemans godenfreemans 13540864 9月  20 21:11 rootfs.cpio
-rw-r--r-- 1 godenfreemans godenfreemans  5535059 9月  20 21:11 rootfs.cpio.bz2
-rw-r--r-- 1 godenfreemans godenfreemans  6042103 9月  20 21:11 rootfs.cpio.gz
-rw-r--r-- 1 godenfreemans godenfreemans  6042167 9月  20 21:11 rootfs.cpio.gz.u-boot
-rw-r--r-- 1 godenfreemans godenfreemans 67108864 9月  20 21:11 rootfs.ext3
-rw-r--r-- 1 godenfreemans godenfreemans  5583122 9月  20 21:11 rootfs.ext3.bz2
-rw-r--r-- 1 godenfreemans godenfreemans 67108864 9月  20 21:11 rootfs.ext4
-rw-r--r-- 1 godenfreemans godenfreemans  6106676 9月  20 21:11 rootfs.ext4.gz
-rw-r--r-- 1 godenfreemans godenfreemans     2288 9月  20 21:12 rootfs.its
-rw-r--r-- 1 godenfreemans godenfreemans  7602176 9月  20 21:11 rootfs.jffs2
-rw-r--r-- 1 godenfreemans godenfreemans     5830 9月  20 21:11 rootfs.manifest
-rw-r--r-- 1 godenfreemans godenfreemans  5563996 9月  20 21:11 rootfs.tar.bz2
-rw-r--r-- 1 godenfreemans godenfreemans  6063718 9月  20 21:11 rootfs.tar.gz
-rw-r--r-- 1 godenfreemans godenfreemans   290271 9月  20 21:30 rootfs.testdata.json
-rw-r--r-- 1 godenfreemans godenfreemans  4045676 9月  20 01:26 system.bit
-rw-r--r-- 1 godenfreemans godenfreemans    13953 9月  20 21:09 system.dtb
-rw-r--r-- 1 godenfreemans godenfreemans  1885435 9月  20 21:12 System.map.linux
-rw-r--r-- 1 godenfreemans godenfreemans   524024 9月  20 21:10 u-boot.bin
-rw-r--r-- 1 godenfreemans godenfreemans  4517436 9月  20 21:10 u-boot.elf
-rw-r--r-- 1 godenfreemans godenfreemans 24747840 9月  20 21:12 vmlinux
-rw-r--r-- 1 godenfreemans godenfreemans  9868872 9月  20 21:12 zImage
-rw-r--r-- 1 godenfreemans godenfreemans   444152 9月  20 21:09 zynq_fsbl.elf

打包 打包很简单。 有两种打包方式:

代码语言:javascript
复制
$ petalinux-package --boot --fsbl --fpga --u-boot --force
INFO: File in BOOT BIN: "/home/godenfreemans/FTP_Folder/project_1/project_1.petalinux/images/linux/zynq_fsbl.elf"
INFO: File in BOOT BIN: "/home/godenfreemans/FTP_Folder/project_1/project_1.petalinux/project-spec/hw-description/design_1_wrapper.bit"
INFO: File in BOOT BIN: "/home/godenfreemans/FTP_Folder/project_1/project_1.petalinux/images/linux/u-boot.elf"
INFO: Generating Zynq binary package BOOT.BIN...


****** Xilinx Bootgen v2018.3
  **** Build date : Nov 15 2018-19:22:29
    ** Copyright 1986-2018 Xilinx, Inc. All Rights Reserved.

INFO: Binary is ready.

$ petalinux-package --boot --fsbl --fpga --u-boot --force --kernel
INFO: File in BOOT BIN: "/home/godenfreemans/FTP_Folder/project_1/project_1.petalinux/images/linux/zynq_fsbl.elf"
INFO: File in BOOT BIN: "/home/godenfreemans/FTP_Folder/project_1/project_1.petalinux/project-spec/hw-description/design_1_wrapper.bit"
INFO: File in BOOT BIN: "/home/godenfreemans/FTP_Folder/project_1/project_1.petalinux/images/linux/u-boot.elf"
INFO: File in BOOT BIN: "/home/godenfreemans/FTP_Folder/project_1/project_1.petalinux/images/linux/image.ub"
INFO: Generating Zynq binary package BOOT.BIN...


****** Xilinx Bootgen v2018.3
  **** Build date : Nov 15 2018-19:22:29
    ** Copyright 1986-2018 Xilinx, Inc. All Rights Reserved.

INFO: Binary is ready.

区别在于打不打包image.ub这个文件,后者可以用在SPI-FLASH上启动PetaLinux。这里我用第一种。

拷贝 给SD卡分区,和720N的U盘一样,第一分区FAT32,第二分区EXT4,将上边编译出来的BOOT.BINimage.ub拷贝到FAT32分区。

启动 将FPGA的启动开关拨到SD卡启动。系统就可以从SD卡启动了。

整体上还是比较简单的。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/194667.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022年9月12日 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档