当前的板卡平台一般是一块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-ii中使用lwip及usb相关推荐

  1. lwip协议栈在linux运行,LwIP协议栈在uCOS II下的实现

    1.概述: LwIP协议栈在设计时就考虑到了将来的移植问题,因此把所有与硬件.OS.编译器相关的部份独立出来,放在ucosii&LwIPsource etlwiparch目录下.因此LwIP在 ...

  2. 51单片机中使用ucos ii的优缺点(好文)

    摘要:近年来,在单片机系统中嵌入操作系统已经成为人们越来越关心的一个话题.本文通过对一种源码公开的嵌入式实时操作系统ucos ii的分析,以51系列单片机为例,阐述了在单片机中使用该嵌入式操作系统的优 ...

  3. 用C语言写ucos中断服务程序,在ARM处理器上移植uCOS II的中断处理

    uCOS II是一个源码公开.可移植.可固化.可剪裁和抢占式的实时多任务操作系统,其大部分源码是用ANSI C编写,与处理器硬件相关的部分使用汇编语言编写.总量约200行的汇编语言部分被压缩到最低限度 ...

  4. UCOS II移植到STM32F103开发板

    早期嵌入式开发没有嵌入式操作系统的概念 ,直接操作裸机,在裸机上写程序,比如用51单片机基本就没有操作系统的概念.通常把程序分为两部分:前台系统和后台系统. 简单的小系统通常是前后台系统,这样的程序包 ...

  5. ucos II任务管理之一:挂起任务

    Ucos II 任务管理之一 创建好了任务之后,就已经初步跨进了ucos II 的编程了.随着进一步的编程,发现学会创建了任务还是不够的. 在我的项目里,需要实现485通信功能,我创建了任务1用于串口 ...

  6. ucos II任务管理之三:删除任务

    ucos II任务管理之三:删除任务 有了前面的经历之后,mcu21决定全面地学习了任务的管理.这样在项目编程中才能做到"信手拈来". 在ucos II 里,创建一个任务之后,可以 ...

  7. ucos II 创建第一个任务之一

    Ucos II创建第一个任务 我们已经从远处欣赏过ucos II 的身材,现在可以近距离地欣赏Ucos II性感的局部了. 任务是什么? 有一句话:CPU不同的时刻段总是在执行着优先级最高的任务.所以 ...

  8. 基于STM32的简易示波器的UCOS II嵌入式实时操作系统实现

    基于STM32的简易示波器的UCOS II嵌入式实时操作系统实现 在基于STM32的示波器的实现的基础上,在STM32上移植UCOS II嵌入式实时操作系统. 在UCOS II操作系统中将各个功能分发 ...

  9. ucos ii堆栈大小检测

    在使用ucos ii时经常会有疑问,这个堆栈该给多大,虽然ucos ii 自带了任务堆栈检测,但是我觉得太麻烦了,而且还会占用资源,我投机取巧的使用内存是否为0来判断堆栈是否使用过,进而检测出堆栈的最 ...

  10. Vivado和Quartus ii 中工程存档(Archive project)及打开

    下面介绍下在Quartus ii 中进行工程存档(Archive project)以及打开存档工程的操作方法,当需要把工程发给其它电脑时,用工程存档比较方便,空间占用小,而且不会出现文件丢失的情况.我 ...

最新文章

  1. JAVA实现长连接(含心跳检测)Demo
  2. C# 获取一些简单的本机信息
  3. Tomcat介绍及性能优化
  4. 两节点的最小公共祖先LCA
  5. [原创]Flex文本框自动提示(AutoSuggest)、自动完成(AutoComplete)
  6. hihoCoder挑战赛25
  7. 第5条:用枚举表示状态、选项、状态码
  8. 2.2.2 物理层设备(中继器、集线器)(转载)
  9. windows8 开发教程 教你制作 多点触控Helper可将任意容器内任意对象进行多点缩放...
  10. 【译】EntityFramework6与EntityFrameworkCore的区别
  11. webservice框架 java_JAVA开发Web Service几种框架介绍
  12. Java用while求100以内奇数和
  13. Nagios安裝与配置
  14. 古文觀止卷七_獲麟解_韓愈
  15. Linux安装杀毒软件clamav
  16. 计划任务和周期任务mail,at,batch,atq, atrm, cron, crontab
  17. Bezier和B样条曲线
  18. ae显示不能稳定链接服务器,ae正在连接到动态链接服务器
  19. android studio出现,Android studio 出现缺少sdk的情况,如何解决?
  20. 我的python初学练习

热门文章

  1. 高通RAM dump解析简介
  2. String的常用方法
  3. matlab 平滑曲线连接_MATLAB画图
  4. jq ui.dialog.js简介
  5. 宝峰c1对讲机写频软件_宝峰888s写频软件
  6. 曲面上的测地线 MATLAB,§6曲面上的测地线.PDF
  7. 3D 打印开源软件 cura
  8. 那些年,我深爱着的PPT
  9. Science和Nature杂志论文异同简述
  10. matlab描点连线及坐标轴里外颜色改变