就如free叔叔说的那样,单纯仿一个东西就太easy了,能搞清楚设计思路,以及掉过的坑等,解决这些问题,才是对自己的一个提高。于是,才有了这个帖子。这个帖子说实话,水起来,会水的很长,不管硬件还是软件的。但是实在夜也快长了,就慢慢挖坑吧。在这里,利用周末的时间,写完这个坑。那么就用时间的角度来写吧。 其实那时候我没想过说要打板,想着便宜的话直接入块就好了,但是去看了下,价格实在太高了。所以就想着自己DIY了。所以就有了下面的图。打了三次板子,花的钱比买一次正版的还贵了。但是我想着这玩意,说好玩真的好玩,说没意义真没意义,就是感觉小车拉大货。但实际还是学到了很多,所以也就弄起了这个活动。
首先就来说
第一坑吧。第一版的时候买的芯片买错了,但是F7实在太辣鸡贵了。买的芯片flash是1M,官方的固件1.2M。尴尬了,但是还是不怂,先怼进去再说吧。开始用jflash下载死活都连接不进去,尼玛,能不能不要这么坑爹,还没玩就开始被日。就像下图,一开始以为是芯片问题,后来去看了下原理图,尼玛抄sch抄到没底线,官方的复位电路没接电容,好了,怼了上个电容,连接上去,但是会提示固件超出地址,还是没法下载。
于是最后还是转到了linux试试下载代码,固件可以烧录进去,但是会提示固件超出flash地址的没法下载。相当于阉割了。
然后就怼进去了,发现有些python例程,比如物体移动识别等缺少库没法运行,就可以知道剩下的那些基本是加载算法库的。好在于阉割版版的把解析器编译器和外设等已经加载进去了,基本的还是可以怼。
但是我还是想知道图像识别这块到底占用了多少空间,我想到了
单独运行micropython部分的代码,然后慢慢再加我想要的识别库。但是我又掉了
第二坑。
原本我以为自带的Mircopython部分的代码,直接make就行了,因为里面的board有openmv的文件夹,这样可以直接单独生成mpy的固件。但是我还是错了。make下去一堆错误,我也忘了,因为还要牵制到mv的摄像头驱动,LCD驱动等,还有图像库,所以Mpy部分跟着Mv部分有关联,你一改外面的代码,内部的代码就又一堆错误。具体的Makefile解析我后续会分享下,然后可以方便移植到别的平台底层去,做特定的图像识别。
基本的第一部肯定是移植下Mpy的解析器,编译器等。移植也比较简单,但是我也入坑过,比如像D大之前移植到小钢炮,因为芯片型号(flash不一样)一样直接修改下板子参数即可。在micropython的github下载源码,,openmv用的型号是STM32F765,所以得放进去相关的启动文件等,放置下面两个文件。
然后在pyp库的外设底层文件里面加进去STM32F765这个型号。比如ADC.c,IIC.c,反正就你所要使能的外设,都得改。make的过程有出现错误,根据提示的错误做出相应的修改,错误也就慢慢少了,mpy底层方面基本都配置好了,在mpconfigboard.h文件配置使能外设即可。
在make到ST的hal库的时候,有一个文件提示某个参数没声明,这个是hal的底层库,怎么可能没声明。后续我去查了下数据手册,发现hal的头文件声明的寄存器并不是C文件的那个,一脸懵逼。最后跟头文件的寄存器声明换过来了才可以,难道这个ST的抽象底层?
接下来不出意外就可以编译成功了。
单纯的移植Python的解析器分析器编译器以及基本的外设固件代码是300k,完整的openmv固件大小是1.2m。优化的空间还是蛮大的。
烧录Mv的mpy固件,插入usb。提示安装驱动。
上串口软件,打印,移植成功。
点灯跑灯啥的跟其他的一样。然后一些算法库还在学习当中,也在慢慢移植分享,慢慢掉坑。
有点晚了,好累,先放着。
此内容由EEWORLD论坛网友RCSN原创,如需转载或用于商业用途需征得作者同意并注明出处