复旦微的FMQL10S400ZYNQ芯片+国微SM25QH256MX的FLASH的使用体验

记全国产化的一个小测试系统的一次全程体验

  从六月份到现在,一直在学习使用并测试国产化平台项目,使用的主控芯片是复旦微的FMQL10S400ZYNQ芯片,使用的外挂flash是国微的SM25QH256MX的FLASH芯片。这两款都是祖国出品的佼佼者,向他们致敬,打破外佬封锁,为实现国产化突破重重障碍,确实牛逼!

  赞赏归赞赏,建议也得提,虽然我是一个字母搬运工。你们资料给的太少了,即使我时刻在支持国产,但不得不说外国佬做的东西给的资料就是详细啊,用起来得心用手,资源广泛,生态环境好,这又让我想起了我刚参加工作时,去听我们单位一位院士老前辈的报告,老前辈说的大意是”为什么现在我们的芯片越来越差,是因为我们自己不用,我们自己不用,设计芯片的厂家就没钱,没钱就设计不出来高性能的芯片,设计不出来高性能的芯片,我们自己更不会用,如此,恶性循环,好在,现在开始注重国产化了,我们的春天到来了。“

  扯了这么多还是想说,芯片商多做一些文件支持、技术支持,像xilinx的芯片资料真是非常多,推广的也多,PDF动不动就是几千页,真是平常遇到的问题,里面都能找到解决的方法。而复旦微的资料,目前销售给我们的,寄存器介绍+寄存器讲解+例程+各种有的无的PDF,也就一两千来页吧,真的开发起来太费劲了,而且技术支持也不太好,可能芯片商太忙了。使用的flash芯片是国微的,资料更少了,简简单单的介绍了怎么用的,还不详细,资料上留的联系方式,区号都写错了。但是技术支持非常给力,咨询请教的问题都实时给出了解答,非常赞!这样咱们才会愿意用啊,才会越做越好啊!

开发的过程

  我们项目组使用复旦微的zynq,目前是开发了一些裸机的测试程序,主要是为后面做项目做铺垫。有串口的测试、MIO、EMIO、TTC、QSPI、多核的启动、DDR测试等功能,开发的过程还是挺艰辛的,因为总感觉哪地方不对劲,但又说不出来,可能是技术不到位吧,还要努力学习!复旦微提供了一些例程,一些库函数,说实话,这些函数还是挺丰富的,但是大佬您给个说明啊,不能让我们猜是怎么用的啊。。。。

遇到的坑

  在做串口中断测试的时候,跑复旦微提供的例程可以跑过去,自己修改的就是不行,无奈,肯定自己的问题啊,因为官方是可以过去的,就找呀找bug,找了几天小bug,发现中断这玩意,似乎有顺序要求,调试了几次确实有影响,算是自己遇到的第一个坑吧,但总算爬出来了,这个还给复旦微的技术人员反应了,不知道他测试了吗。还是再说一下中断的事情,做MIO测试时,发现有些中断条件无法触发,因为我们暂时用不上他,也就未去解决。还有固化的程序的时候,那个procise不太好用,一直在用IAR去固化。还有就是操作qspi flash 的时候,这个是我第一次去这么底层的操作flash,刚开始使用的国微的这个片子,反正调着调着出问题了,解决了半天没解决掉,由于时间紧急就换了个flash,是winbond的,操作起来真好用,因为复旦微是支持这个片子的。。。但是我们需要将32MB 的空间都读写出来,这就又让我遇到了一个大坑,基于同事的以往经验,是使用4字节地址去读写高128Mb的地址空间,我就开始了为期五天的漫长摸索时刻,又是用指令去切换,又是擦除,读写的,怎么也读不到高128Mb,后来我受不了了,去搬来了我们无所不会、无所不通、无所不精的技术大拿,在我的误导下,他帮我研究了一下午,说是不是高128Mb的地址被QSPI1占用了?!好吧,我这个傻帽,然后依据大拿的指示,调整方向,不用4字节模式了,使用高低地址切换的方法,终于读到了完整的flash地址空间。winbond的高低地址切换指令是:往0xc5寄存器写0x0001,切换高地址区间;往0xc5寄存器写0x0000,切换低地址区间。winbond用的爽爽的,无奈,还是要换回国产的才行啊,就又开始迎战国微的片子了,换回来之后,发现直接不能固化程序了,喊着我的师傅来解决这个问题,搞了三天,发现是flash里面的状态位被改变了,这也让我们想起了之前那个国微的片子不能使用的原因了,大概率是状态为被改变了。因为zynq固化和启动是支持x4或x8的,而这个被改变的状态位恰好是QE位,也就是使能X4位,直接不使能了,也就无法固化和启动了。表征的现象就是校验和出错!修改的方法是:往0x01寄存器写0x40,将QE位重新使能,这是一个非易失的寄存器。由于有了调试winbond 的经验,这次读写高地址直接就冲向了高低地址切换的方法,国微的切换方法是:往0x18寄存器写0x0001,切换为高地址。问我为什么知道是这样做的,我翻看国微给的手册,没有提到这一点,只有一个BNAK寄存器说有这个功能,但这个功能怎么实现的,不给写,就去联系国微的FAE,FAE发给了我一个指令表格,我看到了BANK寄存器的地址,就操作成功了,试问国微为什么你们有这个功能,有这个表格为什么不放在手册里呢?就是玩吗?就此还有一个问题,为什么QE位会被改掉呢?经翻阅程序,发现在操作flash 的时候,有一段解锁flash 的程序,会修改QE位,将其注释掉,就好了。(据说flash不需要解锁,哎,学识太浅,基本功不扎实)

  至此,我们的测试系统已经搭建的差不多了,也让我们松了一口气,也迎来了高温假,明天再过去多测几把,搞稳定了再说。

  细细回想,遇到的bug大多还是自己的功力问题,国产加油!国产化加油!

  这好像是我第三次用国产芯片了,第一次记得是做的一个智能电表的项目,使用的是深圳锐能微的片子,那个真是稀烂,我没记错的话,一个pdf文档,一个非常复杂的DEMO程序,别的再无其他。

  第二次使用的国产片子就牛逼多了,不提供任何软件文档,有问题直接询问设计这个片子的设计师,因为这是我们所自己设计的片子,可以pin to pin 软硬件无需改动,原位替代stm32f103的一款国产芯片!非常牛逼,我实际使用过,有需要的同行可以试试啊,我使用的是军用的,型号就不透漏了。民用的也有,叫什么我也忘记了,好像也是什么103吧,这个好像还有开发板,有需要的可以给你们咨询一下。无情的为我们的芯片打一波广告。

                              五六七、奥利给!

  • 12
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 24
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 24
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值