ZYNQ ucos-ii中使用lwip及usb

       当前的板卡平台一般是一块ARM加一块FPGA,最近老大说要弄个高端一点的新平台,便看上了Xilinx的ZYNQ芯片。一块芯片上既有ARM也包含了FPGA,性能强劲,内存充足,实乃升级首选。

       开头便是弄了一块黑金的ZYNQ开发板自行学习,跑跑模板,熟悉开发流程。Vivado平台真是方便,想要运行些基本模板的话就是点点鼠标的事,不过这对新手来说就不太有利了,不太好明白每个步骤其中的奥妙,还有一整套流程下来要消耗大量时间,我这大二时的游戏本根本扛不住,是时候换个性能更为强劲的笔电了。

       待自行研发的板子做好后便要开始搭建基础程序模板了,老大搭建FPGA部分的基础逻辑模块,我则需要按照以前的平台搭建ARM部分的基础模板,以前的平台用的是ST芯片,上面跑ucos,通讯部分用到了lwip和usb,那我主要的任务就是在ZYNQ上使用ucos跑通lwip和usb。

       首先是ucos,到Micrium官网上下载相关的源码,然后在SDK资源库里面添加相关的路径后就能直接新建ucos的官方模板工程直接运行。但老大不喜欢这个,通过SDK新建的ucos工程相关的源码文件都在BSP里面,需要我提取出精华部分放到编写应用代码的总文件夹下面。首先看看BSP里面与ucos相关的部分,有一大堆ucos开头的大文件夹,ucos主要部分的源码也分散在几个大文件夹里面,着实不好弄,需要有十足的耐心。

       接下来是相对好弄的usb部分,SDK里面的例子是些USB存储类的模板,暂时用不到,我需要的是CDC设备通讯类的。最后在Xilinx维基主页上找到了Zynq USB CDC设备类的例子,模拟成了虚拟串口类来和PC通信,主页里面还有许多其它的技术文档,做的真不错。Xilinx提供的模板跑的是裸机程序,开头初始化了中断系统,需要注释掉,因为这里使用ucos系统时已经初始化了中断,只需要使用ucos提供的函数注册下usb中断即可。

        lwip部分的话就不好弄了,网上ucos lwip的资料一大堆,基本上都是基于ST的芯片,但是对于zynq的话就寥寥无几了,故写下这篇博客以做记录。不过问题不大,都属于ARM Cortex系列,其中的sys_arch等有关移植的文件这里用得到。再就是需要实现硬件方面的网卡底层驱动等文件,正好Xilinx提供了freertos使用lwip的模板,将其中关于硬件操作的相关文件提取出来,里面有关freertos的函数替换成ucos的函数。在这列出几点主要改动,1.网卡初始化时使用了freertos函数创建了软件定时器,需替换成ucos相关函数。2.初始化dma时使用了Xilinx库函数注册了中断,需替换成ucos中断注册函数。3.我这用的PHY芯片是Micrel公司的,需添加相应的网口自协商函数。资源链接中会有usb以及移植后的lwip代码,留作日后回顾,也供大家参考使用。

资源地址:https://download.csdn.net/download/qq_25648927/11504009

文档共60页。主要向初学者提供了Zynq开发的技术方向,针对不同应用给出了基本的参考文档;同时对Zynq双核AMP加载方式做了详细描述,对Zynq的fsbl启动流程做了简单介绍。章节如下: Zynq User Guide 1 介绍 4 2 快速上手指南 4 3 多核开发教程 4 3.1 AMP开发说明 6 3.1.1 快速生成amp工程 6 3.1.2 Generating Boot File 8 3.1.3 烧写程序 9 3.1.4 启动 10 3.1.5 调试 10 3.1.6 总结 11 3.2 SMP开发说明 11 4 ZC706启动代码分析 11 4.1 启动代码 12 4.2 FSBL流程(FOR AMP) 13 4.3 CPU0启动CPU1流程 14 5 程序在线烧写方案及流程 14 5.1 程序烧写需求 14 5.2 提出该需求的原因 14 5.3 程序烧写方案 14 5.3.1 BOOT.BIN组成 14 5.3.2 BOOT.BIN生成方法 15 5.4 FSBL.BIN和APP.BIN等的生成 15 5.5 制作*BIN及烧写的具体步骤 15 5.5.1 制作*bin流程 15 5.5.2 BOOT.bin制作过程 15 5.5.3 FSBL.bin和APP.bin等的生成过程 22 5.6 烧写BOOT.BIN步骤 26 5.6.1 通过SDK工具烧写步骤 26 5.6.2 通过上位机烧写软件的烧写步骤 29 5.6.3 通过串口调试助手烧写步骤 29 6 Zynq Qspi控制器 30 6.1 基本特性 30 6.2 I/O接口 31 6.3 QSPI控制器模式 33 6.3.1 I/O模式 33 6.3.2 线性地址(linear address)模式 33 6.3.3 传统(legacy)SPI模式 34 6.4 QSPI 例程 34 6.5 QSPI控制器支持访问32MB方法 35 6.5.1 Bank地址寄存器(Bank address register) 35 6.5.2 扩展地址模式(Extended address mode) 35 6.5.3 使用新写命令(New commands) 35 6.6 QSPI FLASH选择 35 6.7 作为BOOT器件考虑 35 7 µC/OS系统启动指南 36 7.1 INTRODUCTION 36 7.1.1 Software Requirements 36 7.1.2 Hardware Requirements 36 7.2 HARDWARE DESIGN 37 7.2.1 Step 1. Invoke the Vivado IDE and Create a project 37 7.2.2 Step 2. Create an IP Integrator Design 39 7.2.3 Step 3. Add and setup the Zynq processor system IP block 39 7.2.4 Step 4. Customize the Zynq block for our design 41 7.2.5 Step 5. Add the soft peripherals 45 7.2.6 Step 6. Generate HDL Design Files 47 7.2.7 Step 7. Synthesis, Implement and Generate Bitstream 48 7.3 SOFTWARE DESIGN 49 7.3.1 Step 1. Installation of the µC/OS Repository 49 7.3.2 Step 2. Generate the µC/OS BSP 50 7.3.3 Step 3. Build and Debug the Demonstration Project 54 7.3.4 Step 4. Program the AXI Timer 0 with the ucos_axitimer Driver 55 7.3.5 Step 5. Program the AXI Timer 1 with the Xilinx tmrctr Driver 58 7.4 CONCLUSION 59 8 Linux系统启动指南 59
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值