完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
一、嵌入式的定义
嵌入式是一个很宽泛的概念,它是一种解决问题的解决方案,不狭隘的仅仅限制于ARM/Linux/wince/driver这些概念,其实FPGA,DSP,GPU等等这些都叫嵌入式,嵌入式是很多领域的底层基础 二、嵌入式硬件开发 设计产品的基础硬件单主板,包括PC、手机、摄像机、路由器、交换机、服务器、最小系统等等 1.要求掌握的入门的能力 (1)基础理论能力 (1)电路/电子理论 (2)数电/模电、信号与系统、自动控制原理 (3)微机原理/单片机最小系统 . (2)基础工程能力 掌握基本元件如电阻、电容、电感、二极管、BJT管、MOS管的种类、封装和工作原理及特性 掌握利用变压器、可调线性稳压器(或开关电源)制作调压稳压源(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)驱动类 … 以上是本人做过的板子类型,当然其他也有很多,但是我这里说的是用芯片进行板层硬件设计,不是芯片内部SOC的这种IC设计喔 (2)通讯架构及接口协议(MODBUSEtherCAT等等) (3)BOM文档整理 BOM表就是芯片目录这种,压成本和采购用的~ (4)万用表示波器修BUG 三、嵌入式软件开发 了解操作系统的基本原理,包括windows和Linux,掌握一门以上的编程语言,具备良好的软件设计开发能力,底层驱动的编写 1.(STM32、ARM、DSP、FPGA)微控制器底层开发【实时系统、库开发】 1、嵌入式调试工具的使用 (1)TTL串口调试软件【正点原子或者野火的】 (2)STlinkjlinkSWD串口下载调试程序工具 (3)无线蓝牙 (4)万用表、数字电源、示波器等等 2、寄存器开发、库开发 看正点原子、野火的开发板教程,每个片内外设都有教程,先重复造轮子 主要是开发片内外设、片外外设实现响应的功能 3、FreeRTOS实时操作系统 (1)RTOS的市场 近些年,MCU产品性价比不断提升,尤其是32位MCU,其运行主频已达百兆级甚至高达1GHz,功能越来越强,资源配置也越来越丰富,编程也越来越复杂,需要RTOS来配置管理基础资源和维护管理产品。RTOS可以应用到8位/16位/32位MCU产品上,但32位MCU产品将会是主流。MCU产品双核多核产品增多,产品功能的复杂度越来越高。而MCU与CPU产品不再是泾渭分明,异构集成将是一个新的产品发展特点。MCU产品将会沿着摩尔定律之路继续前行,会不断涌现出新的产品,RTOS的路越来越宽广。 (2)前后台系统和实时系统的区别 一般嵌入式系统分为两种:前后台系统和实时系统 操作系统一般可分为:通用操作系统(OS)和实时操作系统(RTOS)两大类。而实时操作系统(RTOS)根据其运行的处理器不同可以进一步分为:CPU RTOS和MCU RTOS两类。 Windows是面向消费者的,RTOS是面向开发者的;Windows有着统一的处理器,在一台电脑上编译好的程序可以很方便地在另一台计算机上运行,RTOS使用的是不同架构的处理器或微控制器,不能跨处理器或硬件运行,需要进行相应地移植。RTOS现阶段难以像Windows一样形成大一统的格局,差异化的应用需求仍然需要差异化的RTOS。 (3)实时操作系统的两个误区 1、用了实时系统后,系统响应速度一定更快。不一定。因为实时操作系统本身引入了执行开销,所以对于小型应用来说,有RTOS的性能也许不如无操作系统的情况。实时操作系统的优势最能体现在中大型系统中,当任务间存在复杂的耦合和依赖关系,并且应用程序经常要长时间等待外部资源时。 2、用实时操作系统就可以保证实时性。不一定。相对来说,使用实时系统可以改善系统的实时性。但是实时操作系统只是作为工具存在的,如果需要提供实时性保障,还需要使用实时系统理论对任务的可调度性和响应时间进行分析,才可以得到科学、系统的响应性保障。 (4)多任务硬件软件的理解 (多核心多线程)操作系统允许多个任务同时运行,这个称为多任务。实际上一个处理器核心再同一时刻仅仅能处理一个任务,如果采用前后端系统就会造成任务堵塞,实时性较差 (5)任务调度器的理解 操作系统中的任务调度器的任务就是决定再某一时刻处理器核心运行那个任务,RTOS的任务调度器切换每个任务的速度非常快,这样就虚拟出一个多任务的效果,ROTS的多任务机制是虚拟的,真正的多任务机制是由硬件决定的。 任务调度器的工作方式有很多种,其中unix对每个任务分配的时间是一致的,时间到了不管有没有完成任务都会堵塞进行下一个任务,单数RTOS会对每个任务需要的响应时间进行一个预测,分配足够的时间,再根据任务的优先级进行调度。 (6)Freertos和ucosIucosII的对比 从文件数量上,freertos的文件数量要比ucosIucosII小的多。但是ucos的中文学习子良比freertos丰富,上手容易,freertos的资料大都时英文的,但是开发也有官网支持文档。Freertos是免费的ucoss是收费的,所以大部分开发时,厂商哦都会选择freetros,其他的实时操作系统(RTOS)大都时基于freertos进行开发的 FreeRTOS的源文件说明 (1)demo文件夹:FreeRTOS提供了很多芯片的例程,我们一直会参考这些例程,这些例程放在了改文件夹下 (2)license文件夹:关于我们用freeRTOS做产品的许可证说明 (3)Source文件夹:存放了freeRTOS的源代码 –include文件夹存放的时头文件(移植的时候需要); –以.C后缀名结束的文件时FreeRTOS的源码文件,freeRTOS就是用C语言写的文件系统,freeRTOS系统就是一个纯软件系统; –portable文件夹里面是freeRTOS系统软件和硬件连接的桥梁,不同编译器,不同MCU硬件,桥梁是不一样的(都是要移植对应的东西) 注意学了FreeRTOS就不用学习FreeRTOS plus了 (7)自己的理解RTOS看法 重点掌握 (1)任务系列:包括任务创建、调度、删除、挂起、恢复、优先级六个方面 (2)列表和列表项系列:列表和列表项的定义、初始化、插入、删除、遍历五个方面 列表理解成普通变量、列表项理解成数组 (3)队列系列:包括队列创建、初始化、发送消息到队列、读取队列的消息 队列可以理解成“全局变量” (4)信号量系列:包括各种信号量的创建、释放和获取 二值信号量可以理解成“中断中的标志位” 计数信号量可以理解成“计数自增变量” 互斥信号量可以理解成“带有优先级的二值信号,且这个二值信号被多个任务获取” 递归互斥信号量可以理解成“任务可以多次获取的互斥信号量” (5)事件标志组系列:包括事件标志组的创建、设置、获取 可以理解成“一个中断标志位(信号量)的集合,易于管理” (6)任务通知系列:包括任务通知发送、任务通知获取 可以使用任务通知来代替信号量、消息队列、事件标志组等这些东西 (7)软件定时器系列:软件定时器允许设置一段时间,当设置的时间到达之后就执行指定的功能函数 在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的官网 (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】外设驱动GPIOLEDIICSPI、实时补丁等 (1)CPU硬件平台 ARM架构的(从弱到强) 三星的 2440、STM32H7、I.MX6UL、树莓(xx)派、Exynos 4412、Exynos 4418… X86架构的(指令集开发真的。。。。。) 英特尔、AMD 3.操作系统类linux、ROS应用层sdk/app开发 (1)开源嵌入式处理器的使用 ARM架构处理器的使用:树莓派、英伟达nano、英伟达NX/Xaiver X86架构处理器的使用:upbroad、英特尔微型计算机NUC 一般就是刷机(SD卡),然后像PC一样使用 特别的是嵌入式处理器有GPIO,重点讲讲GPIO通讯啥的,其实英伟达官方啥的会提供使用手册的 具体看自己的文档~ (2)linux应用层SDK、app是使用 (1)上下位机的控制驱动【最好写成代理的形式】 如车底盘控制驱动、键盘的驱动等等 (2)各种传感器的驱动【根据官方和自定义硬件来写】 (3)ROS系统应用层开发、专有嵌入式系统的SDK应用层开发 【不懂就查文档,API的使用方法和ROS的学习开发差不多】 公司开发东西都是基于自己的系统,一般都有gitlab和GitHub或者文档,先看看 1)系统平台架构和功能先了解清楚 2)遵守里面的规范 3)学习开发的demo和步骤 4)然后在进行试错开发 只要系统搭建的好,你就不用写很多代码就能完成自己的工作,这就是底层系统的重要性 . 四、这里想介绍一下本人相关嵌入式开发项目 1.本科一些莲蓬采摘机器人的省创新创业大赛、挑战杯大赛,机械设计大赛等等 本科时候的比赛小打小闹,时间久远,【防盗标记–盒子君hzj】我看看能不能整理出来再更。。。 2.】智能小车的最小系统、H桥驱动电调、无人车线性底盘硬软件开发 本科时候的比赛小打小闹,时间久远,我看看能不能整理出来再更。。。 3.伺服无刷电机研发【重点】 专门研究过外转子无刷电机的硬软件和控制方式,内容优点多,另开一个博客排版更。。。。 毕竟做机器人控制、路径规划,执行器和机械支持是非常重要的,当然仿真、地图、定位、决策、感知也很重要。。。唉擀 … … |
|
|
|
只有小组成员才能发言,加入小组>>
3263 浏览 9 评论
2944 浏览 16 评论
3443 浏览 1 评论
8955 浏览 16 评论
4036 浏览 18 评论
1078浏览 3评论
558浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
551浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2286浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1848浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-10 13:17 , Processed in 1.054488 second(s), Total 50, Slave 41 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号