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

你可能感兴趣的:(嵌入式开发,ZYNQ,ucos,lwip,usb)