首页 > 系统相关 >linux驱动开发0_另一种方式编译ZYNQ镜像

linux驱动开发0_另一种方式编译ZYNQ镜像

时间:2022-08-26 09:24:27浏览次数:140  
标签:文件 boot arm ZYNQ 内核 linux 镜像 petalinux 目录

一、petanlinux工具编译镜像文件,最终就只有两个文件 BOOT.BIN和image.ub, 这两个文件包括u-boot、linux内核、设备树、PL端的bitstream、fsbl等,虽然方便但是速度太慢;

二、分布式编译步骤繁琐,单是灵活性高,是因为编写驱动的时候要经常改动设备树文件、内核、根文件系统、bitstream,

  将bitstream从BOOT.BIN中独立出来

  将image.ub文件分开为内核zImage和设备树dtb

  将根文件系统放到SD卡的EXT4分区

 

创建Petalinux工程,生成BOOT.BIN

1、创建一个petalinux工程目录,

2、在该工程目录下载创建一个hdf目录  

3、将vivado 生成的sdk文件夹复制到上述的hdf目录下

4、创建petalinux工程,之下一下步骤之后会在petalinux工程目录下生成一个WEDU-ZYNQ目录,这就是我们产生镜像文件对应的工程目录

    设置petalinux环境

    创建工程

    进入工程目录

    导入hdf文件

    以后更新vivado工程的时候,只需要将sdk文件夹更新或更换,再导入hdf文件即可

5、hdf文件导入成功或自动弹出petalinux工程配置窗口,如下所示

 

 

6、进入Subsystem AUTO Hardware Settings

    -->Serial settings

      -->Primary stdin/stdout  选择ps7_uart_0

 

7、进入Subsystem AUTO Hardware Settings

    -->Advance bootable images storage Settings

      -->dtb image settings

        -->image storage media 选择primary sd

  以上步骤是将dtb文件从image.ub文件中独立出来,并存到SD卡的EXT4分区

 

8、返回到最初的配置界面,进入Image Packaging Configuration

    -->Root filesystem type 选择SD card

  以上步骤是将根文件系统放到SD卡的EXT4分区

 

9、配置完成后,编译fsbl和uboot,以及生成BOOT.BIN,命令如下

   petalinux-build -c bootloader

   petalinux-build -c u-boot

   petalinux-build --boot --fsbl --u-boot --force

  这三条命令的实行时间视电脑的配置而定

  BOOT.BIN文件仅包含zynq_fsbl.elf和u-boot.elf文件,而没有bit文件,这两个文件我们基本是不需要改动的

 

10、生成设备树文件,在上步执行 petalinux-build -c u-boot命令之后,会在工程目录~/petalinux/WEDU-ZYNQ/components/plnx_workspace/device-tree/device-tree下生成设备树,圈出来的部分可用

      

 

 

编译内核

将xilinx官方2018.3版本的内核源码复制到/home/linux/kernel目录

以后再内核源码目录下进行编译,而不使用petalinux工具,因为内核也是经常改动,petalinux太慢

1、添加设备树文件,将面前产生的设备树文件复制到内核源码下的arch/arm/boot/dts目录

2、使用vim打开system-top.dts文件,进行一些简单的修改,

    主要修改bootargs属性;

    添加model属性;

    网口0的MAC地址

    QSPI进行分区

3、使用vim打开arch/arm/boot/dts目录下的Makefile文件,将设备树添加进去;

 

4、在内核源码目录下进行defconfig配置,命令如下:

  make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- xilinx_zynq_defconfig

 

5、编译内核,执行以下命令,-j2是因为虚拟机只分配了2个核

  make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- zImage -j2

6、编译完成之后,会在arch/arm/boot/目录下生成一个名为在Image的内核镜像文件

 

编译设备树

在内核里边需要单独编译出设备树的dtb文件,前面我们已经将所需要的设备树文件复制到内核的arch/arm/boot/dts目录下;

接下来执行以下命令编译system-top.dtb文件

  make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- system-top.dtb -j2

编译rootfs

1、进入petalinux创建的工程目录,WEDU-ZYNQ;

2、配置根文件系统,配置免密码登陆

  petalinux-config -c rootfs

  进入Image Features 选中debug-tweaks

3、编译根文件系统  petalinux-build -c rootfs

  编译完成知乎产生的根文件压缩包在image/linux目录下

 

制作SD启动卡

  FAT分区:   

      内核镜像:zImage  /arch/arm/boot/zImage

      内核设备树:system-top.dtb  /arch/arm/boot/dts/system-top.dtb 重命名为system.dtb

      PL端bitstream文件:petalinux工程目录下 images/linux/system.bit

      BOOT.BIN文件: petalinux工程目录下 images/linux/BOOT.BIN

  EXT4分区:

      根文件系统

      将petalinux工程目录下 image/linux/rootfs.tar.gz 解压缩到SD卡

      sudo tar -xzf rootfs.tar.gz -C /media/fangzeli/rootfs   

       /media/fangzeli/rootfs是本人的SD启动卡对应的EXT4分区挂载点

      

启动开发板

  在U-Boot启动倒计时完成之前 按回车,进入U-Boot的命令行模式,因为环境变量的问题,现在无法启动

  修改环境变量

  

 

   

 

 

  输入boot 重启电路板

 

标签:文件,boot,arm,ZYNQ,内核,linux,镜像,petalinux,目录
From: https://www.cnblogs.com/FZLGYZ/p/16623534.html

相关文章

  • linux 的文件权限案列
    需求:技术部门人员可以相互查看,但不能删除和修改别人的文件,其他部门人员不能查看,但领导组可以且只能查看。设计:技术部:组jishu;人员js1,js2领导:组lingd;人员......
  • linux下C语言实现写日志 linux下C语言实现写日志功能(转)
    先上程序,该程序经过测试能够很好的实现写日志要求/*************************************************************************>FileName:log.c>Author:**......
  • Linux使用密钥登录SSH
    输入命令和上传密钥时需要注意当前目录、账号和读写权限生成密钥使用服务器生成(方法一,推荐)1.1生成密钥#ssh-keygen(这里pwd为当前账号的home目录)1.2下载密钥.id_......
  • Linux 线程控制
    Linux线程控制线程属性同步原语属性多线程间如何保持数据私有性基于进程的系统调用如何与线程交互线程限制可通过sysconf函数查询线程限制。注意:有些os下使用s......
  • day3:101-A1-Kali Linux安装
    KaliLinux安装物理机什么是Kali系统KaliLinux是Linux系统的其中一版本,Kali其中自带了600余种安全工具,主要用于渗透测试、安全研究、计算机取证、逆向工程等等。......
  • linux 中实现输出字符串但是不输出换行符
     001、(base)root@PC1:/home/test3#ls(base)root@PC1:/home/test3#echo"xx"xx(base)root@PC1:/home/test3#echo-n"xx"##echo-n实现输......
  • 为Linux初学者答疑解惑
    很多人在初学linux的时候都会出现很多的困惑,亦或者说一边学一边迷茫。以至于越学越迷茫,越学脑子越乱。到最后草草收场不了了之。时间金钱也浪费了,到最后也是一事无成。 ......
  • Linux安装常见软件
    Linux的安装软件的常见方式二进制发布包RPM包Yum在线安装:自动解决软件安装过程中的库依赖问题源码编译安装上传和下载工具介绍:1.lrzsz检查Linux上是否安装lrzsz......
  • Linux
         基本常用命令序号命令对应英文作用1lslist查看当前目录下的内容2pwdprintworkdirectory查看当前所在目录3cd[目录名]changed......
  • linux系统配置文件或shell脚本批量注释
    1.配置文件批量注释1.1批量注释①进入命令行模式,按ctrl+v进入visualblock模式,键盘上下箭头选中多行,把需要注释的行标记起来②按大写字母I,再输入注释符:#③双......