【嵌入式】嵌入式硬软件开发介绍(个人看法)--从技能树中提取出来_嵌入式开发 硬件开发 知识体系-程序员宅基地

技术标签: 嵌入式硬件  单片机  

系列文章目录

提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加
TODO:写完再整理

文章目录


前言

认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长!

本文先对**嵌入式硬软件开发介绍(个人看法)**做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章


提示:以下是本篇文章正文内容

一、嵌入式的定义

嵌入式是一个很宽泛的概念,它是一种解决问题的解决方案,【防盗标记–盒子君hzj】不狭隘的仅仅限制于ARM/Linux/wince/driver这些概念,其实FPGA,DSP,GPU等等这些都叫嵌入式,嵌入式是很多领域的底层基础
.
.

二、嵌入式硬件开发

设计产品的基础硬件单主板,包括PC、手机、摄像机、路由器、交换机、服务器、最小系统等等

1.要求掌握的入门的能力

(1)基础理论能力

(1)电路/电子理论
(2)数电/模电、信号与系统、自动控制原理【防盗标记–盒子君hzj】
(3)微机原理/单片机最小系统
.

(2)基础工程能力

掌握基本元件如电阻、电容、电感、二极管、BJT管、MOS管的种类、封装和工作原理及特性
掌握利用变压器、可调线性稳压器(或开关电源【防盗标记–盒子君hzj】)制作调压稳压源(220V降至1.5~15V可调输出)
掌握LDO和Buck、Boost型开关电源的基本原理、区别和应用场景
掌握STM32单片机编程并锻炼代码优化能力

本科参加一下恩智浦智能车、RM、和电赛,大都可以入门熟悉了~
.

2.嵌入式硬件开发一般工作

(1)AD板层设计类型(2、4、6层板子)

分数字电路和模拟电路,学精几个就好
方向很多~
(1)电源类
(2)运放和ADC(数模、模数)类
(3)射频类
(4)FPGA、STM32、DSP最小系统类
(5)通讯类
(6)隔离缓冲类
(7)逻辑运算类
(8)驱动类

以上是本人做过的板子类型,当然其他也有很多,【防盗标记–盒子君hzj】但是我这里说的是用芯片进行板层硬件设计,不是芯片内部SOC的这种IC设计

(2)通讯架构及接口协议(MODBUS\EtherCAT等等)

.

(3)BOM文档整理

BOM表就是芯片目录这种,压成本和采购用的~

(4)万用表示波器修BUG

.
.

三、嵌入式软件开发

了解操作系统的基本原理,包括windows和Linux,【防盗标记–盒子君hzj】掌握一门以上的编程语言,具备良好的软件设计开发能力,底层驱动的编写

1.(STM32、ARM、DSP、FPGA)微控制器底层开发【实时系统、库开发】

1、嵌入式调试工具的使用

(1)TTL串口调试软件【正点原子或者野火的】
(2)STlink\jlink\SWD\串口下载调试程序工具
(3)无线蓝牙
(4)万用表、数字电源、示波器等等
.
.

2、寄存器开发、库开发

看正点原子、野火的开发板教程,每个片内外设都有教程,先重复造轮子

主要是开发片内外设、片外外设实现响应的功能
.
.

3、FreeRTOS实时操作系统

(1)RTOS的市场

近些年,MCU产品性价比不断提升,尤其是32位MCU【防盗标记–盒子君hzj】,其运行主频已达百兆级甚至高达1GHz,功能越来越强,资源配置也越来越丰富,编程也越来越复杂,需要RTOS来配置管理基础资源和维护管理产品。RTOS可以应用到8位/16位/32位MCU产品上,但32位MCU产品将会是主流。MCU产品双核多核产品增多,产品功能的复杂度越来越高。而MCU与CPU产品不再是泾渭分明,异构集成将是一个新的产品发展特点。MCU产品将会沿着摩尔定律之路继续前行,会不断涌现出新的产品,RTOS的路越来越宽广。

(2)前后台系统和实时系统的区别

一般嵌入式系统分为两种:前后台系统和实时系统

操作系统一般可分为:通用操作系统(OS)和实时操作系统(RTOS)两大类。而实时操作系统(RTOS)根据其运行的处理器不同可以进一步分为:CPU RTOS和MCU RTOS两类。

Windows是面向消费者的,RTOS是面向开发者的;【防盗标记–盒子君hzj】Windows有着统一的处理器,在一台电脑上编译好的程序可以很方便地在另一台计算机上运行,RTOS使用的是不同架构的处理器或微控制器,不能跨处理器或硬件运行,需要进行相应地移植。RTOS现阶段难以像Windows一样形成大一统的格局,差异化的应用需求仍然需要差异化的RTOS。

(3)实时操作系统的两个误区

1、用了实时系统后,系统响应速度一定更快。不一定。因为实时操作系统本身引入了执行开销,所以对于小型应用来说,有RTOS的性能也许不如无操作系统的情况。【防盗标记–盒子君hzj】实时操作系统的优势最能体现在中大型系统中,当任务间存在复杂的耦合和依赖关系,并且应用程序经常要长时间等待外部资源时。

2、用实时操作系统就可以保证实时性。不一定。相对来说,使用实时系统可以改善系统的实时性。但是实时操作系统只是作为工具存在的,如果需要提供实时性保障,还需要使用实时系统理论对任务的可调度性和响应时间进行分析,才可以得到科学、系统的响应性保障。

(4)多任务硬件软件的理解

(多核心多线程)操作系统允许多个任务同时运行,【防盗标记–盒子君hzj】这个称为多任务。实际上一个处理器核心再同一时刻仅仅能处理一个任务,如果采用前后端系统就会造成任务堵塞,实时性较差

(5)任务调度器的理解

操作系统中的任务调度器的任务就是决定再某一时刻处理器核心运行那个任务,RTOS的任务调度器切换每个任务的速度非常快,这样就虚拟出一个多任务的效果,ROTS的多任务机制是虚拟的,真正的多任务机制是由硬件决定的。
任务调度器的工作方式有很多种,【防盗标记–盒子君hzj】其中unix对每个任务分配的时间是一致的,时间到了不管有没有完成任务都会堵塞进行下一个任务,单数RTOS会对每个任务需要的响应时间进行一个预测,分配足够的时间,再根据任务的优先级进行调度。

(6)Freertos和ucosI\ucosII的对比

从文件数量上,freertos的文件数量要比ucosI\ucosII小的多。但是ucos的中文学习子良比freertos丰富,上手容易,freertos的资料大都时英文的,但是开发也有官网支持文档【防盗标记–盒子君hzj】。Freertos是免费的ucoss是收费的,所以大部分开发时,厂商哦都会选择freetros,其他的实时操作系统(RTOS)大都时基于freertos进行开发的

FreeRTOS的源文件说明
(1)demo文件夹:FreeRTOS提供了很多芯片的例程,我们一直会参考这些例程,这些例程放在了改文件夹下
(2)license文件夹:关于我们用freeRTOS做产品的许可证说明
(3)Source文件夹:存放了freeRTOS的源代码
–include文件夹存放的时头文件(移植的时候需要);
–以.C后缀名结束的文件时FreeRTOS的源码文件,【防盗标记–盒子君hzj】freeRTOS就是用C语言写的文件系统,freeRTOS系统就是一个纯软件系统;
–portable文件夹里面是freeRTOS系统软件和硬件连接的桥梁,不同编译器,不同MCU硬件,桥梁是不一样的(都是要移植对应的东西)
注意学了FreeRTOS就不用学习FreeRTOS plus了

(7)自己的理解RTOS看法
重点掌握

(1)任务系列:包括任务创建、调度、删除、挂起、恢复、优先级六个方面

(2)列表和列表项系列:列表和列表项的定义、初始化、插入、删除、遍历五个方面
列表理解成普通变量、列表项理解成数组

(3)队列系列:包括队列创建、初始化、发送消息到队列、读取队列的消息
队列可以理解成“全局变量”

(4)信号量系列:包括各种信号量的创建、释放和获取
二值信号量可以理解成“中断中的标志位”
计数信号量可以理解成“计数自增变量”
互斥信号量可以理解成“带有优先级的二值信号,【防盗标记–盒子君hzj】且这个二值信号被多个任务获取”
递归互斥信号量可以理解成“任务可以多次获取的互斥信号量”

(5)事件标志组系列:包括事件标志组的创建、设置、获取
可以理解成“一个中断标志位(信号量)的集合,易于管理”

(6)任务通知系列:包括任务通知发送、任务通知获取
可以使用任务通知来代替信号量、消息队列、事件标志组等这些东西

(7)软件定时器系列:软件定时器允许设置一段时间,【防盗标记–盒子君hzj】当设置的时间到达之后就执行指定的功能函数

在start_task()中一般是创建列表(普通变量)、列表项(数组)、队列(全局变量)、信号量(中断标志位)、软件定时器任务、用户定义的任务等等

学习FreeRTOS的移植过程和任务调度的思维
.
.

一般的RTOS会提供以下全部或部分功能:

1、基于静态优先级(fixed-priority)的抢占式(preemptive)任务调度;
2、进程间通信(基于消息,消息邮箱,管道);
3、基于信号量(semaphore)的进程间同步;
4、任务的创建、暂停、删除;
5、资源访问控制(并发控制与防止互锁);
6、临界区(critical section)控制;
7、驱动程序的管理与接口;
8、MMU内存管理、内存动态申请与分配;
9、其他功能:如GUI用户界面和TCP/IP相关功能。

其他学习资料

(1)freertos的官网www.freertos.org
(2)freertos的官方指导手册(英文版)
161204_Mastering_the_FreeRTOS_Real_Time_Kernel-A_Hands-On_Tutorial_Guide

(3) freertos的官方API函数参考手册(英文版)
FreeRTOS_Reference_Manual_V9.0.0

(4) freertos正点原子的开发环境
(1)STM32F429 FreeRTOS开发手册_V1.2
(2)FreeRTOS实时内核使用指南-中文
(3)RTOS低功耗设计原理及实现_TicklessMode(FreeRTOS的实现)
(5)Cortex-M内核架构的相关知识(用于理解任务切换的过程)
(1)Cortex M3权威指南(中文)
(2)Cortex M3与M4权威指南

.
.
.

2.(X86、ARM)微处理器Linux底层开发【设备树开发】

开发功能:
(1)多线程、多进程、中断、驱动设备树开发
(2)linux系统剪裁、移植、【防盗标记–盒子君hzj】外设驱动GPIO\LED\IIC\SPI、实时补丁等

(1)CPU硬件平台

ARM架构的(从弱到强)
三星的 2440、STM32H7、I.MX6UL、树莓(xx)派、Exynos 4412、Exynos 4418…
.
X86架构的(指令集开发真的。。。。。)
英特尔、AMD
.
.

(2)裸机开发【不带系统开发,学习底层原理】

贴个图吧,具体自己去探索来得更扎实
在这里插入图片描述

(3)Uboot、Linux 和根文件系统移植

同上贴图
在这里插入图片描述

(4)嵌入式 Linux 驱动开发

1)字符(外)设备驱动

在这里插入图片描述

2)块(存储)设备驱动

在这里插入图片描述

3)网络设备驱动

在这里插入图片描述
.
.

3.操作系统类linux、ROS应用层sdk/app开发

(1)开源嵌入式处理器的使用

ARM架构处理器的使用:树莓派、英伟达nano、英伟达NX/Xaiver

X86架构处理器的使用:upbroad、英特尔微型计算机NUC

一般就是刷机(SD卡),然后像PC一样使用
特别的是嵌入式处理器有GPIO,重点讲讲GPIO通讯啥的,其实英伟达官方啥的会提供使用手册的

nano参考资料:
https://pypi.org/project/Jetson.GPIO/
https://www.ncnynl.com/category/Nano-basic
https://www.ncnynl.com/category/Nano-hardware/
https://www.ncnynl.com/category/Nano-software/

Nx参考资料
https://zhuanlan.zhihu.com/p/165989685
https://www.ncnynl.com/category/Xavier-basic/
https://www.ncnynl.com/category/Xavier-hardware/
https://www.ncnynl.com/category/Xavier-software/

具体看自己的文档~
.
.

(2)linux应用层SDK、app是使用

(1)上下位机的控制驱动【最好写成代理的形式】
如车底盘控制驱动、键盘的驱动等等

(2)各种传感器的驱动【根据官方和自定义硬件来写】
.
.

(3)ROS系统应用层开发、专有嵌入式系统的SDK应用层开发

【不懂就查文档,API的使用方法和ROS的学习开发差不多】
公司开发东西都是基于自己的系统,一般都有gitlab和GitHub或者文档,先看看

1)系统平台架构和功能先了解清楚
2)遵守里面的规范
3)学习开发的demo和步骤【防盗标记–盒子君hzj】
4)然后在进行试错开发
只要系统搭建的好,你就不用写很多代码就能完成自己的工作,这就是底层系统的重要性
.
.

四、这里介绍一下本人相关嵌入式开发项目

1.本科一些莲蓬采摘机器人的省创新创业大赛、挑战杯大赛,机械设计大赛等等

本科时候的比赛小打小闹,时间久远,【防盗标记–盒子君hzj】我看看能不能整理出来再更。。。

.
.

2.智能小车的最小系统、H桥驱动电调、无人车线性底盘硬软件开发

本科时候的比赛小打小闹,时间久远,我看看能不能整理出来再更。。。
.
.

3.伺服无刷电机研发【重点】

专门研究过外转子无刷电机的硬软件和控制方式,【防盗标记–盒子君hzj】内容优点多,另开一个博客排版更。。。。

毕竟做机器人控制、路径规划,执行器和机械支持是非常重要的,当然仿真、地图、定位、决策、感知也很重要。。。唉擀

-------------->嵌入式相关其他补充

工作范围

嵌入式除了硬件开发,软件实时操作系统os开发,还包括单片机传感器驱动开发和驱动连接

操作系统中间件

是嵌入式软件的一部分,大家都要用,大家都要了解,学会用好其中一种,其他的中间件原理都差不多
1、单片机的定时器等片内外设中间件
2、RTOS实时操作系统
3、ROS
4、Navos
5、cyber RT等等

软件开发系统平台的搭建

单片机有集成的开发环境keil,ros有自带的catkin make,但是一般的c和c++要自己用cmake搭建开发环境。python更先进可以允许直接执行

单片机和pc ros的开发编译环境环境是不同的
1、单片机在pc机进行集成环境的交叉编译,然后把可执行文件下载到单片机里(极飞也是这样)
2、pc的ros开发一般直接ssh远程链接到机器人的处理器,或者直接在机器人处理器上开发的!
.

.
.


版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_35635374/article/details/121086782

智能推荐

python中文显示不出来_解决Python词云库wordcloud不显示中文的问题-程序员宅基地

文章浏览阅读2.6k次。解决Python词云库wordcloud不显示中文的问题2018-11-25背景:wordcloud是基于Python开发的词云生成库,功能强大使用简单。github地址:https://github.com/amueller/word_cloudwordcloud默认是不支持显示中文的,中文会被显示成方框。安装:安装命令:pip install wordcloud解决:经过测试发现不支持显示中文..._词云python代码无法输出文字

台式计算机cpu允许温度,玩游戏cpu温度多少正常(台式电脑夏季CPU一般温度多少)...-程序员宅基地

文章浏览阅读1.1w次。随着炎热夏季的到来,当玩游戏正爽的时候,电脑突然死机了,自动关机了,是不是有想给主机一脚的冲动呢?这个很大的原因是因为CPU温度过高导致的。很多新手玩家可能都有一个疑虑,cpu温度多少以下正常?有些说是60,有些说是70,到底多高CPU温度不会死机呢?首先我们先看看如何查看CPU的温度。下载鲁大师并安装,运行鲁大师软件,即可进入软件界面,并点击温度管理,即可看到电脑各个硬件的温度。鲁大师一般情况下..._台式机玩游戏温度多少正常

小白自学Python日记 Day2-打印打印打印!_puthon打印任务收获-程序员宅基地

文章浏览阅读243次。Day2-打印打印打印!我终于更新了!(哭腔)一、 最简单的打印最最简单的打印语句: print(“打印内容”)注意:python是全英的,符号记得是半角下面是我写的例子:然后进入power shell ,注意:你需要使用cd来进入你保存的例子的文件夹,保存时名字应该取为xxx.py我终于知道为什么文件夹取名都建议取英文了,因为进入的时候是真的很麻烦!如果你没有进入正确的文件夹..._puthon打印任务收获

Docker安装:Errors during downloading metadata for repository ‘appstream‘:_"cenerrors during download metadata for repository-程序员宅基地

文章浏览阅读1k次。centos8问题参考CentOS 8 EOL如何切换源? - 云服务器 ECS - 阿里云_"cenerrors during download metadata for repository \"appstream"

尚硅谷_谷粒学苑-微服务+全栈在线教育实战项目之旅_基于微服务的在线教育平台尚硅谷-程序员宅基地

文章浏览阅读2.7k次,点赞3次,收藏11次。SpringBoot+Maven+MabatisPlusmaven在新建springboot项目引入RELEASE版本出错maven在新建springboot项目引入RELEASE版本出错maven详解maven就是通过pom.xml中的配置,就能够从仓库获取到想要的jar包。仓库分为:本地仓库、第三方仓库(私服)、中央仓库springframework.boot:spring-boot-starter-parent:2.2.1.RELEASE’ not found若出现jar包下载不了只有两_基于微服务的在线教育平台尚硅谷

随便推点

网络学习第六天(路由器、VLAN)_路由和vlan-程序员宅基地

文章浏览阅读316次。路由的概念路由器它称之为网关设备。路由器就是用于连接不同网络的设备路由器是位于OSI模型的第三层。路由器通过路由决定数据的转发。网关的背景:当时每家计算机厂商,用于交换数据的通信程序(协议)和数据描述格式各不相同。因此,就把用于相互转换这些协议和格式的计算机称为网关。路由器与三层交换器的对比路由协议对比路由器的作用:1.路由寻址2.实现不同网络之间相连的功能3.通过路由决定数据的转发,转发策略称为 路由选择。VLAN相关技术什么是VLAN?中文名称叫:虚拟局域网。虚_路由和vlan

设置div背景颜色透明度,内部元素不透明_div设置透明度,里面的内容不透明-程序员宅基地

文章浏览阅读2.8w次,点赞6次,收藏22次。设置div背景颜色透明度,内部元素不透明:.demo{  background-color:rgba(255,255,255,0.15) } 错误方式:.demo{ background-color:#5CACEE;opacity:0.75;} 这样会导致div里面的元素内容和背景颜色一起变透明只针对谷歌浏览器的测试_div设置透明度,里面的内容不透明

Discuz!代码大全-程序员宅基地

文章浏览阅读563次。1.[ u]文字:在文字的位置可以任意加入您需要的字符,显示为下划线效果。2.[ align=center]文字:在文字的位置可以任意加入您需要的字符,center位置center表示居中,left表示居左,right表示居右。5.[ color=red]文字:输入您的颜色代码,在标签的中间插入文字可以实现文字颜色改变。6.[ SIZE=数字]文字:输入您的字体大小,在标签的中间插入文..._discuzcode 大全

iOS NSTimer定时器-程序员宅基地

文章浏览阅读2.6k次。iOS中定时器有三种,分别是NSTimer、CADisplayLink、dispatch_source,下面就分别对这三种计时器进行说明。一、NSTimerNSTimer这种定时器用的比较多,但是特别需要注意释放问题,如果处理不好很容易引起循环引用问题,造成内存泄漏。1.1 NSTimer的创建NSTimer有两种创建方法。方法一:这种方法虽然创建了NSTimer,但是定时器却没有起作用。这种方式创建的NSTimer,需要加入到NSRunLoop中,有NSRunLoop的驱动才会让定时器跑起来。_ios nstimer

Linux常用命令_ls-lmore-程序员宅基地

文章浏览阅读4.8k次,点赞17次,收藏51次。Linux的命令有几百个,对程序员来说,常用的并不多,考虑各位是初学者,先学习本章节前15个命令就可以了,其它的命令以后用到的时候再学习。1、开机 物理机服务器,按下电源开关,就像windows开机一样。 在VMware中点击“开启此虚拟机”。2、登录 启动完成后,输入用户名和密码,一般情况下,不要用root用户..._ls-lmore

MySQL基础命令_mysql -u user-程序员宅基地

文章浏览阅读4.1k次。1.登录MYSQL系统命令打开DOS命令框shengfen,以管理员的身份运行命令1:mysql -u usernae -p password命令2:mysql -u username -p password -h 需要连接的mysql主机名(localhost本地主机名)或是mysql的ip地址(默认为:127.0.0.1)-P 端口号(默认:3306端口)使用其中任意一个就OK,输入命令后DOS命令框得到mysql>就说明已经进入了mysql系统2. 查看mysql当中的._mysql -u user

推荐文章

热门文章

相关标签