草庐IT

复旦微FMQL(国产Zynq) 【IAR裸机开发之PS】——前言

奥利奥冰茶 2023-04-10 原文

关注+星标公众,及时获取更多技术分享~ 

 作者 | 冰茶奥利奥

微信公众号 | 嵌入式电子创客街

前一段时间写了不少使用Xilinx的Zynq芯片的文章,说实话在整个开发过程中几乎没有遇到什么疑难杂症,说明Zynq经过几年市场的验证,已经很稳定了。链接如下:

ZYNQ SDK开发调试踩坑指南_奥利奥冰茶的博客-CSDN博客_zynq网络调试https://blog.csdn.net/shizhibuyi1234/article/details/123805071?spm=1001.2014.3001.5502

Zynq 【SDK裸机开发之PS】——串口接收缓存_奥利奥冰茶的博客-CSDN博客_zynq串口接收https://blog.csdn.net/shizhibuyi1234/article/details/124433524?spm=1001.2014.3001.5502

Zynq 【SDK裸机开发之PS】——DDR的内存分配使用详解_奥利奥冰茶的博客-CSDN博客Zynq如果跑操作系统的话,内存管理的工作都会交给系统来操作,但是如果是裸机的话,则需要自己对DDR3的内存进行管理。https://blog.csdn.net/shizhibuyi1234/article/details/124409284?spm=1001.2014.3001.5501https://blog.csdn.net/shizhibuyi1234/article/details/124409284?spm=1001.2014.3001.5501现在国产化进度赶人,进口的芯片只做了个功能验证,马上就要换上国产的。国内现在已经做出来Zynq的只有复旦微一家,已经在研制的有上海安路,还有成都华微(不排除深圳国威也在做,毕竟这个市场潜力很大)。

目录

使用场景

芯片架构有区别

Procise开发环境

IAR开发环境

市场潜力


使用场景在哪里

首先明确一点,Zynq这类ARM+FPGA的异构SOC芯片绝不适用于低成本方案 ,为什么?

  • 使用这类芯片几乎都需要配套DDR3,一片DDR3的价格大概在一百元,这还是进口的价格,国产的更贵;
  • 只要使用DDR,就至少需要八层电路板,投一次板多少钱?2千元以上;
  • 如果使用复旦微家的FMQL,就会捆绑销售他家的nor flash,因为别家的和他不兼容。而且这个nor flash还是军温级的,一片1千元以上(进口的仅需三十元)。

那么使用这种芯片优势在哪呢? 

  • ARM编译很快,FPGA编译很慢,前期一些指标急于验证的话可以使用ARM来快速验证
  • ARM适合做协议层和业务层数据解析和一些逻辑控制,因为这些东西通常需要反复修改,使用ARM非常方便。可移植性也很好,意味着可以直接从旧项目上copy代码;
  • FPGA适合做算法和对时序有严格要求的控制,或者数据采集这种高吞吐率的工作。这种程序后期基本不需要大动;
  • 由于是芯片级别的结合,因此ARM和FPGA之间的通信变得非常简单,直接用AXI总线就可以了,相比传统方案的电路板上走线简直是多快好省。

芯片架构有区别

不同于Xilinx的双核Cortex-A9 +  FPGA,复旦微家的设计是四核CortexA7 + FPGA。FPGA方面的架构和资源是一样的,几乎可以平行替代;ARM方面,两者都属于Armv7架构,两匹骡和四头驴的区别吧,都不算太强悍。Zynq推出的时间毕竟比较长了,在当时A9算是比较新的架构,可是复旦微的FMQL后来居上,不但未出其右,甚至还差了那么一点意思(成都华威的据说是四核A53,性能更强悍,比较期待)。

ARM体系架构图

至于为什么不采用和Xilinx家双核A9的架构,我猜测可能是知识产权的问题,毕竟当时Zynq是 Xilinx 和 ARM 两家共同研发的,复旦微要加ARM核必然需要ARM公司的授权,这个坎是绕不过的。

  Zynq 芯片架构图

ARM这块采用的架构不同,这也就带来了软件移植上的问题,Zynq使用定制的eclipse(叫做SDK)开发Arm软件,和vivado配合整个生态链比较闭环,开发人员也不需要关注太多底层的东西,例如bsp文件是如何生成的,内存是如何分配的等等。但是FMQL没有开发自家的IDE,因此使用的是IAR这个开发环境,再配合上低配版vivado软件——Procise。

Procise开发环境

Procise就不过多介绍了,山寨vivado。这个软件的作用仅仅是把vivado的工程导入进来,然后生成开发所需的bsp文件,再导出到IAR里面去。

由Vivado软件生成的 bit 流几乎可以直接烧录进FMQL的FPGA部分,除了部分功能需要打patch才能过三温,说明复旦微在FPGA这部分已经能够完全兼容Xilinx了。Procise软件也就在建立工程和固化程序时用一下,就完成使命了。

procise软件界面

IAR开发环境

IAR这个上古IDE搞嵌入式的想必都不陌生,但是实际使用的人估计并不多,大多数人都在使用Keil。我也是第一次用IAR,新版的IAR和Keil的界面差不多,但是更有喜感,一股城中村改造失败的废土风。但是有一说一,debug模式下对变量的观察还是可圈可点的,甚至强于Keil。

IAR软件界面

市场潜力

目前国内的军品FPGA市场主要还是上海复旦微一骑绝尘,剩下深圳国威、成都华威和五十八所几个国企三分天下。复旦微起步最早,积累的经验也最多。但是作为消费者,我更乐于看到深圳国威和复旦微掰手腕,打价格战。以K7为例,两年前复旦微卖1.5w一片,现在被国威打到2、3千一片,国产暴利褪去,一切都要归于市场选择。

在民品市场也是群雄逐鹿,竞争非常激烈。我个人其实更支持上海安路,一直在踏踏实实做正向研发,数据手册和技术文档都写的非常严谨。在这里浅浅预测一下,将来的FPGA市场中,军品还会是复旦微的天下,但是民品会被上海安路一家通吃。


如果您觉得这篇文章帮到了你,请点赞或者留下您的评论,您的鼓励是我前进的动力~

关注博主公众号 “嵌入式电子创客街” 获取更多及时技术分享~

  关注+星标公众,及时获取更多技术分享~ 

 

有关复旦微FMQL(国产Zynq) 【IAR裸机开发之PS】——前言的更多相关文章

  1. ruby - 使用 C 扩展开发 ruby​​gem 时,如何使用 Rspec 在本地进行测试? - 2

    我正在编写一个包含C扩展的gem。通常当我写一个gem时,我会遵循TDD的过程,我会写一个失败的规范,然后处理代码直到它通过,等等......在“ext/mygem/mygem.c”中我的C扩展和在gemspec的“扩展”中配置的有效extconf.rb,如何运行我的规范并仍然加载我的C扩展?当我更改C代码时,我需要采取哪些步骤来重新编译代码?这可能是个愚蠢的问题,但是从我的gem的开发源代码树中输入“bundleinstall”不会构建任何native扩展。当我手动运行rubyext/mygem/extconf.rb时,我确实得到了一个Makefile(在整个项目的根目录中),然后当

  2. Ruby Sinatra 配置用于生产和开发 - 2

    我已经在Sinatra上创建了应用程序,它代表了一个简单的API。我想在生产和开发上进行部署。我想在部署时选择,是开发还是生产,一些方法的逻辑应该改变,这取决于部署类型。是否有任何想法,如何完成以及解决此问题的一些示例。例子:我有代码get'/api/test'doreturn"Itisdev"end但是在部署到生产环境之后我想在运行/api/test之后看到ItisPROD如何实现? 最佳答案 根据SinatraDocumentation:EnvironmentscanbesetthroughtheRACK_ENVenvironm

  3. ruby - 是否可以覆盖 gemfile 进行本地开发? - 2

    我们的git存储库中目前有一个Gemfile。但是,有一个gem我只在我的环境中本地使用(我的团队不使用它)。为了使用它,我必须将它添加到我们的Gemfile中,但每次我checkout到我们的master/dev主分支时,由于与跟踪的gemfile冲突,我必须删除它。我想要的是类似Gemfile.local的东西,它将继承从Gemfile导入的gems,但也允许在那里导入新的gems以供使用只有我的机器。此文件将在.gitignore中被忽略。这可能吗? 最佳答案 设置BUNDLE_GEMFILE环境变量:BUNDLE_GEMFI

  4. ruby - 在 Windows 机器上使用 Ruby 进行开发是否会适得其反? - 2

    这似乎非常适得其反,因为太多的gem会在window上破裂。我一直在处理很多mysql和ruby​​-mysqlgem问题(gem本身发生段错误,一个名为UnixSocket的类显然在Windows机器上不能正常工作,等等)。我只是在浪费时间吗?我应该转向不同的脚本语言吗? 最佳答案 我在Windows上使用Ruby的经验很少,但是当我开始使用Ruby时,我是在Windows上,我的总体印象是它不是Windows原生系统。因此,在主要使用Windows多年之后,开始使用Ruby促使我切换回原来的系统Unix,这次是Linux。Rub

  5. ruby-on-rails - 在 Rails 开发环境中为 .ogv 文件设置 Mime 类型 - 2

    我正在玩HTML5视频并且在ERB中有以下片段:mp4视频从在我的开发环境中运行的服务器很好地流式传输到chrome。然而firefox显示带有海报图像的视频播放器,但带有一个大X。问题似乎是mongrel不确定ogv扩展的mime类型,并且只返回text/plain,如curl所示:$curl-Ihttp://0.0.0.0:3000/pr6.ogvHTTP/1.1200OKConnection:closeDate:Mon,19Apr201012:33:50GMTLast-Modified:Sun,18Apr201012:46:07GMTContent-Type:text/plain

  6. 世界前沿3D开发引擎HOOPS全面讲解——集3D数据读取、3D图形渲染、3D数据发布于一体的全新3D应用开发工具 - 2

    无论您是想搭建桌面端、WEB端或者移动端APP应用,HOOPSPlatform组件都可以为您提供弹性的3D集成架构,同时,由工业领域3D技术专家组成的HOOPS技术团队也能为您提供技术支持服务。如果您的客户期望有一种在多个平台(桌面/WEB/APP,而且某些客户端是“瘦”客户端)快速、方便地将数据接入到3D应用系统的解决方案,并且当访问数据时,在各个平台上的性能和用户体验保持一致,HOOPSPlatform将帮助您完成。利用HOOPSPlatform,您可以开发在任何环境下的3D基础应用架构。HOOPSPlatform可以帮您打造3D创新型产品,HOOPSSDK包含的技术有:快速且准确的CAD

  7. 【鸿蒙应用开发系列】- 获取系统设备信息以及版本API兼容调用方式 - 2

    在应用开发中,有时候我们需要获取系统的设备信息,用于数据上报和行为分析。那在鸿蒙系统中,我们应该怎么去获取设备的系统信息呢,比如说获取手机的系统版本号、手机的制造商、手机型号等数据。1、获取方式这里分为两种情况,一种是设备信息的获取,一种是系统信息的获取。1.1、获取设备信息获取设备信息,鸿蒙的SDK包为我们提供了DeviceInfo类,通过该类的一些静态方法,可以获取设备信息,DeviceInfo类的包路径为:ohos.system.DeviceInfo.具体的方法如下:ModifierandTypeMethodDescriptionstatic StringgetAbiList​()Obt

  8. 微信小程序开发入门与实战(Behaviors使用) - 2

    @作者:SYFStrive @博客首页:HomePage📜:微信小程序📌:个人社区(欢迎大佬们加入)👉:社区链接🔗📌:觉得文章不错可以点点关注👉:专栏连接🔗💃:感谢支持,学累了可以先看小段由小胖给大家带来的街舞👉微信小程序(🔥)目录自定义组件-behaviors    1、什么是behaviors    2、behaviors的工作方式    3、创建behavior    4、导入并使用behavior    5、behavior中所有可用的节点    6、同名字段的覆盖和组合规则总结最后自定义组件-behaviors    1、什么是behaviorsbehaviors是小程序中,用于实现

  9. ruby-on-rails - environment.rb 中设置的常量在开发模式中消失 - 2

    了解Rails缓存如何工作的人可以真正帮助我。这是嵌套在Rails::Initializer.runblock中的代码:config.after_initializedoSomeClass.const_set'SOME_CONST','SOME_VAL'end现在,如果我运行script/server并发出请求,一切都很好。然而,在我的Rails应用程序的第二个请求中,一切都因单元化常量错误而变得糟糕。在生产模式下,我可以成功发出第二个请求,这意味着常量仍然存在。我已通过将以上内容更改为以下内容来解决问题:config.after_initializedorequire'some_cl

  10. ruby - Rails 开发服务器、PDFKit 和多线程 - 2

    我有一个使用PDFKit呈现网页的pdf版本的Rails应用程序。我使用Thin作为开发服务器。问题是当我处于开发模式时。当我使用“bundleexecrailss”启动我的服务器并尝试呈现任何PDF时,整个过程会陷入僵局,因为当您呈现PDF时,会向服务器请求一些额外的资源,如图像和css,看起来只有一个线程.如何配置Rails开发服务器以运行多个工作线程?非常感谢。 最佳答案 我找到的最简单的解决方案是unicorn.geminstallunicorn创建一个unicorn.conf:worker_processes3然后使用它:

随机推荐