-
zynq Linux程序开发
2019-02-27 13:00:30开发环境:vivado 2018.2、PetaLinux 2018.2 程序框架: 具体步骤: 1. 打开vivado 2018.2软件 2. 点击Create Project 3. 输入工程名和工程路径 (注意:工程路径中不要有空格,否则后续SDK会无法导入...开发环境:vivado 2018.2、PetaLinux 2018.2
程序框架:
具体步骤:
1. 打开vivado 2018.2软件
2. 点击Create Project
3. 输入工程名和工程路径
(注意:工程路径中不要有空格,否则后续SDK会无法导入硬件描述文件)
4. 选择RTL工程,下方选项不勾选。
5. 选择Verilog语言,不添加文件,一直点击Next
6. 直接点击boards,选择对应的开发板
7. 打开一个新项目project_led
8. 创建一个block Design ,在Flow Navigator区域展开IP INTEGRATOR,选择create Block Design,输入块的名称system_1。
9. 工作域将会打开Diagram的图表画布,我们将在空白区域像画画一样构建自己的系统。这里操作的最小单位为IP核,xilinx提供的免费IP核可以直接添加使用,用户也可以自定义IP核。
10. 点击空白画布中间的+号来添加IP核(或者在空白板上右键点击Add IP),在search中输入zynq ,在搜索结果中双击ZYNQ7 Processing system添加PS端到IP核画布
11. 要使PS模块在zedboard中工作,还要对其进行配置,鼠标左键双击PS模块,即可打开编辑IP核的界面。
12. 点击Presets -> Zedboard ,使用vivado对zedboard提供的默认配置,点击ok。(此处用户可根据自己的硬件自行配置)
13. 单击DDR接口,出现笔状时右键,选择 Make External ,FIXED_IO使用同样办法
14. 添加AXI GPIO IP核到系统中。右键单击空白处添加IP核,搜索栏输入GPIO,双击AXI GPIO 添加完成
15. 然后单击run connection automation 选择/axi_gpio_o/s_AXI,单击ok有两个新IP核被自动添加了。
16. 然后再单击run connection automation,Select Board Interface下选择leds_8bits.
这样就基本配置完成,IP Integrator会自动为AXI总线上的逻辑设备分配地址空间,这样ARM就可以寻址到该设备。如图:17. 为AXI GPIO分配64k的地址空间,基地址为0x41200000,保存工程。在Diagram窗口上方工具栏中,选择Validate Design 按钮,检查设计有效性
18. 至此,IP子系统我们已经设计完成了。下面我们将设计完成Block Design生成可以综合的HDL设计文件。 在Sources 窗口,右键zynq_system_1 选择Generate Output Products
19. 单击Generate,生成HDL源文件和相应端口的约束文件。再右击zynq_system_1,选择Create HDL Wrapper选型,单击ok。这里vivado为IP子系统生成了一个顶层文件,使我们可以对系统进行综合、实现并生成比特流。
20. 在Flow Navigator 中展开Program and debug ,单击generate Bitstream。单击ok。此时vivado会生成一个硬件.bit文件,产生的bit文件位于:C:\Users\DELL\vivado_workspace\project_led\project_led.runs\impl_1中
21. 这一过程将持续很长时间,当完成后,会弹出一个对话框,选择open Implementation Design
22. 将设计导入SDK,然后就可以对ARM编程。选中Sources栏中的zynq_system_1.bd,执行File->Export->Export Hardware 命令,弹出的对话框确保复选按钮被选上。会生成一个project_led.sdk文件夹 (产生的硬件描述文件system_1_wrapper.hdf文件位于C:\Users\DELL\vivado_workspace\project_led\project_led.sdk)
23. 打开VMware虚拟机,运行Ubuntu 16.04.3操作系统。
24. 定位目录:先在shell中找一个准备存放工程的地方,(我的是/home/admin-hjj/program),命令行
cd /home/admin-hjj/program/
25. 定位编译链,启动PetaLinux:根据安装petalinux的路径:
source /home/admin-hjj/PetaLinux/settings.sh
26. 创建PetaLinux工程:将在PRO目录下面,创建一个工程:
petalinux-create --type project --template zynq --name h2_petalinux_test
° zynqMP (for UltraScale+ MPSoC)
° zynq (for Zynq)
° microblaze (for MicroBlaze)h2_petalinux_test是工程名,该命令会自动在program文件夹里创建h2_petalinux_test文件夹。
27. 引用刚才输出的硬件描述文件:把之前导出的硬件描述文件design_ZYNQ_wrapper.hdf拷贝到虚拟机中的h2_petalinux_test工程文件夹下,然后在shell中输入:
cd h2_petalinux_test //进入到petalinux工程目录下
petalinux-config --get-hw-description=/home/admin-hjj/program/h2_petalinux_test
注意:此命令中不可随意添加空格,要先进入petalinux工程目录下再执行此命令。
会进入一个配置界面,在里面我们可以配置一些系统参数,主要的配置包括:启动方式,启动存储器分区表,启动文件名称等等,本文暂不对其修改(默认是从SD卡中启动),然后等待其配置(时间较长)
*** 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
28. 获取文件夹权限 :在上一步完成后,输入命令sudo chmod -R 777 /home/hlf获取文件夹权限(工程文件夹和petalinux的安装文件夹),否则编译的时候,会发生错误。
sudo chmod -R 777 /home/admin-hjj/program/h2_petalinux_test
目前为止,在shell中的命令既可以以超级用户su的身份运行也可以以普通用户的方式运行(建议全部都用普通用户的方式,免得切换),但是等下编译u-boot和kernel以及rootfs的时候,必须以普通用户的身份运行命令行,否则会报错的。
29. 编译u-boot
注意:到此处的时候,不能再用超级用户了,要切换到普通用户下,之后的所有操作都在普通用户下
普通用户的shell中输入petalinux-config -c u-boot
(依然要事先输入source /home/hlf/mnt/petalinux/settings.sh命令),然后等待GUI出来,这里暂时不改动啥,直接save(save为u-boot.config,名字随便取但不要留空),然后继续等(新建工程要等的时间还是比较长的,后来就会好的。
30. 编译kernel
petalinux-config -c kernel
31. 编译文件系统
petalinux-config -c rootfs
32. 编译工程
petalinux-build
会自动在images/linux生成zynq_fsbl.elf文件。
33. 生成BOOT.BIN
把shell定位到image/linux目录下,同时将vivado中生成的.bit文件拷贝至image/linux,执行命令:
petalinux-package --boot --format BIN --fsbl zynq_fsbl.elf --fpga system_wrapper.bit --u-boot
在文件夹下就可以发现,多了一个BOOT.BIN
-
course_s4_ALINX_ZYNQ开发平台Linux应用教程V1.03.pdf
2020-02-27 17:46:37course_s4_ALINX_ZYNQ开发平台Linux应用教程V1.03,共九章内容,第一章QT,第二章OpenCV,,第三章双摄像头模块OpenCV显示,第四章触摸屏模块应用,第五章AXI DMA读写测试,第六章 基于DMA的ADC波形显示(AN926),第七章... -
生成zynq_跟我制订一份zynq开发步骤
2021-01-12 06:29:12学习zynq,并非一朝一夕之事...zynq开发,主要包括两部分:裸机使用和在arm上搭载Linux系统。 首先是裸机使用,裸机使用可分为三个阶段。1第一阶段熟悉VIVADO,熟悉SDK,学会新建工程,掌握基本调试方法和工具的使用...学习zynq,并非一朝一夕之事,欲速则不达,在学习zynq之前,首先做好坚持下去的决心,其次制定一份适合自己的zynq开发计划,本期帮大家制定一份zynq的开发计划。zynq开发,主要包括两部分:裸机使用和在arm上搭载Linux系统。
首先是裸机使用,裸机使用可分为三个阶段。
1第一阶段
熟悉VIVADO,熟悉SDK,学会新建工程,掌握基本调试方法和工具的使用,掌握在SDK端生成固化程序并进行固化操作;
熟悉GPIO的应用,熟悉BSP板级开发包的API函数,通过该API函数调试GPIO口的使用;
熟悉ZYNQ的中断机制,通过BSP的API函数,调试CPU私有定时器外设。
2
第二阶段
通过第一阶段2和3的调试,基本掌握板级开发包的使用套路,方便以后在使用到相关外设的时候能够快速掌握和使用。
数据ZYNQ上的PL与PS端的交互,通过增加一个PL端GPIO的IP,然后设计使用PS端核心去控制PL端GPIO输出操作实现;
学习QSPI对FLASH的编程,掌握程序如何写入到FLASH,如何从FLASH中搬运到内存;
分析ZYNQ的启动相关流程,解析启动文件格式,分析启动过程中核心对内存的需求和程序的存放和使用。
3
第三阶段
通过第二阶段2和3的学习,分析ZYNQ的加载流程,设计一个合适的远程加载策略;
学习ZYNQ中的DMA的使用,掌握内存在AXI总线中如何实行搬运;
学习ZYNQ中的以太网的使用,通过学习LWIP协议栈如何移植和如何使用;(有必要的话可以使用网卡进行远程加载)
学习ZYNQ中的VDMA的使用,为后续图像处理项目做技术储备;
掌握裸机上的AMP双核交互,设计双核交互流程;
掌握裸机上的内存管理和内存分配,建立良好的内存使用分配策略;
建立裸机上的界面设计,为后续的需要屏幕GUI的项目做技术储备。
到这里就可以开始学习在arm上搭载Linux系统了,大家加油,后期盟主会按照今天的计划陆续更新学习内容。
记得扫码关注哦!!!
更多精彩内容,请看下面链接:
5分钟了解FPGA之Xilinx7
modelsim中代码覆盖率使用详解
增量编译(Incremental Compile)提高Vivado编译效率
ModelSim 仿真实例入门之(三)--时序仿真
ModelSim 仿真软件介绍(二)
ModelSim仿真软件介绍(一)
FPGA数字信号处理(二)数字混频
【FPGA信号处理一】5分钟学会FIR 滤波器设计
在Vivado中,您使用过TCL吗?
编写可综合的FPGA代码经验总结(二)
【干货分享】编写可综合的FPGA代码经验总结(一)
【干货分享】异步电路中的时钟同步处理方法
【干货分享】同步电路分析---异步和同步电路的区别(二)
【干货分享】Verilog中阻塞和非阻塞赋值金规
【干货分享】同步电路的时序模型分析(一)
【干货分享】同步复位和异步复位,您真搞明白了吗?
【干货分享】Get到这些小技巧,FPGA设计将提高一个台阶
Vivado中几种仿真模式比较
-
ZYNQ开发笔记
2018-01-09 17:07:311、Linux编译 将zynq_zed_defconfig文件拷贝到arch/arm/configs目录下 make ARCH=arm xilinx_zynq_defconfig make ARCH=arm menuconfig make ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi- UIMAGE_...1、Linux编译
将zynq_zed_defconfig文件拷贝到arch/arm/configs目录下
make ARCH=arm xilinx_zynq_defconfig
make ARCH=arm menuconfig
make ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi- UIMAGE_LOADADDR=0x8000 uImage
2、取消控制台登录
a、将ramdisk.image挂载到/mnt目录下,修改inittab文件,添加no login
b、将编译uboot时生成的tools目录下的mkimage拷贝到交叉编译器的bin目录中(相当于添加到环境变量中)
c、mkimage -n 'uboot ext2 ramdisk' -A arm -O linux -T ramdisk -C gzip -d ramdisk.image uramdisk.image.gz
3、根文件系统制作
http://blog.csdn.net/asklw/article/details/52611594
4、dtb转dts
dtc -I dtb -O dts ../../arch/arm/boot/dts/imx6q-sabresd-ldo.dtb > ./f.dts
5、linux生成dtb文件
make ARCH=arm dtbs
6、u-boot编译
make CROSS_COMPILE=arm-xilinx-linux-gnueabi- clean
make CROSS_COMPILE=arm-xilinx-linux-gnueabi- zynq_feima_defconfig
make CROSS_COMPILE=arm-xilinx-linux-gnueabi-
7、linux下查看SD卡文件系统类型
sudo blkid
8、SD卡格式化
http://blog.sina.com.cn/s/blog_68e596750100jx9m.html
9、 拷贝根文件系统
mount /dev/sda2 /mnt/sdcard #挂载SD卡
cp -ra /home/hxy/rootfs/* /mnt/sdcard #把根文件系统拷到SD卡
10、VFS挂载失败原因
&SD卡读写保护
&bootargs参数添加rootwait,挂载之前等待设备初始化完成 -
zynq开发学习记录:Linux启动部署
2019-01-21 10:12:131.烧写Linux相关文件 将生成的uImage,device.dtb,fpga.bit以及uramdisk.image.gz文件烧写到单板的flash当中,步骤如下: 以下是flash的分区规划 BOOT.bin 0x0~0xe0000 Env.txt ...1.烧写Linux相关文件
将生成的uImage,device.dtb,fpga.bit以及uramdisk.image.gz文件烧写到单板的flash当中,步骤如下:
以下是flash的分区规划
BOOT.bin
0x0~0xe0000
Env.txt
0xe0000~0x100000
uImage
0x100000~0x500000
device.dtb
0x500000~0x580000
uramdisk.image.gz
0x580000~0xa00000
fpga.bit
0xa00000~0x1000000
- 单板配置为QSPI启动
- 上电后u-boot执行,进入u-boot开发命令行模式
- 打开tftp工具,选择烧写文件的位置作为上传路径
- setenv serverip 192.168.0.100 设置主机IP地址,并在windows网卡适配器中添加静态以太网IP地址192.168.0.100
- setenv ipaddr 192.168.0.5 设置单板ip
- tftpboot 0x1000000 uImage 传送 uImage文件到DDR 0x1000000地址处
- sf probe 0 50000000 0 探测spi flash器件
- sf erase 0x100000 0x400000 擦写flash地址从0x100000开始,大小0x400000
- sf write 0x1000000 0x100000 0x3fffff 将内存DDR中0x1000000地址文件烧写到0x100000处,烧写文件大小为0x3fffff
- tftpboot 0x1000000 device.dtb传送 device.dtb文件到DDR 0x1000000地址处
- sf erase 0x500000 0x80000 擦写flash地址从0x500000开始,大小0x80000
- sf write 0x1000000 0x500000 0x7ffff 将内存DDR中0x1000000地址文件烧写到0x500000处,烧写文件大小为0x7ffff
- tftpboot 0x1000000 uramdisk.image.gz 传送 uramdisk.image.gz文件到DDR 0x1000000地址处
- sf erase 0x580000 0x480000 擦写flash地址从0x580000开始,大小0x480000
- sf write 0x1000000 0x580000 0x47ffff 将内存DDR中0x1000000地址文件烧写到0x580000处,烧写文件大小为0x47ffff
- tftpboot 0x1000000 fpga.bit传送 fpga.bit文件到DDR 0x1000000地址处
- sf erase 0xa00000 0x600000 擦写flash地址从0xa00000开始,大小0x600000
- sf write 0x1000000 0xa00000 0x5fffff 将内存DDR中0x1000000地址文件烧写到0xa00000处,烧写文件大小为0x5fffff
- tftpboot 0x1000000 BOOT.bin传送 BOOT.bin文件到DDR 0x1000000地址处
- sf erase 0x0 0xe0000 擦写flash地址从0x0开始,大小0xe0000
- sf write 0x1000000 0x0 0xdffff 将内存DDR中0x1000000地址文件烧写到0x0处,烧写文件大小为0xdffff
2.系统上电启动部署
Linux内核及部署步骤如下
- setenv serverip 192.168.0.100 设置主机ip
- setenv ipaddr 192.168.0.2 设置单板ip
- setenv bootdelay=3 设置启动延时
- setenv bootargs console=ttyPS0,115200 maxcpus=1 root=/dev/ram rw earlyprintk 设置内核启动参数
- setenv bootcmd ‘sf probe 0 50000000 0 && sf read 0x1000000 0xa00000 0x5fffff && fpga loadb 0 0x1000000 0x5fffff && sf read 0x2000000 0x500000 0x7ffff && sf read 0x2080000 0x100000 0x3fffff && sf read 0x4000000 0x580000 0x47ffff &&bootm 0x20800000 0x40000000 0x2000000’
saveenv 保存参数
- boot 启动,可以看见内核启动打印信息,出现Linux shell的命令调试符
-
基于ZYNQ linux CAN通讯开发
2018-12-07 17:24:08基于ZYNQ linux CAN通讯开发。vivado端的PS-PL配置,sdk端例程 -
Xilinx zynq开发,Linux系统下交叉编译nanomsg库
2021-01-12 12:24:00背景: 为了优化socket TCP的传输速率,使代码更具有移植性,遂产生使用nanomsg代替socket TCP的想法。 nanomsg是一个socket library,它提供了几种常见的通信模式,网络层... 本文是在为了开发Xilinx Zynq一款... -
Xilinx Zynq开发教程
2020-02-17 22:44:01首先开发arm cpu的工具有两种,如果不跑linux操作系统,那么就用vitis就够了,如果跑linux操作系统,那么则需要xilinx的petalinux工具,vitis支持linux和windows两种操作系统,但是petalinux只支持linux操作系统。... -
zynq开发学习记录:Linux与FreeRTOS AMP运行
2019-01-21 11:32:07Linux + FreeRTOS 1.创建FreeRTOS工程 使用ps7_cortexa9_1创建FreeRTOS工程,示例如下 修改main.c 去掉xil_printf相关的调用,根据FPGA工程师提供的寄存器地址和bit文件操作LED周期闪烁 修改lscript.ld文件地址... -
ZYNQ 7000 Linux工程开发
2019-12-11 17:52:49虚拟机软件版本:VMware14.1.1 Linux系统版本:ubuntu-16.04.6 petalinux版本:petalinux-v2019.2 vivado版本:Vivado 2019.2 -
zynq linux 开发环境搭建
2015-11-11 13:57:131、安装基本开发工具:sudo apt-get install build-essential ,sudo apt-get install libncurses5-dev; 2、在安装交叉编译工具之前,输入命令“sudo dpkg-reconfigure dash”,选择“否”,退出; 3、运行“xilinx... -
领航者ZYNQ之Linux驱动开发指南_V1.3.pdf
2020-07-08 10:54:19《领航者ZYNQ之Linux驱动开发指南_V1.3.pdf》非常好的正点原子zynq的linux驱动资料,值得拥有,希望对你的工作学习有所帮助。 -
@Zynq开发全过程概览.pdf
2020-04-13 17:08:30该ppt讲述了zynq的普通开发流程,包括vivado block设计,sdk设计,linux内核裁剪等 -
领航者ZYNQ之Linux开发指南_V1.2.pdf
2020-05-10 17:12:28领航者ZYNQ之Linux开发指南 V1.2 本书我们讲解Linux,而Linux开发可以分为底层驱动开发和应用开发,本书以领航者ZYNQ为硬件平台,从实现到驱动,从底层到应用的讲解linux开发。 -
领航者ZYNQ之Linux开发指南_V1.1.pdf
2019-12-16 16:44:49《领航者ZYNQ之Linux开发指南》,非常详实的zynq的linux开发资料,希望对你的工作学习有所帮助。 -
菜鸟搭建zynq linux开发平台
2017-10-19 10:54:29本人机械出生,毕业后先做了两年FPGA,然后做IC开发,所以对linux一窍不通。无奈来了一家小公司,所有的环境都要自己搭,这里将自己的坑全部献上,希望能提供一些借鉴 第一步: 安装虚拟机 1、注意事项 linux... -
ZYNQ开发:HLS自定义IP核在linux下的调用
2020-06-16 23:05:03HLS自定义IP核在linux下的调用-以adder为例 使用HLS生成自定义IP核 注意:这里将输出输出参数均指定为AXI_Lite接口,并指定return以创建模块的中断端口。 void adder(int a, int b, int& c) { #pragma HLS ... -
ZYNQ Linux开发——以太网配置
2017-08-28 20:07:17开发环境:Widows下Vivado 2016.2 、 SDK2016.2 、 Linux机器:debin 材料:Xilinx Github中的U-BOOT、Kernel、Ramdisk、Config_patch等在进行NFS启动时配置目标板网络遇到问题:执行ifconfig -a 命令没有出现eht0... -
ZYNQ 7000 Linux 驱动开发(一)基础驱动开发
2020-01-10 17:33:55虚拟机软件版本:VMware14.1.1 Linux系统版本:ubuntu-...此工程是在《ZYNQ 7000 Linux工程开发》基础上进行的。 一、创建helloworld驱动 进入上次建立好的linux工程中,命令如下: cd test_project 创建hellowor... -
zynq开发学习记录:Linux与rt-thread操作系统AMP运行
2019-01-21 10:38:35Linux + RT-Thread 1.U-boot、Linux设备树修改 memory { device_type = "memory"; reg = <0x0 0x30000000>; };/*修改CPU0地址空间范围*/ 2.Linux内核启动参数,修改设置为SMP,CPU个... -
Zynq在Linux下的开发
2018-07-02 11:15:42Zynq在Linux下的开发转载2017-03-28 20:26:45转自:http://blog.sina.com.cn/s/blog_b35897360102x5lu.html注:在此介绍Zynq Linux开发所步骤,不涉及具体操作,只针对一些基本概念1.设置交叉编译工具 交叉编译通俗... -
移植Linux到ZYNQ
2019-09-06 19:13:25ZYNQ移植Linux博客说明开发环境移植u-boot 博客说明 撰写日期 2019.09.06 完稿日期 2019.09.09 最近维护 暂无 本文作者 multimicro 联系方式 multimicro@qq.com 资料链接 本文无附件资料 GitHub ... -
S04_基于ZYNQ硬件的LINUX 开发.pdf
2019-07-05 17:12:13基于ZYNQ硬件的LINUX 开发感谢您使用米联客开发板团队开发的 ZYNQ 开发板,以及配套教程。 本教程将对之前编写的《ZYNQ 修炼秘籍》-LINUX 部分内容做出改进, 并且增加新的课程内容。本教程不仅仅适合用于米联客... -
zynq开发学习记录:Linux内核、设备树编译及文件系统制作
2019-01-21 09:54:581.Linux内核预编译 开发者可以从xilinx的github源码库中下载各个版本的Linux内核,这里选用评估板提供的版本,将linux-xlnx-xilinx-v2015.4.zip压缩包通过虚拟机与主机共享方式拷贝至虚拟机共享目录中,并右键提取... -
ZYNQ开发进化史——概述
2019-12-11 23:55:07这个系列包含了我一步一步让ZYNQ从裸跑到自己的小操作系统,到LinuxC,LinuxDriver在到PYNQ的过程。其中涵盖了许多碎知识,包括AXI总线、C语言内存管理、linux的移植等等,在此也对其做一个整理。 首先,ZYNQ是一个...
-
转行做IT-第15章 Collection、泛型、Iterator
-
geckodriver-v0.26.0-linux64_orig.tar
-
RestaurantPage:我在The Odin Project的“ Restaurant Page”项目中的尝试-源码
-
professional C#7.0 and .NetCore 2.0 源码下载地址 wrox
-
应该如何经营一家便利店?
-
MySQL NDB Cluster 负载均衡和高可用集群
-
ArcEngine大数据量操作注意点
-
Java之数据结构与算法:顺序存储二叉树
-
AcWing 1209. 带分数
-
《文本处理 awk sed grep ”三剑客”》
-
抖音快手视频舆情监测方案
-
cocos creator案例1-简易消消乐小游戏开发.pdf
-
【布道者】Linux极速入门
-
MySQL 视图
-
pdf文档怎么转换成word格式,pdf转word的方法
-
2021年软考系统规划与管理师-上午历年真题解析视频课程
-
部编版语文下册期末考试五年级试卷.pdf
-
C和C++课程
-
1688API item_search_img - 按图搜索1688商品(拍立淘)
-
学习笔记2