LPC55S69 微控制器内部集成了两个 ARM Cortex-M33 内核, 都可以跑在 150MHz 的主频上 。 通常情况下, 使用其中一个内核 (core0)就可以完成足够多的工作 。 但是, 让一个 150MHz 的 Cortex-M33 内核闲在那里实在浪费, 并且在一些对性能有要求的情况下, 使用双核同时工作确实可以简化应用的开发过程, 并提升系统整体的工作效率 。 笔者最近就遇到了这么一个案例 。
笔者在 LPCXpresso55s69 开发板上面做语音关键字识别的项目时, 想在 LCD 显示屏模块上显示点交互信息, 改善用户体验 。 笔者使用的是一块 SPI 总线 320x240 像素的 LCD 屏模块, 使用 RGB565 的像素格式, 如果使用 DMA+SPI 的方式刷屏自然可以为主 CPU 减负, 但需要提前缓存整张图片到内存中, 而存一幅图需要连续的 150KB 内存, 占用内存空间比较大 。 虽然 LPC55S69 有足够的内存(320KB), 但是使用人工神经网络模型占用的内存规模也比较大, 在不确定内存能否够用的情况下, 笔者觉得仅仅为刷屏分配这么多内存无疑是奢侈的, 并且屏幕交互信息很简单, 基本上就是一个黑色的背景色加几行字而已, 现算现刷的方式可以大幅降低内存和代码的占用量 。 但使用主 CPU 轮询 SPI 会严重影响人工神经网络的计算实时性 。 此时, 使用副 CPU 在主 CPU 计算的时候执行刷屏的操作, 哇, 简直不要太香 。
在本文中, 笔者将介绍笔者从零开始搭建双核工程的过程 。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !