搭建petalinux开发环境

  • 1. 安装Ubuntu虚拟机
  • 2. 启动虚拟机进行简易安装
  • 3. 安装完成后首先更新软件应用程序
  • 4. 更新完成后需要开启root用户
  • 5. 安装Vmware Tools菜单
  • 7. 安装petalinux开发包
  • 8. Tftp服务器安装和配置:
  • 12. 配置默认shell
  • 13. 配置PetaLinux工作环境
  • 14. 创建工程
    • 创建工程:
    • 导入硬件描述文件:
  • 15. 配置工程
  • 16. Flash启动方式配置:
  • 17. 编译:
  • 18. Flash方式启动烧写文件生成:
  • 19. EMMC分区格式化
  • 20. 通过ftp浏览器连接板卡:
  • 21. 网络引导方式配置
  • 22. QSPI+EMMC启动方式配置:
  • 23. QSPI+EMMC启动方式下将bit流放在emmc第一个分区加载的配置:

1. 安装Ubuntu虚拟机

在vm虚拟机12.0上建立Ubuntu的虚拟机,配置为单核单cpu,1G内存,下载ubuntu14.4的安装镜像文件.

2. 启动虚拟机进行简易安装

3. 安装完成后首先更新软件应用程序

4. 更新完成后需要开启root用户

开启方法为:

  • 终端输入sudo gedit /usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf
  • 回车了之后,部分童鞋可能会提示输入密码,需要注意的是,输入的密码并不可见,所以别输入错了,当然输错了可以再次输入的。输入密码了之后,会弹出如图示的编辑框。
  • 在弹出的编辑框里增加一行:greeter-show-manual-login=true 保存关闭。
  • 关闭之后,回到终端窗口,输入:sudo passwd root 回车;回车之后会要你输入两次密码,出现已成功更新密码字样即为成功。
  • 然后关机重启,
  • 重启完成后,可以看到原来普通用户下面多出了一个登录框,直接用户名输入root,密码输入刚刚设置的密码,既可以成功登陆

5. 安装Vmware Tools菜单

Root用户登录后点击虚拟机工具栏的安装Vmware Tools菜单,并在虚拟机中拷贝安装光盘中的VMwareTools-10.0.0-2977863.tar.gz文件到桌面路径,并在终端进入桌面路径,输入以下命令解压该压缩包:

 tar -xvzf VMwareTools-10.0.0-2977863.tar.gz;

解压完成后,进入解压路径,并执行安装脚本进行安装 .

7. 安装petalinux开发包

root用户登录后,拷贝petalinux-v2016.2-final-installer.run安装包到/opt目录,并在终端进入opt目录,输入:

./ petalinux-v2016.2-final-installer.run /opt

开始安装petalinux开发包.
安装过程中提示几个协议,输入Enter后开始阅读,之后输入q退出,并输入y同意条款.
安装过程中提示缺少一些工具库等,需要查阅UG1144文档的第9和10页,查到完整名称后,输入以下命令进行安装:
” apt-get install 工具库名称” .注意: 该安装必须联网

8. Tftp服务器安装和配置:

a) 安装
$ sudo apt-get install xinetd tftpd tftp #需联网
b) 建立目录
$ sudo mkdir /tftpboot # 这是建立tftp传输目录,一般放在根目录。
$ sudo chmod 0777 /tftpboot
c) 配置
$ sudo vi /etc/xinetd.d/tftp 创建并编辑该文件内容如下:

service tftp
{
protocol = udp
port = 69
socket_type = dgram
wait = yes
user = nobody
server = /usr/sbin/in.tftpd
server_args = /tftpboot
disable = no
}

d) 启动tftp服务
$ sudo service xinetd restart # 启动服务
e) 测试
$ tftp 127.0.0.1 //连接
tftp>get test.txt //获取远端tftp目录下的一个文件到当前路径
tftp>put test1.txt//弹出当前路径下的文件到远端tftp目录
tftp>q //退出

12. 配置默认shell

默认情况下Ubuntu的shell是dash,可通过以下命令查看: ls -al /bin/sh,如需切换回bash,可通过以下操作实现: sudo dpkg-reconfigure dash,提示选择时,选择No,再次查看,确保默认shell设置为bash,ug1144文档中15页也提供了修改方法,但未测试。(dash 比 bash 更轻,更快。但 bash 却更常用。如果一些命令、脚本等总不能正常执行,有可能是 dash 的原因。比如编译 Android 源代码的时候,如果使用 dash,则有可能编译出错,或者编译的系统不能启动)

13. 配置PetaLinux工作环境

输入以下命令配置PetaLinux工作环境:source /settings.sh。
检查环境是否配置成功:

echo $PETALINUX
/opt/petalinux-v2016.2-final #显示这个表示配置成功。

14. 创建工程

需要准备 vivado导出的hdf硬件描述文件和根据此文件生产的fsbl.

创建工程:

在工程根目录下执行petalinux-create --type project --template zynq --name xxx7z020

导入硬件描述文件:

指定硬件描述文件路径,并导入,需要进入工程目录:
petalinux-config --get-hw-description=/opt/pjt_dir/xxx7z020/hw-description/

15. 配置工程

执行以上操作后自动打开配置界面,如需要重新配置,输入: petalinux-config
以下3条命令分别用来单独配置u-boot/内核/文件系统,配置项更详细.

petalinux-config -c u-boot
petalinux-config -c kernel
petalinux-config -c rootfs
petalinux-config -c Device tree

16. Flash启动方式配置:

取消fsbl部分:linux Components Selection —> [ ] First Stage Bootloader
修改flash启动配置参数:

-*- Subsystem AUTO Hardware Settings  ---> Advanced bootable images storage Settings  --->boot image settings  --->  image storage media (primary flash)kernel image settings  --->  image storage media (primary flash)jffs2 rootfs image settings  ---> (rootfs.cpio) image namedtb image settings  ---> image storage media (primary flash)
Flash Settings  --->
*** partition 0 ***
(boot) name
(0x470000) size
*** partition 1 ***
(bootenv) name
(0x20000) size
*** partition 2 ***
(kernel) name
(0x5E0000) size
*** partition 3 ***
(dtb) name
(0x4000) size
*** partition 4 ***
(jffs2) name
(0x520000) size
*** partition 5 ***
(spare) name
(0x0) size
*** partition 6 ***
()  name

17. 编译:

petalinux-build //编译所有文件
petalinux-build -c u-boot //只编译uboot

18. Flash方式启动烧写文件生成:

根据上节配置并生成uboot、内核、文件系统、设备树。另外fsbl需要在SDK中生成,根据以下bif文件指定地址生成烧写文件boot.bin:

//arch = zynq; split = false; format = BIN
the_ROM_image:
{[bootloader]C:\Users\penguin\Desktop\work_vivado\h_zynq7020\h_zynq7020.sdk\fsbl\Debug\fsbl.elfC:\Users\penguin\Desktop\work_vivado\h_zynq7020\h_zynq7020.runs\impl_1\zynq7020_design_1_wrapper.bitC:\Users\penguin\Desktop\work_vivado\h_zynq7020\h_zynq7020.sdk\output\u-boot.elf[offset = 0x490000, startup = 0]C:\Users\penguin\Desktop\work_vivado\h_zynq7020\h_zynq7020.sdk\output\image.ub[offset = 0xA70000, startup = 0]C:\Users\penguin\Desktop\work_vivado\h_zynq7020\h_zynq7020.sdk\output\system.dtb[offset = 0xA74000, startup = 0]C:\Users\penguin\Desktop\work_vivado\h_zynq7020\h_zynq7020.sdk\output\rootfs.cpio
}

注意:对于带linux操作系统的项目必须将逻辑编译后一并打包,否则可能启动异常。
最后,在sdk中连接仿真器,执行flash烧写命令,如烧写失败,可能是7020启动模式配置不是jtag模式,更改启动模式重新烧写,或按复位键后,马上点击下载按钮,也可正常烧写。

19. EMMC分区格式化

系统启动成功后输入用户名:root密码:root,输入fdisk –l 观察是否识别emmc,例如:
root@PPeta:/mnt# fdisk -l
Disk /dev/mmcblk0: 3783 MB, 3783262208 bytes
之后对emmc进行分区创建第一个分区128MByte
“fdisk /dev/ mmcblk0”—运行分区命令
“ n”----新建分区
“ p”----选择分区类型为主分区
“ 1”----选择新建第1个分区
分区1起始扇区号采用默认值
分区1结束扇区号输入:+128M,即表示创建128M大小的分区
“ w”-----保存分区表
创建第二个分区约3GByte
“fdisk /dev/ mmcblk0” —运行分区命令
“ n” ----新建分区
“ p” ----选择分区类型为主分区
“ 2” ----选择新建第2个分区
分区2起始扇区号采用默认值
分区2结束扇区号采用默认值,分配所有剩余空间
“ w” -----保存分区表
格式化分区1为FAT32分区格式
“mkdosfs /dev/mmcblk0p1”
格式化分区2为ext4分区格式
“mkfs.ext4 /dev/ mmcblk0p2”
检查是否分区成功
“fdisk -l /dev/ mmcblk0”
注意:首次烧写的文件系统比较精简,可能不带有mkfs.ext4的分区工具,具体处理方法为:
连接上位机与板卡网络接口,检查板卡ip地址:
Ifconfig

20. 通过ftp浏览器连接板卡:

推荐使用FlashFXP进行连接
增加mkfs.ext4命令:
在Petalinux工程目录下查找到Project_dir/build/linux/rootfs/targetroot/sbin/mkfs.ext4(如果不存在,可能文件系统未配置,需对文件系统进行配置,并重新编译),通过FTP工具拷贝到板卡文件系统的/sbin目录,板卡默认FTP文件存放路径为”/var/ftp/”。另外依赖库需要将Project_dir/build/linux/rootfs/targetroot/lib目录下除了文件夹以外的文件打包为一个压缩包:lib.tar.gz(打包命令为:”tar cvf lib.tar.gz *”),大小约为1.8M,将该压缩包通过FTP拷贝到板卡文件系统的/lib目录,并在/lib目录运行:tar xvf lib.tar.gz命令,解压所有库文件。
注意:如拷贝后mkfs.ext4仍不能正常运行,则需要在/sbin目录运行”chmod 777 *”增加执行权限

21. 网络引导方式配置

◆前提: 成功安装并配置好tftp服务.
◆petalinux-config进入配置菜单Subsystem AUTO Hardware Settings —> Ethernet Settings —> [ ] Obtain IP address automatically//手动配置ip地址:
(192.168.1.105) Static IP address//确保与虚拟机地址在同一网段
(255.255.255.0) Static IP netmask
(192.168.1.1) Static IP gateway
◆返回主配置菜单: u-boot Configuration —> (192.168.1.129) TFTP Server IP address配置tftp服务器IP地址.
◆重新编译并下载uboot
◆连接网线,uboot启动后输入run netboot 就从tftp端加载内核和文件系统等启动所需文件.

22. QSPI+EMMC启动方式配置:

由于QSPI FLASH容量受限,因此只能烧写精简版的操作系统,且不方便修改,因此推荐采用QSPI(fsbl+bit stream+uboot)+EMMC(内核+设备树+文件系统)的启动加载方式。具体配置如下:
◆ 取消fsbl部分:linux Components Selection —> [ ] First Stage Bootloader
修改flash启动配置参数:

-*- Subsystem AUTO Hardware Settings  ---> Advanced bootable images storage Settings  --->boot image settings  --->  image storage media (primary flash)kernel image settings  --->  image storage media (primary sd)jffs2 rootfs image settings  ---> (manual) dtb image settings  ---> image storage media (primary sd)
Flash Settings  --->
*** partition 0 ***
(boot) name
(0x500000) size
*** partition 1 ***
(bootenv) name
(0x20000) size
*** partition 2 ***
(spare) name
(0x0) size
*** partition 3 ***
()  name        Image Packaging Configuration  --->Root filesystem type (SD card)(/dev/mmcblk0p2) Device node of SD device

◆ 编译工程
◆ 按上文介绍的分区方法对EMMC进行分区,并将编译生成的文件:
image.ub(内核在pjt_dir/ images/linux/)
system.dtb(设备树在pjt_dir/ images/linux/)
拷贝到EMMC的第一个128M的FAT32分区,完成后输入“sync”命令进行同步
◆ 在虚拟机命令行进入:/pjt_dir/build/linux/rootfs/targetroot目录,使用命令“tar cvf rootfs.tar.gz *”打包该文件系统。并通过ftp拷贝到板卡EMMC第二个linux分区(需格式化为ext2/ext3/ext4分区格式),通过命令“tar xvf rootfs.tar.gz”解包,解包完成后输入“sync”命令进行同步。
注意:petalinux启动后默认对emmc所有分区进行自动挂载,通过命令“df”,可查看当前所有挂载设备路径,如未自动挂载可进行手动挂载(eg: “mount /dev/mmcblk0p2”)
格式化操作,需先对目标分区进行卸载(eg: “umount /dev/mmcblk0p2”)
◆ 将以下文件按顺序打包成BOOT.BIN烧写文件,并烧写入QSPI Flash:
①fsbl(sdk生成)、
②比特流(vivao生成,对于带linux操作系统的项目必须将逻辑编译后一并打包,否则可能启动异常。)、
③uboot.elf(编译生成的路径在pjt_dir/ images/linux/)
注意:如系统启动异常将不能正常连接仿真器,可断电重启,并在uboot启动时不断敲回车键,让系统进行uboot命令行,再进行烧写。
◆ 烧写完成后重新启动。

23. QSPI+EMMC启动方式下将bit流放在emmc第一个分区加载的配置:

◆ 打开pjt_dir/subsystems/linux/configs/u-boot/目录.
◆ 拷贝platform-auto.h文件中的CONFIG_EXTRA_ENV_SETTINGS块到platform-top.h文件
◆ 在platform-top.h文件中添加以下标黄的语句:

/* Extra U-Boot Env settings */
#define CONFIG_EXTRA_ENV_SETTINGS \SERIAL_MULTI \CONSOLE_ARG \PSSERIAL0 \"loadbit_addr=0x100000\0" \"bitstream_image=system.bit.bin\0" \"mmc_loadbit_fat=echo Loading bitstream from media to RAM..; && mmcinfo && fatload mmc 0 ${loadbit_addr} ${bitstream_image} && fpga load 0 ${loadbit_addr} ${filesize}\0" \"nc=setenv stdout nc;setenv stdin nc;\0" \"ethaddr=00:0a:35:00:1e:53\0" \"sdboot=echo boot Petalinux; mmcinfo && run mmc_loadbit_fat && fatload mmc 0 ${netstart} ${kernel_img} && bootm \0" \"autoload=no\0" \"clobstart=0x10000000\0" \"netstart=0x10000000\0" \"dtbnetstart=0x11800000\0" \"loadaddr=0x10000000\0" \"bootsize=0x500000\0" \"bootstart=0x0\0" \"boot_img=BOOT.BIN\0" \"load_boot=tftpboot ${clobstart} ${boot_img}\0" \"update_boot=setenv img boot; setenv psize ${bootsize}; setenv installcmd \"install_boot\"; run load_boot test_img; setenv img; setenv psize; setenv installcmd\0" \"sd_update_boot=echo Updating boot from SD; mmcinfo && fatload mmc 0:1 ${clobstart} ${boot_img} && run install_boot\0" \"install_boot=sf probe 0 && sf erase ${bootstart} ${bootsize} && " \"sf write ${clobstart} ${bootstart} ${filesize}\0" \"bootenvsize=0x20000\0" \"bootenvstart=0x500000\0" \"eraseenv=sf probe 0 && sf erase ${bootenvstart} ${bootenvsize}\0" \"kernel_img=image.ub\0" \"load_kernel=tftpboot ${clobstart} ${kernel_img}\0" \"update_kernel=setenv img kernel; setenv psize ${kernelsize}; setenv installcmd \"install_kernel\"; run load_kernel ${installcmd}; setenv img; setenv psize; setenv installcmd\0" \"install_kernel=mmcinfo && fatwrite mmc 0 ${clobstart} ${kernel_img} ${filesize}\0" \"cp_kernel2ram=mmcinfo && fatload mmc 0 ${netstart} ${kernel_img}\0" \"dtb_img=system.dtb\0" \"load_dtb=tftpboot ${clobstart} ${dtb_img}\0" \"update_dtb=setenv img dtb; setenv psize ${dtbsize}; setenv installcmd \"install_dtb\"; run load_dtb ${installcmd}; setenv img; setenv psize; setenv installcmd\0" \"install_dtb=mmcinfo && fatwrite mmc 0 ${clobstart} ${dtb_img} ${filesize}\0" \"cp_dtb2ram=mmcinfo && fatload mmc 0:1 ${dtbnetstart} ${dtb_img}\0" \"fault=echo ${img} image size is greater than allocated place - partition ${img} is NOT UPDATED\0" \"test_crc=if imi ${clobstart}; then run test_img; else echo ${img} Bad CRC - ${img} is NOT UPDATED; fi\0" \"test_img=setenv var \"if test ${filesize} -gt ${psize}\\; then run fault\\; else run ${installcmd}\\; fi\"; run var; setenv var\0" \"netboot=tftpboot ${netstart} ${kernel_img} && bootm\0" \"default_bootcmd=run sdboot\0" \
""

◆ 在工程目录执行:petalinux-build -c u-boot编译uboot。
◆ 在sdk下打包并生成boot.bin flash烧写文件,只包含fsbl和uboot
◆ 在vivado命令窗口执行命令,生成uboot可加载的bit流格式。注意文件路径为反斜杠:
write_cfgmem -format bin -interface spix1 -loadbit “up 0x0 “ -file -force
eg:
write_cfgmem -format bin -interface spix1 -loadbit “up 0x0 <C:\Users\LiuJunHong\Desktop\PenguinPeta\PenguinPeta.runs\impl_1\penguin_peta_wrapper.bit> -file <C:\Users\LiuJunHong\Desktop\PenguinPeta\PenguinPeta.runs\impl_1\system.bit.bin> -force
◆ 在串口终端输入:tftp -gr system.bit.bin 192.168.1.129命令,从tftp服务器获取bit文件,并拷贝到emmc第一个fat32分区。
◆ 烧写QSPI FLASH并重新启动。

搭建petalinux开发环境相关推荐

  1. emacs 搭建racket开发环境

    emacs 搭建racket开发环境 emacs下搭建开发racket的环境,笔者之前用过下面两种模式:geiser和racket-mode.相对而言,后一种方式要显得简单.本文主要介绍后一种方式环境 ...

  2. 在CentOS 6.2上搭建vim开发环境

    在CentOS 6.2上搭建vim开发环境 最后更新日期:2013-07-05 1.首先使用Ubuntu(所在ip为192.168.16.230)翻墙登陆http://www.vim.org/,下载其 ...

  3. Windows7/10上快速搭建Tesseract-OCR开发环境操作步骤

    之前在https://blog.csdn.net/fengbingchun/article/details/51628957 中描述过如何在Windows上搭建Tesseract-OCR开发环境,那时 ...

  4. 7 centos 源码安装samba_CentOS搭建WonderTrader开发环境及v0.5.4版本发布

    前言 之前发过一篇关于如何搭建WonderTrader开发环境的文章<从零搭建WonderTrader的开发环境>,帮助不少用户解决了一些编译源码的问题.因为笔者是在Ubuntu 18.0 ...

  5. Windows下搭建PHP开发环境

    PHP集成开发环境有很多,如XAMPP.AppServ......只要一键安装就把PHP环境给搭建好了.但这种安装方式不够灵活,软件的自由组合不方便,同时也不利于学习.所以我还是喜欢手工搭建PHP开发 ...

  6. python ai应用开发_AI应用开发实战 - 从零开始搭建macOS开发环境

    AI应用开发实战 - 从零开始搭建macOS开发环境 联系我们 OpenmindChina@microsoft.com 零.前提条件 一台能联网的电脑,使用macOS操作系统 请确保鼠标.键盘.显示器 ...

  7. mac搭建python开发环境_Mac中基于Homebrew搭建python开发环境

    转移到mac上了.这里是在lion中搭建python开发环境的简单记录.这份记录不是一份step by step.而是事后写的记录,可能有记忆遗漏.如果有错误,请指正. 1.安装homebrew的准备 ...

  8. Windows 10 搭建Python开发环境(PyCharm )

    Windows 10 搭建Python开发环境(PyCharm ) 一.安装Python3 二.安装Pycharm 怎么使用PyCharm编写Python程序,简单教程. windows下安装pyth ...

  9. Eclipse下搭建GitHub开发环境

    自从GitHub的强大性被开发者认识到后,越来越多的开发者选择使用GitHub代替SVN来进行开发.本人也不例外,最近开始研究如何使用GitHub来托管自己的代码,下面就开始介绍如何在Eclipse下 ...

  10. 一天一点linux(9):ubuntu下如何搭建LAMP开发环境?

    功能介绍 上一次搭建Linux下LAMP环境是基于的CentOS6.7版本,采取的方式是源码编译安装,折腾了好久才在CentOS下,把LAMP环境给搭建起来,而Ubuntu作为现在主流的Linux版本 ...

最新文章

  1. 线程同步之——互斥量及死锁问题
  2. MVC框架浅析(基于PHP)
  3. Lombok(1.14.8) - @Log
  4. 红旗linux培训文档,Linux基本应用培训-红旗Linux.ppt
  5. java国际化服务器不识别_国际化踩坑记录java.util.MissingResourceException:
  6. 和“内存杀手” Chrome 说再见!新版 Edge 即将发布
  7. javascript 函数的几种声明函数以及应用环境
  8. 为什么道理都懂,课执行力差的现象如此普遍?
  9. pdf怎么转换成word格式不变?
  10. java short相加_为什么两个short类型相加会自动提升为int?
  11. 安全工具-curl学习
  12. Java面试:java小项目实例
  13. Debian系下载deb安装包及依赖包
  14. 《跟着咩总啃CS:APP》——第0章
  15. 多样性强化学习:不光要赢,还要赢得精彩 | 清华吴翼
  16. 金助教——定义互动教学管理新模式
  17. eclipse导出Jar包包含第三方jar包和图片资源
  18. 易语言微信hook教程
  19. 高权重网站后面的共同点
  20. java sinh_java.lang.Math.sinh(double x)方法实例

热门文章

  1. MAVEN setting.xml配置文件详解
  2. 在消费决策上,读懂当代年轻人的B面!
  3. 网络原理考点之滑动窗口协议
  4. centos7 ies4linux,Ubuntu 7.10中通过IEs4linux安装IE6
  5. 虚函数表存储的位置(解析C++内存分配及其编译分段)
  6. 冲突域和广播域的区分
  7. matlab生成浮雕灰度图,将照片做成浮雕灰度图
  8. 对数log ln lg 的java实现和mysql实现
  9. sony电视投屏android,Wow,将苹果Macbook投屏到索尼BRAVIA原来是这样玩…教程分享
  10. 3D打印是什么?如何工作的?