上位机图像处理和嵌入式模块部署(mcu开发注意事项)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

        mcu的种类很多,生产的厂家很多。这里面有进口的,有国产的,并且国产替代的趋势越来越明显。但是,不管是进口,还是国产,使用方法都大同小异。除了硬件之外,软件开发的基本流程上面,也是几乎感觉不到区别。如果同学们在之前的开发过程当中,已经有了stm32开发的经验,那么几乎可以很快切到其他厂家的mcu上面去。那除了mcu切换之外,实际上还是有几个地方需要注意一下。

1、学习的时候可以优先选择stm32

        学习它,主要是因为它的资料多。但是生产中用不用它,那就是另外一回事。因为到时候供应链、价格和可替代性,都是需要考虑的因素。但是对于新手来说,stm32的使用还是非常方便的。

2、多准备几个烧录器和串口

        实际开发的时候,有可能会遇到多种烧录器,比如dap、st-link v2、wch-link等等。虽然st-link v2可以解决大部分问题,但是保不齐哪天烧录器坏了,如果因此耽误开发就有点得不偿失了,因此各种烧录器多准备几个就可以了,反正也不贵。usb转ttl串口也是一样的道理。

3、用好keil软件能解决大部分问题

        除了像ch32v307这种risc-v的mcu,需要指定的mounriver IDE来开发。其他几乎所有的arm mcu都可以用keil开发。唯一的区别,就是添加不同厂家的pack就可以了。当然,这里面有的同学可能会用IAR、CubeIDE,这里面的差距其实没有那么的大。能解决自己问题的IDE,就是好的IDE。

        本质上说,mcu的开发更加类似于linux的bootloader,只不过mcu的开发除了硬件之外,还涉及到业务的开发。所以大家使用不同的mcu,应该尽量忽略硬件的差异,而看到事物的本质,特别是业务后面的本质逻辑。从这一点说,大家关心的重点应该是用keil实现业务逻辑,而不是在不同的IDE之间跳来跳去。

4、尽量多使用厂家给出的demo代码

        厂家给出的demo代码,几乎都是涉及mcu底层的代码,比如说gpio、uart、spi、iic、ad、dma、watchdog、usb、eth、tim等等。这部分内容通常来说,我们只需要拿过来用就可以了,并不需要过分关注里面的细节。等到出问题了,或者说压力测试通不过的时候,再来看也不迟。

5、掌握编译、链接、烧录的设置

        虽然mcu在一颗芯片上集成了cpu、ram和flash,但是本质上它还是符合gcc toolchain的一套规则,即asm、gcc、ld、objdump、objcopy、gdb这套工具链。所以我们需要知道arm汇编语言、c语言编译、工程链接、map文件生成这些基本的原理。除此之外,我们还要知道ram用了多少、flash用了多少,每一部分中code大小是多少、read only data大小是多少,global初始化data大小、global 未初始化data大小、堆的大小、栈的大小、vector向量首地址,这些普通程序根本不会关心的信息,作为mcu开发者都需要知道的。

6、基本的电路阅读和电路调试

        简单的电路只有数字部分,复杂一点还有模拟电路。我们自己来说,要看得懂电路,会用万用表量电压,会用示波器测信号,这些基本技能掌握之后,就会给我们的工作带来很多的便利。当然,要是顺手把焊接学习下就更好了。

7、单步调试是最好的学习方法

        有了仿真器,其实就可以利用仿真器+keil做mcu的单步调试了,出了什么问题,基本都可以通过看汇编、看寄存器分析出来。这个时候有什么不明白的,除了看看代码,还可以结合芯片手册、万用表、示波器一起去分析,大部分bug都是这么来处理的。

8、重视软件分层和模块复用

        虽然大部分mcu代码都是通过while(1) + 中断来完成的。不过,还是建议大家尽量做到代码复用,底层驱动隔离开,中间件做好移植,上层业务代码和底层解耦。平时开发用到的数据结构、算法、crc、pid、字体库、图形包,这些都整理好,最好能够做到,来了一个新的mcu,可以快速移植上去,实现想要的效果。这样,基本上mcu就学到家了。

9、借助于pc程序或者linux系统向上突破

        mcu的频率、资源属性,决定了它比较适合做执行层的事情。但是复杂的协议分析、识别、定位和其他算法,这不是mcu擅长的,所以我们可以把mcu当成执行模块,去采样数据或者是执行动作,这样把最核心的部分放到上位机来做,一方面控制了成本,另外一方面也能从整体上提高系统软件的价值。

10、完成项目是继续学习的动力

        很多同学掌握mcu之后,不知道如何进一步提升,方法就是做项目。这些项目可以是实际的项目,也可以是自己给自己安排的项目,这都没有关系。通过做项目,可以提升技术水平,关键是还可以通过市场反馈,确认下自己的能力是否可以match市场的需求,以及通过开发什么样的产品可以让自己获得收益。

        一开始做的项目可以只是一个模块,等到后面日渐成熟了,可以开始设计产品、出方案。mcu本身既有硬件的部分,又有软件的开发,整体来说和市场接轨还是非常紧密的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/735589.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

我国人工智能核心产业规模近6000亿元

以下文章来源:中国证券报 2024世界智能产业博览会6月20日至6月23日在天津举行。会上发布的《中国新一代人工智能科技产业发展报告2024》显示,我国人工智能企业数量已经超过4000家,人工智能已成为新一轮科技革命和产业变革的重要驱动力量和战略…

SAP PP学习笔记22 - 生产订单(制造指图)的元素1

前面几章讲了PP 里面生产计划的各种策略以及策略的Customize。 SAP PP学习笔记20 - 复习总结一下MTS,MTO,ATO的各种生产策略-CSDN博客 SAP PP学习笔记21 - 计划策略的Customize:策略组 > 策略 > 需求类型 &#xff1…

Java——集合(一)

前言: Collection集合,List集合 文章目录 一、Collection 集合1.1 集合和数组的区别1.2 集合框架1.3 Collection 集合常用方法1.4 Collction 集合的遍历 二、List 集合2.1 List 概述2.2 List集合的五种遍历方式2.3 List集合的实现类 一、Collection 集合 1.1 集合和…

正则表达式,linux文本三剑客

正则表达式匹配的是文本内容,linux的文本三剑客都是针对文本内容,按行进行匹配 文本三剑客: grep 过滤文本内容 sed 针对文本内容进行增删改查 awd 按行取列 一.grep命令 作用就是使用正则表达式来匹配文本内容 -m 数字:匹配…

什么是深度神经网络?与深度学习、机器学习、人工智能的关系是什么?

什么是深度神经网络?与深度学习、机器学习、人工智能的关系是什么? 🤖什么是深度神经网络?与深度学习、机器学习、人工智能的关系是什么?摘要引言正文内容1. 什么是深度神经网络?🧠1.1 深度神经…

git拉取gitee项目到本地

git安装等不做赘述。 根据需要选择不同操作 1.只是单纯拉取个项目,没有后续的追踪等操作 不需要使用git init初始化本地文件夹 新建一个文件夹用于存储项目,右键选择 git bash here 会出现命令行窗口 如果像我一样,只是拉取个项目作业&…

stm32学习笔记---GPIO输入(代码部分)按键控制LED/光敏传感器控制蜂鸣器

目录 第一个代码:按键控制LED 模块化程序 LED驱动程序 GPIO的四个读取函数 GPIO_ReadInputDataBit GPIO_ReadInputData GPIO_ReadOutputDataBit GPIO_ReadOutputData Key驱动程序 第二个代码:光敏传感器控制蜂鸣器 蜂鸣器驱动代码 光敏传感器…

[C++][设计模式][模板方法]详细讲解

目录 1.动机2.理解1.设计流程对比1.结构化软件设计流程2.面向对象软件设计流程 2.早绑定与晚绑定 3.模式定义4.要点总结5.代码感受1.代码一 -- 结构化1.lib.cpp2.app.cpp 2.代码二 -- 面向对象1.lib.cpp2.app.cpp 1.动机 在软件构建过程中,对于某一项任务&#xff…

“实习情报官”上万月薪!量化私募发力学界

选拔要求有“门道” 量化私募的招聘又有新花样! 顶尖高校的数理人才一直是量化机构紧盯的“资源”,包括各类奥赛奖牌得主、理科状元。 最头部的量化机构,也一直是高校学霸们流向的去处。 但是,当业内已有近30家百亿量化私募机…

LLVM——安装多版本LLVM和Clang并切换使用(Ubuntu)

1、描述 本机(Ubuntu22)已经安装了LLVM-14,但是需要使用LLVM-12。安装LLVM-12和Clang-12并切换使用。 2、过程 安装LLVM-12和Clang-12。 sudo apt-get install llvm-12 sudo apt-get install clang-12 【注】运行 sudo apt-get install ll…

Inpaint软件最新版下载【安装详细图文教程】

​根据使用者情况表明在今天的数字时代,我们经常会遇到需要处理图形的情况,然而,当我们遇到水印在图形上,我们就需要寻找一个有效的方式来去除它,Inpaint软件就是一个非常实用的工具,它能够帮助我们去除水印…

6月21日训练 (东北林业大学)(个人题解)(待补全)

前言: 这次训练是大一大二一起参加的训练,总体来说难度是有的,我和队友在比赛时间内就写出了四道题,之后陆陆续续又补了了三道题,还有一道题看了学长题解后感觉有点超出我的能力范围了,就留给以后的自己吧。…

带百分比的进度条控件(ProgressBar)源码

带百分比的进度条控件(ProgressBar): 源码下载地址:https://download.csdn.net/download/wgxds/89472915

淘酒屋荣获2024中法贸易杰出服务商称号暨夏季窖主大会圆满召开

淘酒屋荣获中法贸易杰出服务商称号,暨闪光的创始人2024夏季窖主大会圆满召开 2024年,作为中法建交60周年的重要节点,同时迎来了中法文化旅游年,这为两国文化交流与合作开启了新的篇章。在庆祝中法贸易交流的重要时刻,…

[SAP ABAP] 追加内表数据

向内表中逐条追加数据记录 语法格式 APPEND <wa> TO <itab>. <wa>&#xff1a;代表工作区 <itab>&#xff1a;代表内表 示例1 结果显示&#xff1a; 将一个内表中的所有数据记录添加到另一个内表中 语法格式 APPEND LINES OF <itab1> TO <…

Android焦点机制结合WMS

文章前提&#xff1a; 了解WMS基本作用了解window的概念&#xff0c;phoneWindow&#xff0c;rootViewImpl了解view的事件分发 开始&#xff1a; 讲三件事情&#xff1a; window的创建&#xff0c;更新焦点的更新事件的分发 Window的创建&#xff0c;更新&#xff1a; wi…

赵丽颖纯白茉莉绽放温柔之美

赵丽颖纯白茉莉&#xff0c;绽放温柔之美在这个繁忙喧嚣的娱乐圈&#xff0c;赵丽颖以其独特的魅力&#xff0c;成为了无数人心中的白月光。近日&#xff0c;赵丽颖工作室发布了一组live图&#xff0c;她身着一袭温柔白裙&#xff0c;宛如一朵盛开的纯白茉莉花&#xff0c;美得…

论文阅读03(基于人类偏好微调语言模型)

1.主题 基于人类偏好微调语言模型&#xff08;Fine-Tuning Language Models from Human Preferences&#xff09; 出处&#xff1a; Fine-Tuning Language Models from Human Preferences、 2.摘要 奖励学习使得强化学习&#xff08;RL&#xff09;可以应用于那些通过人类判断…

深度学习windows环境配置

1 下载CUDA和cudnn 详见文章 CUDA与CUDNN在Windows下的安装与配置&#xff08;超级详细版&#xff09;_windows cudnn安装-CSDN博客 我电脑的CUDA下载链接如下 ​​​​​https://developer.nvidia.com/cuda-12-1-0-download-archive?target_osWindows&target_archx86…

Validation校验

文章目录 Validation校验作用依赖坐标UserController接收客户端注册用户请求的方法请求参数封装实体User的结构校验分组 Validation校验 作用 服务端接收前端传递的请求从参数的时候&#xff0c;可以对请求参数进行自动校验。 场景&#xff1a;通过postman向服务端发送一个注…