|
本帖最后由 廷润 于 2022-9-15 09:23 编辑
零:
题外话:早在多年以前,我们的PC电脑,现在的智能手机,主芯片都是多核,相比之下性能杠杠的,多核早已不是什么新鲜事。
多核处理器都是怎么工作的呢?下面记录一一点首次学习异核通信的一些点滴。
一:
首先是资源获取:
如何快速的把视角和维度站搞一点? 基础和概念确实卑微,推荐还是买开发板,相对有一套完整的知识作为支撑。相比单片(MCU)MP1是处理器(MPU),需要学习,看的文档真多。
如果自身基础到位,推荐还是多到官网找资料,例程多玩,多移植。技术更新迭代太快了,既然学会了“Hello word",非常有必要跟word 的精英多交流。其他:略。
二:
其次是环境搭建:
(一)IDE
ST近些年生态越来月完善,有自己的IDE,还有自动生成配置代码的软件,4年前听硬汉的视频讲解就激励推荐学习自动生成大规模的代码。所以STM32CubeIDE 这类型的工具装一个多玩。
曾经做一个STM32F105的USB自动升级软件,那时候很快就找到了一个官网的例程(2009),移植完成后感觉没啥就出货了。最后被国外很多市场骂,这都2018年了,你让我去哪找小于2GB的U盘???最后来回找历程,摸不着边,有些经验认识回复了也没理解--惭愧。其实说白了,最新的USB库,ST已经通过自己的生态软件可以自动生成了,所以官网也没发布独立的例程。大概理解了这么一回事,我就从安富莱F4的例程里面去搬移USB相关库文件突破了USB-IAP升级限制使用2GB以内的瓶颈。
回归主题,STM32MP15x,在某些方面还是可以使用MDK编译,推荐上了年纪的工程师,还是很有必要学习一下ST相关的生态软件,缩短自己大规模软件快速交付的时间。曾经踩过的一个坑,例程使用STM32CubeIDE1.7版本自动生成的模板代码,复制过来后,使用STM32CubeIDE1.4 去打开,编译,调适会出现种种的差异化,出现奇怪现象。还是那句话,与时俱进,同步升级IDE就解决了。
(二)RUN
安装虚拟机,安装Linux(例如Ubuntu18.04)
现在高版本的虚拟机,例如VM15以上,有些自带的工具强大了不少。公司有加密系统,主机的网卡设备,相关文档加密,该死的情况网口信息都不可见,不正常,如何做共享??? 正常升级VM-TOOL,设计好共享文件夹就解决这一问题了。,更多细节见开发板也会配网络环境相关的手册。
关于Ubuntu18,我曾经接触的版本相对低。现在捡起来接触(按照开发板的文档安装环境)经常出现各种版本冲突,依赖冲突。一不小心在root权限更新图形相关的以来库,图形界面的Ubuntu图形消息了,甚至开不了机。好事多磨多玩吧,暂时用不到QT相关的开发,还是可以继续躺平。更多信息看开发板虚拟机环境手册
其他配套相关的软件,举例子MobaXterm,协议服务对了,可以直接拖拉文件到开发板里面。见附件图片。
三:
(一)异核通信的架构,协议介绍
ST的生态软件,就可以自动生成 OPENAMP,RemoteProc相关的组件,mbox_ipcc.c相关的应用自能自己恶补知识了。
(二)一头雾水,肯定是先跑例程。
刚开始,看开发板第二版本的异核通信文档,觉得内容太多了,难消化,或许是消化不良吧。后来翻看第一版本的文档,内容比较粗略篇幅少,很快就把第一个例程跑起来了,接着配合新里程,跑完几个例程瞬间提升了理解能力。对于文绉绉的异核通信架构,协议介绍都理解了不少。
(三)已经工作多年,上班还是要干活的。任务是异核通信,做大数据搬移。
1、背景简要说明:STM32MP15x,A7核作为主要的通信交互,M4核是辅助核。功能安排,M4核快速制造一些规律的数据传送给A7核做应用。
2、具体的例程参考,官方有例程,也有此应用说明的文章。logicanalyser-master.zip,meta-st-stm32mpu-app-logicanalyser-dunfell.zip
3、点点滴滴的笔记见附件的 消化.xlsx
四:小结
1、我玩的ST官方异核通信例程,A7核正常基于Linux 系统,跑应用。
backend.c 因为自己的板子差异,可以把界面操作蔽掉,5MHz采样是分水岭,小于配置值(数据少)就运行tty传共享的数据,大于配置值(数据多)就使用sdb 搬运数据。
2、其实作为辅助核的M4,在某种角度也可以理解为一个应用。被A7调用运行,最后自己运行采集数据,并结合A7邮箱传过来的配置信息,做一一对应的响应。
3、没玩过,不熟悉一时半会比较难理解A7核的应用,以及M4核的代码。建议把例程跑起来,看打印信息就方便串起来理解了其中一个模式了。附件有三个打印的log。
五:其他
互相交流吧
|
|