当前位置:首页 > 嵌入式
  • 神经处理单元(NPU)加速智能视觉应用

    神经处理单元(NPU)加速智能视觉应用

    Shanghai, China, 9 June 2021 嵌入式和边缘计算技术的领先供应商德国康佳特推出基于i.MX 8处理器的入门套件,为AI加速智能嵌入式视觉应用。该套件搭配基于i.MX 8M Plus处理器的SMARC计算机模块,其优势在于利用集成恩智浦(NXP)神经处理单元(NPU)的新处理器,可以运行推理引擎和库(如Arm Neural Network (NN) 和 TensorFlow Lite),为基于深度学习的人工智能提供多达2.3个TOPS性能。此外,它还与Basler嵌入式视觉软件无缝集成,为OEM提供了一个用于开发下一代AI加速嵌入式视觉系统的应用就绪型解决方案平台。广泛的典型应用,涵盖从价格敏感的零售自动结帐终端到建筑安全,以及从车内导航视觉到公共汽车的监控系统。工业用例包括基于视觉的用户识别和基于手势的机器操作组成的人机界面(HMI),以及视觉支持的机器人和工业质量检测系统。 康佳特产品管理总监Martin Danzer解释道: “一个由TensorFlow等开源AI软件解决方案支持的神经算法专用处理单元,是许多基于视觉系统的效率加速器。所有这些资源整合而成的一个应用就绪的硬件和软件验证平台(包括Basler Pylon系列相机软件套件),助力开发者进入设计NPU加速智能视觉应用。” Basler pylon 相机软件套件提供统一的软件开发工具包(SDK),包括用于MIPI的BCON接口 、USB3和GigE接口的视觉相机,并允许通过源代码、GUI或第三方软件访问相机。高性能pylon查看器完美适合相机评估。得益于集成加速AI视觉应用的康佳特i.MX 8M Plus入门套件,工程师可以立即访问重要的AI支持的机器视觉功能(如触发、单个图像捕获和高度差异化的相机配置选项,以及基于Arm NN和TensorFlow Lite生态系统轻松访问定制推理算法)。 详细的功能集 AI加速视觉应用的新入门套件,包含开发者立即启动设计所需的整套生态系统,即可提供高效视觉和人工智能集成的下一代平台。入门套件的核心是新型SMARC 2.1模块conga-SMX8-Plus,其拥有4个功能强大的Arm Cortex®-A53 核心、1个 Arm Cortex®-M72控制器以及加速深度学习边缘算法的恩智浦神经处理单元,并提供被动式冷却。3.5英寸载板conga-SMC1/SMARC-ARM可直接通过MIPI CSI-2.0连接配备F1.8 f4mm透镜的1300万像素 Basler dart daA4200-30mci BCON MIPI相机。除了MIPI CSI-2.0,还支持USB和GigE接口的视觉相机。在软件方面,康佳特提供一个带有预先配置的SD卡,包含引导加载程序、Yocto OS镜像、匹配的BSP和经过处理器优化的Basler嵌入式视觉软件,并且能够根据捕获的图像和视频序列立即进行AI推理训练。

    时间:2021-06-09 关键词: 神经处理单元 AI 嵌入式

  • Microchip嵌入式控制工程师在线培训课程“Microchip University”现已开放注册

    Microchip嵌入式控制工程师在线培训课程“Microchip University”现已开放注册

    由开发Microchip产品和设计工具的创新专家授课,讲授如何在流行的各类嵌入式系统应用中更好地使用Microchip产品和设计工具 Microchip Technology Inc.(美国微芯科技公司)今日宣布已开放注册面向工程师的在线课程,涵盖从C语言编程和密码学等内容在内的各种嵌入式设计主题,帮助他们更有效地使用Microchip相关产品。Microchip University在线培训课程提供了实现各种系统的最佳实践,如物联网(IoT)、蓝牙、通用串行总线(USB)和控制器区域网(CAN)等通信协议,以及自举程序和使用现场可编程门阵列(FPGA)的高速数据分析。 Microchip技术应用部门全球副总裁Ken Pye表示:“我们的客户现在可以随时随地获得业界最全面的高质量通用嵌入式系统控制设计课程。这些免费课程将教授工程师如何更快、更有效地将新设计推向市场,同时最大限度地利用我们的产品和开发工具。我们一直致力于为客户提供关于我们产品的高质量培训,通过开放在线课程,我们可以帮助各种经验水平的工程师更方便地获得培训机会。” 以往,Microchip只在年度会议期间提供现场的专场培训。如今,Microchip University已将相关培训课程搬到了网上。工程师们可以学习如何使用Microchip的MPLAB®代码配置器(MCC)和独立于内核的外设(CIP),以及创建嵌入式Linux®应用的解决方案。培训课程内容丰富,涵盖了电机控制、电池充电基础知识、电源、安全、模拟系统设计等方面的最佳实践。Microchip University课程覆盖Microchip的全线产品。

    时间:2021-05-24 关键词: Microchip 控制器区域网 嵌入式

  • 嵌入式开发和web开发,未来10到20年,哪个的前景更好呢?

    近期,知乎这个问题引起了21ic家的注意。题主表示:“计算机专业大二学生,大三要分流,目前对web开发和嵌入式系统开发两个方向比较有兴趣,也在知乎上看了类似的提问,但没有让我比较满意的回答,喜欢哪个就选哪个这种回答有点幼稚,所以只想了解一下这两个方向的前景,看看哪个更好一些。” 接下来就引用一些网友精彩观点,供同样有这样疑问的同学进行参考。 作者:注销用户 web开发在我看来技术门槛较低,不过看问题的意思应该是所指范围更宽的互联网行业。 如果说过两年就 本科毕业找工作,从薪资水平看互联网行业平均会优于嵌入式行业。 从行业的发展看,这两个行业我都看好。 因本人从事的是嵌入式行业,互联网行业的工作内容并不了解,所以也就不妄自揣测,仅从嵌入式 行业做一些介绍。 嵌入式其实包括的范围很广,从小到8位的单片机到堪比PC性能的手机SoC,都可以归入嵌入式,开发这些芯片的驱动是嵌入式,在这些MCU/SoC跑的操作系统和基础应用也是嵌入式,在此基础上运行的业务应用也是嵌入式(手机APP等如果不算其中也无所谓)。 嵌入式行业需要软硬结合。 嵌入式软件开发经常会有需要与硬件开发人员一起调试的时候。一个片上系统能不能正常跑起来,需要软件开发者能看懂硬件原理图,能熟悉和了解常用的硬件接口,能看懂芯片和一些器件的规格书。有可能,你需要了解SPI Flash或者NandFlash的接口和内部操作逻辑;也有可能在处理音频接口时要懂I2S的通讯协议;或者,外接一颗诸如什么传感器时,你需要熟知I2C或者SPI接口的时序;又或者接一个LCD时出了问题,需要知道同步信号怎么去量测。 嵌入式行业需要基础扎实。 嵌入式行业用到的MCU或者SoC,有可能是运行Android这种大型系统,或者是嵌入式Linux,也有更小的实时系统如VxWorks QNX eCOS ucOS NuttX FreeRTOS等等,有的还需要直面一片荒原,没有任何OS。 在没有OS的单片机MCU等环境,有可能需要熟知每一行代码耗费的指令,需要谨慎的处理中断等异步逻辑,有时候没有动态分配内存,只有几十K或者百来K的RAM,没有太多的空间给你的代码去挥霍。 有的运行小型的RTOS,你要根据具体情况分配好抢占式的任务或者分时的任务,了解这些任务切换背后带来的时序和逻辑上面的开销。 在Linux上面,SoC资源是更丰富了,但有可能你需要去裁剪内核,或者添加相应的驱动。然后,你需要熟知Linux系统从内核到系统调用,再到GNU的工具链,才能很好的在嵌入式Linux上做应用。 因此,当遇到上面的情况个人需要进一步深入时,需要操作系统和体系结构等计算机基础知识扎实。 嵌入式行业需要相关应用背景比较深 大部分情况下,嵌入式行业不需要太多代码上的技巧,甚至代码量也不会太大,但需要对相关应用的深入了解。 做多媒体相关的工作,你可能需要了解H264/265的编解码;做音视频传输,有可能要熟悉RTSP协议,G.711和G.729协议。如果做物联网,又有可能要熟悉BLE、WiFi相关背景知识,或者是MQTT协议。做影像处理,又有可能要了解3A,图像处理的相关算法。因为嵌入式行业面对的需求和所应用的芯片不同,经常需要在原有的基础上做二次开发,或者是从无到有的去搭建整个平台。那么,能不能了解和熟知你从事的应用的背景知识就极为重要。 从行业的发展来看,我个人观点是互联网也好,嵌入式也好,都会成为一个基础设施的行业在。嵌入式行业火的那些年,华为这类公司也像今天的BAT一样,以高出行业平均一截的工资招揽人才。当下这几年,互联网行业的平均收入确实是优于嵌入式行业。但在我看来,无论是中国制造2025,工业4.0,还是大数据智慧城市等等,都离不开互联网和嵌入式两者的结合发力。 以当下热门的大数据来说,互联网的背景无需多说,数据的采集不需要嵌入式设备的参与吗?最近热炒的新零售,不需要嵌入式影像设备吗?工业机器人也好,家庭机器人也好,纯粹是互联网的事情吗?里面有多少传感器?要不要本地的实时建模? 以人脸检测或者识别来说,为什么会说识别速度慢,芯片有没有硬件加速?有没有GPU,有没有DSP?要连上网络查询数据库吗?好的,数据库的比对是纯照片吗?还是提取人脸特征?人脸特征提取要不要嵌入式设备去做?不同光照条件要不要3A算法去处理?要不要做高动态? 是不是活人要不要红外检测?嗯,还有时下热门的3D结构光建模。这样,一个简单的应用,从图像采集,到图像处理,再到图像算法,然后是传输,还有控制,有可能涉及到多颗嵌入式芯片的参与。那么,它的背后也涉及了多个公司多个团队的协作。 我想说,不论是做互联网行业还是嵌入式行业,在大学时期的基本功一定要学扎实。虽然我没有从事互联网行业,但我相信这个行业深入下去也一定需要扎实的基础知识和行业应用背景知识的储备。不是程序设计语言不重要,而是操作系统,体系结构,数据结构,乃至高等数学,这些大学的基础课程,都是你深入这个行业必须的。如果说一个培训班几个月培训出来就能做的事情,也不必去抢着做。毕竟,读大学干嘛的? 最后,这两个行业如何选择,考虑下自己的兴趣爱好,考虑下将要去往的城市,决定还是自己去做的好。 作者:VizXu 我算是做嵌入式的,姑且过来谈一谈自己的想法。 web开发我不甚了解,所以这里只讲嵌入式相关的内容。 一、嵌入式学习曲线 嵌入式所涉及的内容相当之广,由此导致学习曲线陡峭,学习成本很高,但是回报率却不见得很高,至于为什么会这样,下文会有分析。这里先讨论一下学习曲线问题。我想从语言、操作系统、版本控制系统、编译系统、和技术栈这五个方面讲解: 语言: C无疑是最基本的,如果你搞驱动那么还需要对汇编有所了解,虽然可以不那么熟练,但是需要对照datasheet知道如何实现硬件和软件交互,其实就是各种倒腾寄存器。按道理如果只和内核打交道事实上C++都可以不掌握,但是只要涉及到Framework的东西C++是肯定需要的,因为硬件抽象层全是C++写的,本着技多不压身的原则,这里默认C++也是要掌握的。 那C/C++掌握到何种地步才能说算是可以上手了呢?这是个我现在也没想清楚的问题,但是网上90%的人说自己精通C/C++都是可以呵呵的,因为以前我也这么认为,但是现在我不这么认为了,事实上掌握语法本身和掌握语言是不一样的,比方我说我掌握了8000个英语词汇,但是我碰到美国人可能连一句话都说不出来,这也可以类比计算机语言。所以我觉得能不能上手,不在于你语言掌握地如何,按照我本人的经验就是多实践。不懂就上网搜索,能翻墙就直接google,我想如果只是语言上的问题,网上能给你解决99%,剩下的自己摸索。 工作中如果涉及上层或者图形界面之类的,那你还需要掌握相应的语言或者框架比如Qt、python等。我感觉要是有C/C++作基础,这些知识都不难掌握。 至于说java、js、css、html啥的,要是碰到了就学习一下吧,但是我估计嵌入式本身是不太会涉及这些语言的,除非小公司啥都你一个人搞。 操作系统: 虽然嵌入式操作系统我本人知道的就有Linux、vxworks、mips、wince、QNX,事实上还有很多其它的系统。但目前来看linux仍然是主流,所以linux肯定要掌握。Linux真正流行起来并做大,很大原因要归功于Android系统及其移动设备端的流行。想想当年symbian统治手机操作系统的时候,Linux那时还是个小吊丝。Google看上Linux并把它作为Android系统的内核,我想无非出于两点,一是开源,社区参与开发人员多;二是Linux性能确实不错。如何深入理解并掌握linux?我本人的经验是,首先买一本linux内核的书,认真看一篇,对它的各个模块有一个比较清晰的认识,比方内存管理,io,进程管理,中断、文件系统,网络等,知道内核空间是怎么运行的,与用户空间是怎么通信的等等。然后下载一份linux内核代码,先自己尝试编译一下,然后尝试对各个模块进行裁剪,烧写到目标机上跑一跑看看效果,对比一下变化,这样我想会理解的更深入。 版本控制: 这个取决于公司。我git和svn都用过,个人感觉git更强大一点。一般用svn的大部分是历史遗留。这个就不多说了,具体网上搜索一下,看看menupage就好了。不过我还是要多说一句,这个.gitignore实在是太坑爹了。 编译系统: 不同公司会有所不同,如果是odm做Android手机的厂商,都是用google自家的编译系统,就是我们常说的Android编译三部曲(source,lunch和make),如果是其它公司的话可能会有基于shell或者python的自定义的编译系统,其实底层也是调用Makefile。 技术栈: 因为现在自己负责的是我们产品的整个系统的开发,包括底层的和上层的代码基本上都是要涉及到的,所以我感觉技术栈还算是比较宽。如果是linux内核开发,那么以下技术是应该掌握的: 硬件架构,片上系统,boot,软硬件裁剪和定制,内核编译烧写,驱动开发,功耗分析,协议i2c、spi、uart还有usb等。如果是涉及上层,那么需要掌握的技术: 进程间通信,多线程开发,信号量和锁,图形界面,网络以及网络协议等。 二、就业前景 从资本流来看,嵌入式行业的资本是净流出的,换句话说在走下坡路了,嵌入式曾经也火过一阵,大概是零几年的时候,那时候物联网概念刚提出来,嵌入式作为其重要载体,一下子也可以说炙手可热了,但是随着时间推移,发现要实现万物皆联的目标还很远,加上后来人工智能大数据区块链概念的崛起,人们也逐渐淡忘了嵌入式。目前做嵌入式的公司一般都是做手机,pos机,扫地机器人啥的,说到底还是需要卖硬件产品,而这种产品生产成本也不低,而且还不好卖,这就直接导致这行赚不到啥钱。我曾问过我单位一个资深工程师为啥微软不想做客户机,回答毛利太低,一台300美金的客户机能赚90美金就已经很不错了,这还是整个客户机市场就那么几个寡头厂商在做的情况下取得的成绩。所以相比现在火到不行的人工智能、区块链行业来说那只能用人比人气死人来形容了。 从稳定性来看,一般做嵌入式比较稳定,毕竟一来硬件这东西用几年也得换,二来做这行的很少有创业型公司,像我们这样的产品全世界也就那么几家公司在生产,完全没必要担心受到新玩家的冲击,加上有很成熟的产业链,可以说整体是相当稳定的,当然你说公务员那更稳定,我也没法反驳。再者学习成本很高,不能像网站开发那样上几个月的培训就能上手,所以进入围城之类的人才也少,大部分是要不经验丰富的老员工,他们已经不太好转行了,要不就是我这样的稀里糊涂入坑的,总之这一行就别想发大财啦。 三、未来趋势 做嵌入式路比较窄,学习成本不小,还比较孤独。当然这里说的孤独是指很少有人和你探讨,很多问题都需要你自己一步步解决,因为这一行就那么一小撮人在做。 但是你说嵌入式会不会没落?我想肯定不会的,而且我估计在某个时机成熟时可能还要火一把,但是我不知道是啥时候,这个只是个人感觉,玄幻。 不过我个人是觉得技术这东西看个人兴趣,不是说做嵌入式就一定一条路走到黑。学好了c/c++以及底层的知识,其它语言和技术其实很好学。我本人现在也在自学人工智能,所以路还是要自己走出来。 以上,祝好。 作者:kaiyuantian 作为一个嵌入式转web的过来人,对我来说。 首先工作方便,嵌入式要带一大堆东西,web一台电脑ok了。 其次一个很现实的问题,web起步工资比嵌入式高的多。 工作做产出web要快的多,而且你的工作95%的时间都是集中在核心任务上的,嵌入式不是有时搭个环境一天就过去了,当然如果熟练,并且经验丰富的话这些还好。 学习曲线,嵌入式要高很多,web上手比较快,但是嵌入式也相对比较稳定,更新换代比较慢,web则相反,当然掌握了本质就很容易了。 至于前景吗,嵌入式 + web =物联网  嵌入式就是物,web就是网。 当前比较热门的大数据,人工智能,都是web方面的,当然人工智能也有嵌入式的,不过也离不开网。 公司方面,嵌入式很传统人,员流动小(个人经历),web方面就比较开放,人员流动大。 如果你关心到10,20年以后,我建议你都学。从嵌入式开始 到web比较容易,如果反过来就比较难了。好好学linux,c/c++打好基础。然后在向其他方向发展。 web开发其实也有很多分支,大方向有客户端,服务端。建议你从服务端开始。语言选择建议nodejs或python,前者依托JavaScript可以前后端通吃。并且api与linux系统aip很像上手比较容易。python呢与c/c++无缝连接。 最后想说,其实我觉得你关心的太远了。10后会发生什么谁都不知道,尤其互联网行业,发展变化非常快。踏实做好眼前是就是最好的 作者:阏男秀 这位同学很有想法啊,「喜欢哪个就选哪个」的确太随性了。下面就以我个人经历和观察分享点看法,供题主和有相同处境的同学参考。 国内现状 假设你面临毕业需要找工作,现在有华为、格力、海康威视和百度、腾讯、阿里巴巴这几家让你选,你会选哪一个?——如果是我,我基本会毫不犹豫地在后三者中继续选择。 前面三个,不敢说是行业顶尖,但也基本是国内做嵌入式比较知名的公司。 华为不用多说了吧?通信解决方案供应商,其家的华为手机,在街上随便拉一个人问至少也应该知道。电子通信类的学生,大多数人就是以华为为目标。 格力,白色家电的代表,与之同期还有美的、海尔等等。家电产品算是嵌入式领域一个大分支。 海康威视,主打视频监控产品,我们公司接过一个方案集成项目,客户指定就要海康威视的产品作为视频监控。 后三个题主应该很熟悉了,国内顶尖互联网企业: 百度,知名于搜索引擎,还有各种衍生产品,贴吧、网盘、地图、翻译等等; 阿里巴巴,主打线上交易和支付,常用的淘宝和支付宝便是属于其家; 腾讯则是通讯产品和游戏,微信、QQ等等等。 顺便说一句,腾讯的产品似乎和Web开发无关(非网页网站产品),其实我这里“Web开发”是广义上的前后端开发的意思。“嵌入式开发”同理,不单单指嵌入式系统软件的开发。 先不谈个人,要看嵌入式和Web这两门技术前景如何,观察相关大企业发展情况就可以略知一二了。当然了,嵌入式技术本身还是需要结合具体领域和应用场景,基本上各行各业都有:手机、机顶盒、路由器、车载系统、还有工业和农业领域的各种嵌入式设备等等。唯一不变的是:嵌入式技术做出来的肯定是软硬件结合的产品! 但是呢,我们国内的电子硬件行业并不太乐观,芯片和技术非常依赖国外进口,有条新闻可以窥斑见豹:美国封杀中兴、华为事件。 唇亡齿寒,嵌入式硬件是载体,嵌入式软件是灵魂;载体没了,灵魂也自然消亡了。 而Web技术,是搭建一个知名互联网平台的必须条件。除了前面提到的百度和阿里巴巴,还有近期出现的打车平台(滴滴打车),外卖平台(美团、饿了么),共享单车(摩拜、OFO),而且知乎(问答平台)这里本身也是属于Web领域而非嵌入式领域。 共享单车这里我重点说一下,我认为共享单车无论是在技术上,还是在运营和使用理念上,是一款很经典的物联网产品了。看看智能家居领域做了十几年,也没有一款能进入千万家的革命性产品? 只不过,我们国内似乎还没有很多这样厉害的物联网企业。我目前能想到比较知名的只有摩拜和小米,还有一家做共享车位锁的公司(利益相关:用他们的主板二次开发过GPRS车位锁,项目已卒)。 当然了,除了互联网企业,还有一些是属于传统软件行业的,主要是面向各行各业的信息管理系统(内容管理系统CMS),或者一些办公自动化(OA),在线审批系统等等。这里不是很了解就不多写了。 技术发展 Web技术和嵌入式技术,真的是一个在天飞,一个在地上跑! Web技术有开源理念,不怕找不到学习资料和社区,每个框架都应该有完善的文档,如果想深入框架具体细节,可以,自己去阅读源码或看看前人是否有贡献。前端发展迅速飞快甚至有人发出「求不要等新了,已经学不动了」的感慨。而后端技术相对缓慢,不过框架和语言特性也可以逐年大更新。 反面教材,切勿模仿! 嵌入式技术,不好意思我们产品资料对外保密不开放,卒。开玩笑的,其实最近也有硬件逐步开源了,但整个行业内还是处于保守封闭的状态,发展相对互联网比较缓慢。 我二次开发过一款Android门禁打卡机,其Android系统还是4.0,然后我旁边的前端吐槽说那用nodejs框架可能会有点兼容性问题。用是能用,不过我后来找到一款免费的能在Android上跑的人脸识别引擎,其官方SDK建议Android版本是5.0+。勉勉强强跑到了门禁打卡机上去,可是离线识别人脸运行速度不够理想,大约2.8s,项目卒。 我不怎么碰无人机,但我想再举这个例子,因为怎么也不能否认无人机属于嵌入式开发啊。虽然近期没怎关注大疆无人机的消息,但印象中,大疆真的就是无人机领域里电子消费级别的佼佼者!选择这条路真的需要沉下心来做技术,专心研究无人机及其相关技术才行。不能像我,总是关注各种技术和产品的周边新闻。当然了,这一领域,没有研究生级别和相关学习环境,一般都进不去的。同理,如果做到了图像和语音识别这些,前景应该是不错的(其实真相是因为我接触少才觉得不错嘿嘿)。 而且嵌入式应用和Web应用都是在Linux上跑,尤其是我上面做的那个人脸识别项目,放在云端,那也算是Web应用开发吧?放在本地嵌入式Linux系统里,算不算嵌入式应用开发呢?当然我对嵌入式开发并没有误解,嵌入式四个层次:硬件、驱动、系统、应用。计算机系出身一般是接触系统和应用层;而电子系出身一般做硬件和驱动。 总而言之,Web技术和嵌入式技术,真的是一个在天飞,一个在地上跑!天上飞的速度快,但人人都看得见,地上跑的慢但藏得好,不仔细发掘真看不到。 个人发展 最后说下个人发展。 如果是做Web开发,不论是985/211,还是二三本学生,只要不是眼高手低,毕业生应该不愁找不到工作,而且可能还有多种选项。 而选择嵌入式开发,不敢说找不到工作,但是相比Web可选择的大大减少,985/211估计没什么大问题,但二三本学生我真的不敢说一开始就能找到很满意的那种工作! 我都还记得我当年实习的时候,进入了一家嵌入式方案公司,同一时期还有其他学校的计算机系专业过来,后来一个暑假过去,想留下来及能留下来的也只有我隔壁学院那个光源与照明专业的同学。那家公司也没有多糟糕,博士出来创业,博带硕,硕带本,还请了一个学校老师带我们实习生。 工资方面。目前普遍观点是:同等时期同等水平同等努力下,做Web能拿到的工资比做嵌入式的要高! 看看各行业那些知名企业给出的应届生工资就可了解个大概。为什么要看大公司给应届生的“批发价”?蛋糕很大的时候,大企业拿走大的部分,小公司也能分一杯羹填饱肚子;而如果该行业的巨头分给员工那么点,可想该行业是不是实在没什么利润,或者是不是太压榨员工了。 另外,如果会看各行业巨头的财务报表,也是能了解这个行业发展好不好的,只不过我们这些打工仔的工资还是由老板决定。 再说一点,有些选择也是因为自己的个人因素,比如我从小就泡在网络上,自然偏向于互联网发展;可我大学的助班师姐,同为电子专业我也不知道为什么她能学得那么轻松,年年成绩拿第一,似乎还轻松的考研进了某所985/211,只能说人比人比死人。有次我向她请教学习方法,她说她也不知道为什么对硬件那些一看就懂,努力一下就行,可是如果让她写代码,她就挺头痛的。 大概,命运早就给我们上了无形的枷锁,而我们只是在这枷锁可移动的范围内做出选择吧? 作者:金旭亮 未来会有大量的智能设备需要研发,各个行业都需要,会出现很多研制和生产这些智能设备和产品的公司。做嵌入式开发需要专门的设备和仪器等,个人得进入相应的公司,研发特定的产品和系统,专业化程度较高,就业面窄一点。 Web这块会随着云计算平台的成熟而日益通用化,计算和存储会象水电一样成为基础设施,相对独立的网站的概念会越来越弱化,人们关注的是信息服务,而不会在意这个服务到底是谁开发维护和提供的。 嵌入式开发离不开硬件,它会通过探测外界而产生大量的数据,又能通过接收控制信息以反过来作用于外界,得到的是“实在之物”,而Web开发是纯“软件”的,关注于信息这个“看不见”的东西,主要干的都是信息存储,加工,处理等工作,本质上背后全是数学。 至于前景,看具体人的,好坏因人而异。 作者:匿名用户 嵌入式无疑是最稳定的,因为嵌入式更接近硬件,但是今天的嵌入式可能层次高一点,纯粹写底层的很少了,写业务的多一点,和写上层程序差不了多少,别人家的硬件都有弄好的驱动,各种东西一组和,弄点代码,就是产品了,电路啊极端底层啊都是硬件工程师做的。 嵌入式必备技能,c语言,操作系统,网络编程系统编程,电路了解,驱动,编译裁剪个操作系统都是家常便饭。这些技能,再未来估计50年都不会淘汰。 再说web开发,web开发这个领域,技术含量特别的低,我是过来人,java c# golang 都玩过,什么mvc ioc aop,什么领域驱动。说白了,就是增删查改,然后各种缓存啊,各种数据库。但是web领域虽然技术含量不是很高,但是逼格特别高,从前端的mvvm框架,到后端的负载均衡系统分布式计算分布式存储系统大数据,各种高大上的词,但都是吹逼的,当你真正了解的时候,你会发现屁都不是,很多人都是流于表面。 我总结一下web领域的人的开发状况,这个领域各种东西都是别人开发好的,从数据库,到web服务器框架,到分布式存储。打开idea,新建sping mybatis项目,连接mysql redis ceph mapreduce,然后再选择一个消息队列框架,比如选kafka,生成,运行与tomcat,负载与nginx,再弄个docker,前端弄个vue装衬,成了,一个高逼格helloword,各种牛逼技术都用上了。 web领域变化很快,你不需要自己捣鼓什么,跟着别人走就是了,技术含量极低。 是我就选择嵌入式开发,这些技能都是基础,当我想学web的时候,或许我学七天比培训一个月出来10k的人更牛逼。你以为培训大多的是干嘛的?都是搞web的。最重要的是,很多人基础太烂,写几年增删查改就感觉自己混不下去了,那就是自己的原因。 总结,嵌入式很难学习周期长,需要很多基础知识,web领域可以当混子混日子,培训都能干。 作者:HalfmanG2 就长远看,未来嵌入式开发和Web开发日子都不好过,事实上程序员是个正在死掉的职业。 程序员产生的原因在于计算机操作所需的技能超出了常人的生活技能。 所以过去在进行一些与计算机相关的日常工作时,需要额外的有计算机专业人员参与,也就形成了程序员这个行业,活跃在各个领域。 但是,在不久的未来,随着计算机技术的普及,与开发的日益简便,特别是未来复杂业务逐渐转向云端服务的情况下,我们现在认知中的一些高大上的互联网产品,普通人都能很快实现。所以现在普通的开发人员将失去存在的意义。 那有人可能又要说了,既然服务都转向云端了,是不是 Web 开发会更有前景呢?答案也是否定的,因为随着各种工具完善,服务也不再需要专门的开发人员去处理,除了极少部分的核心算法服务,将几乎不需要进行开发。Web 服务研发人员将更注重业务逻辑的设计与对于三方服务的整合,而不是自己去写大把的代码。 而另外,核心算法服务也不是现在程序员能 hold 住的,基于诸如 AI、神经网络、图像识别数据分析这些核心算法服务,普通程序员根本力不从心,只有专门进行相关理论研究的数学、生物、物理科学家将主要负责这方面的工作。 所以,结论就是,既然在读本科,就考学硕吧。 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!

    时间:2021-05-17 关键词: web开发 嵌入式

  • 想成为硬件设计高手?需要这些基础

    END 免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!

    时间:2021-05-12 关键词: ARM 单片机 嵌入式

  • Microchip发布可信平台设计套件(TPDS)加速嵌入式安全部署,向第三方开放生态系统

    Microchip发布可信平台设计套件(TPDS)加速嵌入式安全部署,向第三方开放生态系统

    2019年,Microchip Technology Inc.(美国微芯科技公司)发布了用于CryptoAuthentication™系列的Trust Platform(可信平台),这是业界首个基于硬件的安全元件预配置解决方案,旨在帮助各种规模的企业以简便方式实现安全认证。Microchip今日宣布推出可信平台设计套件(TPDS)的最新增强版,进一步丰富产品阵容。TPDS是一款专门用于设备配置和加入Microchip嵌入式安全预配置服务的软件平台。 TPDS第2版(v2)软件使Microchip合作伙伴能够将用例添加到丰富的安全解决方案入网(onboarding)生态系统,进一步扩大了开发者在部署一流安全方面业已非常广泛的选择。TPDS第2版现在还支持其他安全解决方案,如首款用于汽车市场的加密配套设备TA100。 简化开发 一个有经验的固件工程师可能需要几个月的时间来确定一个应用的威胁模型,以及开发一个包括安全认证、安全启动、IP保护等所有必要措施的安全用例。其中涉及的两个主要挑战在于配置设备的安全边界和预配置密钥,包括私钥以及对称密钥和其他形式的密钥数据。 TPDS软件通过提供预先定义的用例来解决最常见的市场要求,从而简化了开发过程。它可与三个可信平台流程中的两个一起使用——Trust&GO和TrustFLEX。这些方案使新的安全项目能够在几分钟内通过TPDS v2建立原型,同时根据客户的部署规模、用例要求和所需要的定制程度提供选择: · Trust&GO——设备是预先定义和预先配置的现货,用于基于TLS和LoRaWAN网络的安全云认证,最小可订购量(MOQ)仅为10台起订。 · TrustFLEX——客户可通过默认的通用证书或专用证书(自定义PKI)来使用此方案的预配置设备,同时支持比Trust&GO方案更广泛的预定义使用案例。 为了满足最苛刻的使用情况,Microchip的TrustCUSTOM系列让客户可以自由地完全定义安全认证配置和完全定制安全密钥存储。 借助完全集成的配置入网(onboarding)流程,TPDS v2软件允许客户选择安全解决方案,验证用例,制作原型,然后开始安全预配置过程,所有这些都只需几个简单步骤。 Microchip安全产品业务部副总裁Nuri Dagdeviren表示:“我们的TPDS v2软件通过将安全最佳实践融入直观和简化的流程,使开发人员能够轻松遵守现有标准和即将出台的嵌入式系统安全法规。我们将继续通过可靠的硬件和安全解决方案,帮助客户加快产品上市并赢得长期业务。TPDS还将支持Microchip安全解决方案在安全元件之外的入网(onboarding)和预配置服务。” 第三方集成 TPDS v2的最大优势之一是,它使第三方合作伙伴能够添加自有用例,丰富了客户对安全元件入网和安全功能的选择。Microchip合作伙伴之一EBV Elektronik(安富利集团)使TPDS v2用户能够通过ATECC608B TrustFlex配置,使用EBV-IoT“安全盾牌”评估工具包快速、安全地连接到安富利IoTConnect云。欲了解更多信息请点击这里。 EBV Elektronik技术开发副总裁Antonio Fernandez表示:“我们与Microchip有着紧密的合作关系,非常高兴能够成为可信平台设计套件v2计划的一部分,使所有客户在芯片和云端都能获得可扩展的安全性。采用最佳实践是实现我们为所有客户提供最佳安全平台共同目标的重要一步。我们相信,TPDS的增强功能提供了最简单、最经济的方式,让我们得以继续位于行业前列,助力客户部署一流的解决方案。” TPDS v2软件工作原理 可信平台设计套件V2使用户能够: · 通过培训视频和适用于各类用例的交互式应用笔记,实现安全入网; · 根据选定用例开发应用程序,最终确定安全解决方案的配置,执行秘密密钥交换; · 采购验证样本并开始生产。 开发工具 可信平台设计套件支持Windows®和macOS®环境。TA100配置器仅适用于Windows平台。 供货与定价 Microchip的开源可信平台设计套件(TPDS)可在Microchip网站免费下载,用于Trust&GO和TrustFLEX流程。网站还提供培训视频、互动应用笔记、C代码和其他项目支持。用于TPDS的TrustCUSTOM软件扩展可在签署NDA的条件下提供,可通过Microchip直销网站购买,单价为20美元。 如需了解更多信息,请联系 Microchip 销售代表、全球授权分销商或访问Microchip网站。

    时间:2021-05-12 关键词: Microchip TPDS 嵌入式

  • 魔幻!2021年,6种将死的编程语言?

    随着编程语言的更新迭代,编程界语言排行榜又要面临一次全新的洗牌,六大编程语言将要黄了!此消息一出,令众多程序员心碎!那么这将“亡”的六大语言中有你所擅长的吗?   壹 dashuju Perl 曾几何时,几乎每个人都在使用Perl语言编程。但是那些经常使用的人慢慢地发现,关于这个Perl语言似乎总是有点不对劲。至少我知道有这么个叫做“piecemeal”的编程语言,它的创造者似乎就只是将这个功能堆在另一个功能上面而已,并没有好好考虑将它们结合在一起。 事实上,甚至是它的创造者也不得不承认这种编程语言是有问题的。经过完整地改造之后,现在的开发工作开始倾向于使用Perl6,这个大概是在2000年的时候。至于Perl?俨然已经销声匿迹了!所以完全没有必要去学习它了。顺便说一句,下面这个“Goodbye World”就是用Perl写的: #!/usr/bin/perlprint “Content-type: text/html\n\n”;print “Goodbye, world!\n”; 上面这个例子会出来一个网页。现在的Perl,由于可以作为CGI脚本语言,所以使用的最广泛的是在生成web页面上。但是为了适应时代的变化,我们最好还是将Perl语言“弃之如敝履”。  贰 dashuju Haskell 据说,Haskell 即将在今年进行重大更新。有很多巨头公司和项目(Facebook、GitHub 等)曾经使用 Haskell 开发过一些重要项目。不过,Haskell 在 RedMonk 语言排行榜上的表现一直都很平淡,这表明没有更多的开发者在关注这门语言。它要死了,还是已经死了? 另外一种声音: 在以前的Haskell 用户调查 中,我们可以看到下面五大亮点: 1.Haskell 社区已经开始更加多样化和专注于项目,虽然 Haskell 一直以来以“仅限科学家”著称。 2.Haskell 不仅被用于混合语言项目,还被用于构建完全用 Haskell 编写的端到端解决方案。3.Haskell 社区被认为能给用户提供许多支持。 4.Haskell 在商业环境,特别是 FinTech 中的应用日益增多,但在网络安全和电子商务方面的应用规模仍较小。 5、在过去三年中,Haskell的工具已经有了很大的改进,Stack和Cabal等工具已有大约80%的用户使用。 对于两种声音你们怎么看?  叁 dashuju Ruby 关于Ruby,可以这么唱“十年之后,我不认识你你不属于我……”。因为就在10年前,Ruby语言可谓是风靡一时。它出生于1995年,5年左右达到它的鼎盛时期。如果你经常使用的话,绝对会义无反顾地爱上它。但是,像我们这些学着C语言风格长大的孩子在学习Ruby时往往会觉得有点囧。 下面是用Ruby写的“Goodbye World”: puts ‘Bye bye, Miss American Ruby! Drove my Chevy to the Levie…’puts ’2011 was the day that Ruby died, yeah…’ 下面是一个用于计算阶乘的例子: def fact(n)  if n == 0    1  else    n * fact(n-1)  endendputs fact(ARGV[0].to_i) 我测试了这个例子,来计算1000的阶乘。下面是结果(由于篇幅限制,中间略过了2569个数字): ruby fact.rb 100040238726007709377354370243392300…0000000 从各方面来看,Ruby都很好,几乎是一片赞誉声……除了Twitter。在2011年4月,Twitter宣称他们已经将几乎大部分的代码都改写过了,以便不必使用Ruby和它的web框架——Ruby on Rails,据他们所说这个平台非常之低效。不过,我想说的是,也正是那一天起,Ruby开始走下坡路,使用的人数也是越来越少。  肆 dashuju Visual Basic.NET 十年前,我应聘到一个需要重写大量代码的公司,名字我已经忘记了,主要工作就是将VB6转换为Visual basic.NET。大概就只干了一两个月吧,我就跳槽了:真心太痛苦了。 微软钟爱于BASIC编程语言的扩展可以一路追溯到1991年,那时他们刚刚采购了来自Alan Cooper的一个非常酷(对于那个时候而言)的可视化编程设计。Alan Cooper初期使用的是别的编程语言,但是比尔盖茨让他换成BASIC语言,因为盖茨认为那是当时最为简单的编程语言。于是乎,大名鼎鼎的Visual Basic,就从BASIC中衍生出来——对象这一概念以及新的编程技术问世了。 后面又发生了一些很有意思的事情。Borland Delphi的创造引领者,Anders Hejlsberg也到微软工作,并且引领创建了一个新的编程语言——C#。这种编程语言非常类似于Java语言。刚开始的学习或许有点难,但是一旦上手,你绝对会对它爱不释手。C#很快就成为了微软的旗舰编程语言。现在的话,在软件行业中,有很多很多需要C#的工作岗位,不少都是高薪聘用的。 虽然针对自己的CLR运行,微软创建了C#,但是它的工程师们另外还创建了一个盖茨深爱的BASIC语言版本,命名为Visual Basic.NET。该编程语言借用了BASIC语言的语法,但是它的编码方法却与C#相似。虽然Visual Basic.NET也在发展,但是优胜劣汰总是不可避免的——大家都选择了C#,于是Visual Basic.NET就成为了明日黄花。 下面是摘自微软网页上的一段Visual Basic.NET程序: ‘ Allow easy reference to the System namespace classes.Imports System‘ This module houses the application’s entry point.Public Module modmain   ‘ Main is the application’s entry point.   Sub Main()     ‘ Write text to the console.     Console.WriteLine (“Hello World using Visual Basic!”)   End SubEnd Module (这里的“Hello World”也可以替换成“Goodbye World”,这个没关系。  伍 dashuju Adobe Flash和AIR 从技术上讲,这些都是平台,而非编程语言。我之所以将它们包含进来是因为如果你想要使用它们,就必须安装Adobe自己的ECMAScript版本,即ActionScript。ActionScript是JavaScript(当前最流行的编程语言之一,因为它能用于所有的浏览器)的一个近亲。ActionScript在ECMAScript(这是JavaScript实现标准的官方名称)中增加了一些细节;但是除了Adobe Flash,其他地方几乎没有ActionScript的用武之地。 你使用Flash不?乔布斯非常讨厌它,并且也不允许iPhone使用它。然后随着iPhone(以及随后的iPad)的逐渐普及,Web开发人员不得不创建不必依赖于Flash的网站。那些以ActionScript为生的开发人员也不得不纷纷下岗。(我曾经看到过一个Flash开发人员指责另一个JavaScript开发人员毁了他的职业生涯。) Adobe也曾试图通过AIR以求得其编程平台的一线生机,于是配建了一个用于构建AIR app的工具,称为Flex。至于AIR,许多人都说,这是一场灾难。不过我们目前也不知道为什么Adobe会推出AIR,可能是想用AIR取代Flash?也可能是想要AIR和Flash相亲相爱共同发展? 记得有一段时间,得益于Twitter平台——TweetDeck(要求用户在电脑上安装AIR运行时)的使用,AIR很是红火了一阵子。那时大概有数以百万计的pc AIR应用被开发出来,只是后来Twitter在2011年买了TweetDeck之后,又改写本地代码取代了AIR。于是乎,AIR的辉煌就到此为止。 随着Flash和AIR的逐渐逝去,Adobe的ActionScript也开始向世界吻别。下面是一些用ActionScript写的代码示例。 package {import flash.display.*;import flash.text.*;public class HelloWorld extends Sprite {   private var greeting:TextField = new TextField();public function HelloWorld() {     greeting.text = “Hello World!”;     greeting.x = 100;     greeting.y = 100;     addChild(greeting);   } }} (你可能会发现这与JavaScript非常相似,都使用var、function和new,并且也使用小数点来访问成员变量。)  陆 dashuju Delphi’s Object Pascal 首先我得向我曾经的好伙伴Delphi表示歉意,因为我不得不公布Object Pascal的“死讯”。well,Delphi(用于发Object Pascal的工具)历经变迁之后,依然苟延残喘着(它起源于Borland公司,现在抱着Embarcadero公司的大腿)。 早先Delphi和它的Object Pascal语言确实给我们提供了一个良好的工作环境:虽然有点啰嗦,但是编译器很快,而且相比Visual Basic(这里指的是pre-Visual Basic.NET,1995年左右),创建Windows程序更容易。 但是它的优势并没有持续下去。也很难说是什么原因,因为这个平台真心是不错的。就在这时,Borland公司开始在其Delphi的产品线上支持C#和C++。发展到后来,Borland公司甚至直接将Delphi卖给了Embarcadero公司,然后Embarcadero公司继续使用Delphi开发产品。话说,它做得相当不错,但是重点再也不是Pascal了。当然,你依然可以用Pascal编程,但是几乎没人走这条路了。事实上,我们可以使用Delphi建立许多不同的平台,包括iOS、Android,以及Linux操作系统。 但是,如果你去Embarcadero公司的网站看看,你会发现他们主要是在促进Delphi’s C++ 的支持。因此,换言之就是,Object Pascal已然逝去了。写到这里,我不禁悲从心来,因为我花了很多很多时间来学习Pascal语言,特别是Delphi’s Object Pascal。但是没办法,现实就是如此残酷,不转行就只能饿死。 下面请看Object Pascal的代码: program HelloWorld;begin    writeln(‘You say goodbye.’) 译者注:以上观点仅代表作者个人观点,请文明礼貌按秩序吐槽。 译文链接:http://www.codeceo.com/article/5-die-programming-language.html英文原文:5 Programming Languages Marked for Death翻译作者:码农网 – 小峰 免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!

    时间:2021-05-11 关键词: 编程 C语言 嵌入式

  • 嵌入式学RTOS到底有哪些作用?

    嵌入式系统中,有很多方式实现任务调度。功能有限的小系统中,无限循环足够实现系统功能。当软件设计变得庞大且复杂时,设计师应该考虑使用实时操作系统。 下面给大家分享使用RTOS的8个理由: 1.硬实时响应 基于优先级抢占的RTOS,根据任务的实时需求,执行优先调度。有严格时序限制的任务可以优先执行,提高应用程序对时间关键事件的响应。 2.系统性能最大化 针对大型的、复杂的嵌入式应用,使用一个事件驱动的RTOS,来替代基于轮询的超循环结构,可以生成一个更有效的设计,更小的存储占用,应用可以获得更多的处理器时间。 3.降低复杂度 RTOS允许应用划分为一个个小的自主运行的任务。任务执行自己的上下文中,不依赖其它任务或调度器。 4.高峰负载管理 RTOS提供了为管理系统高峰活动提供了一个有效的方法。更高的优先级分配给执行峰值负载活动的任务,确保他们在临界时间内访问处理器,在此期间,较低优先级的任务被延迟。 5.紧密集成的中间件 RTOS的模块化设计使得它可以很容易的增加中间件。中间件组件以任务和驱动的方式增加。他们使用RTOS提供的资源与其它任务通信。基于相应的事件被RTOS调度。 6.更大的开发团队 每个任务可以被认为是一个项目。通过RTOS提供的资源(队列、信号量等)来定义输入输出。将系统定义为一个个的任务,可以更容易的部署更多开发人员到一个项目。 7.易于调试和验证 系统划分为功能明确的任务,不依赖其它任务。在整个系统集成之前,可以很容易的调试和验证每个任务。 8.代码重用 RTOS系统中的模块化设计,鼓励将软件功能创建为独立的、验证过的任务。其独立性使得在其它设计中重用这些模块变得很简单。

    时间:2021-05-08 关键词: RTOS 嵌入式

  • 2021年STM32中国峰会圆满落幕,期待明年精彩继续!

    2021年STM32中国峰会圆满落幕,期待明年精彩继续!

    伴随着蝶粉们的欢声笑语,第五届STM32中国峰会暨粉丝狂欢节于4月29日下午在深圳精彩收官。 作为国内最重量级的MCU行业盛宴,本届峰会为期两天,以“芯”生态,“助”安全,“连”未来为主题,通过高端主题论坛、分论坛及技术研讨会、前沿技术展示、粉丝狂欢节等活动,为广大蝶粉带来了一场别开生面的盛会。 (峰会还未开始,就有不少蝶粉早早来到了会场) 下面,就带大家回顾一下本届峰会的精彩盛况! 行业大咖齐聚一堂 首先,在4月28日上午的开幕演讲中,意法半导体副总裁、中国区总经理曹志平发表了致辞。 他表示,尽管这两年受到新冠疫情等多重因素的影响,目前整个MCU产业链都面临着巨大挑战,但意法半导体在中国市场的业务发展非常健康。未来,我们将全力推动产品线的发展,并着力解决制约行业发展的瓶颈问题,希望帮助大家开发出更多有创新、有突破,且效率更高、安全性更好、用户体验更棒的产品和解决方案。 (意法半导体副总裁、中国区总经理曹志平发表致辞) 随后,意法半导体总裁兼首席执行官Jean-Marc Chery、意法半导体亚太区市场营销执行副总裁Jerome Roux、意法半导体中国区微控制器市场与应用总监曹锦东、意法半导体亚太区微控制器技术市场经理何荻凡、意法半导体亚太区MEMS产品高级市场经理许永刚等五位演讲嘉宾,就STM32的技术创新与应用发展做了分析和展望。 (五位演讲嘉宾轮番登场) 当天下午,本届峰会还围绕工业与安全、人工智能与传感技术、云接入与连接、生态与创新四大应用方向,同时举办了四场分论坛。 在此期间,意法半导体与广和通、中移物联网、安谋中国、艾睿电子等多家IoT生态合作伙伴齐聚一堂,从各自擅长的领域发表了精彩演讲。 (分论坛现场) 成果展示亮点纷呈 为了突出专业和技术特色,本届峰会除了设有主论坛、分论坛之外,还在第二天举办了技术研讨会,旨在搭建一个技术交流平台,为嵌入式开发者提供更多的学习机会。 与会嘉宾围绕后疫情时代的“物联网、人工智能、传感技术”等话题展开了深入交流,并在探讨与沟通中分享了彼此的技术和经验,希望借助这一交流平台,让大家进一步了解到ST解决方案的作用与价值。 (技术研讨会现场) 此外,在峰会期间,意法半导体还为广大蝶粉带来了100多项前沿技术和应用演示,全方位展示了基于STM32创新的嵌入式解决方案以及各类终端产品,包括一系列基于STM32 MCU和MPU的工业和安全应用开发套件和客户产品、基于STM32G0和STM32H7的GUI图形化显示方案和各种终端应用,以及全新的STM32U5超低功耗系列MCU等,以便让大家充分地了解到意法半导体为工业、电源管理、传感器、成像等应用开发的技术和产品。 而在众多的展品中,意法半导体则重点介绍了其基于STM32WL和STM32WB的低功耗、长距离/短距离无线通信解决方案。意法半导体的STM32系统芯片(SoC)将MCU和无线通信模块LoRa与BLE5.0/Zigbee3.0集成,使客户能够轻松地在单个芯片上实现控制和无线双重功能。 与此同时,意法半导体还展示了基于全球首款LoRa单片微控制器STM32WL的智能家居演示模型。该演示通过STM32WL的LoRa远程通信技术,将智能家居传感器(如门磁传感器,温湿度传感器,烟雾传感器)连接在一起,实现了智能家居的整体控制。 (技术展厅人潮涌动) 从展厅的火爆人气和观众的积极参与可以看出,STM32生态系统正在被更多的嵌入式开发者认可,其在中国市场的影响力也在不断提高。 特色活动精彩绽放 在4月29日的STM32峰会粉丝狂欢节上,意法半导体还为大家带来了密室逃脱、趣味游戏等节目,并准备了千份好礼以待各位蝶粉。 (参展者参与游戏互动) 值得一提的是,本届峰会还首次推出了24小时挑战赛——Hackathon(黑客松),旨在通过现场比拼、全程直播的方式,让参赛选手在感受竞技乐趣的同时,还能激发和开拓嵌入式开发者的设计灵感与思路,进一步增强STM32生态系统在中国的影响力。 据悉,本次大赛围绕参赛选手如何使用ST产品开发项目展开,针对“GUI应用、高性能应用、人工智能、无线(LoRA、蓝牙)、传感应用、安全、马达驱动、无线模组、STM32生态系统”十大相关功能的实现。 为了帮助参赛团队做好赛前准备,意法半导体不仅向参赛选手提供了开发板和技术文档,还派出了专家团队为大家随时解答问题。 (黑客松比赛现场) 历经五年的不懈努力,STM32峰会已为数千名嵌入式开发者持续呈现了前沿的技术和创新,并成为了MCU业界备受瞩目的大型年度重要峰会。 虽然本届峰会已经圆满落幕,但对于STM32生态系统的发展来说,这也意味着一段新的征程即将开始。相信在意法半导体及全球合作伙伴的齐心协力奋斗之下,明年的STM32必定再迎辉煌! 最后,让我们期待2022年STM32中国峰会精彩继续!

    时间:2021-04-30 关键词: STM32 意法半导体 嵌入式

  • 开启智能“芯”时代,2021年STM32中国峰会盛大开幕!

    开启智能“芯”时代,2021年STM32中国峰会盛大开幕!

    在这春意盎然的日子里,意法半导体STM32如期而至的又与广大蝶粉见面了! 2021年4月28-29日,最in最热的第五届STM32中国峰会暨粉丝狂欢节在深圳华侨城洲际大酒店隆重举办。本届峰会以《“芯”生态,“助”安全,“连”未来》为主题,围绕“工业与安全、人工智能与传感技术、云接入与连接、生态与创新”四大应用方向,为广大蝶粉带来了面向未来的新产品与新技术;同时,本届峰会还汇集了众多全球合作伙伴,全方位展示了基于STM32创新的嵌入式解决方案以及各类终端产品。 作为备受瞩目的MCU业界年度盛会,今年意法半导体重磅加码了中国区产品应用与技术更新,通过50余场尖端技术研讨会、100多项前沿技术和应用演示,向大家呈现了最尖端高能的创新技术和最贴近用户的生态落地。与以往不同的是,本届峰会同期还首次举办了Hackathon 24小时挑战赛,旨在激发和开拓嵌入式开发者的设计灵感与思路,进一步增强STM32生态系统在中国的影响力。 (2021年STM32中国峰会在深圳开幕) 意法半导体副总裁、中国区总经理曹志平出席了开幕式,并在致辞中表示,尽管这两年受到新冠疫情等多重因素的影响,目前整个MCU产业链都面临着巨大挑战,但意法半导体在中国市场的业务发展非常健康。未来,我们将全力推动产品线的发展,并着力解决制约行业发展的瓶颈问题,希望帮助大家开发出更多有创新、有突破,且效率更高、安全性更好、用户体验更棒的产品和解决方案。 (意法半导体副总裁、中国区总经理曹志平) 意法半导体总裁兼首席执行官Jean-Marc Chery从市场的角度,分享了自己对企业价值的看法。他表示,我们的科技源于提前布局长期战略性市场,尽管这两年出现了例如疫情等特殊情况,但我们的战略基本原则并没有发生改变。未来,我们仍将继续加强服务市场的能力,为客户和合作伙伴提供一流的产品与高效的服务。 (意法半导体总裁兼首席执行官Jean-Marc Chery) 意法半导体亚太区市场营销执行副总裁Jerome Roux围绕“目标市场及终端市场战略”的话题进行了精彩发言,从市场变化、战略调整等方向,详细介绍了意法半导体在物联网和智能驾驶等领域所面临的机遇与挑战。他认为,5G市场将在明年迎来爆发式增长,这将为STM32的发展带来更多商机。 (意法半导体亚太区市场营销执行副总裁Jerome Roux) 意法半导体中国区微控制器市场与应用总监曹锦东发表了题为《STM32产品路线,激发你的创造力》的主旨演讲,向与会的2000多位嘉宾介绍了STM32产品路线。他表示,意法半导体承诺持续加强STM32产品和生态的开发,让客户实现更多的创新嵌入式应用。“我们很荣幸携手35个合作伙伴,和众多客户相聚在第五届STM32峰会,展现最前沿的技术和方案,帮助用户加快开发出更安全、更多连接功能的应用,携手建设一个更美好的世界。” (意法半导体中国区微控制器市场与应用总监曹锦东) 意法半导体亚太区微控制器技术市场经理何荻凡从生态系统的角度,介绍了智能传感器给STM32带来的创新与变革。他表示,意法半导体拥有一个庞大且丰富的STM32生态系统,可以提供控制器与功率系统相关的软硬件平台。目前,意法半导体已在全球布局了相关行业的应用专家,可以直接帮助客户提供参考设计,一体化的软硬件工具,甚至是原型设计。 (意法半导体亚太区微控制器技术市场经理何荻凡) 意法半导体亚太区MEMS产品高级市场经理许永刚则做了题为《传感器连接世界》的主题演讲,分享了ST传感器在消费电子领域的发展现状和应用成果。他表示,意法半导体作为传感器的主力供应商,将不断通过技术革新的方式赋能消费电子、汽车电子等领域,未来ST传感器发展将大有可为。 (意法半导体亚太区MEMS产品高级市场经理许永刚) 随后,在专题讨论环节,豆荚科技(Beanpod)、国迅芯微(NIIC)、中移物联网(OneOS)、纵行科技(ZiFiSense)、意法半导体(ST)等企业代表,围绕“物联网、嵌入式、人工智能”等关键词进行了深入探讨。他们一致认为,AIoT与嵌入式是密不可分的,物联网和人工智能的发展对于嵌入式开发具有一定的促进作用。作为支撑AIoT发展的重要基石,未来嵌入式技术必将迎来更多的发展机会。 (专题讨论活动现场) 最后需要指出的是,意法半导体STM32的发展与成功不是一蹴而就的,而是靠众多全球合作伙伴长期以来的支持与努力积累而成的。可以说,如果没有他们就没有STM32今天的辉煌。为此,本届峰会还举行了STM32(中国)战略合作伙伴授牌仪式,以表彰他们为STM32生态系统作出的持续贡献。 (颁奖现场) 据悉,在为期两天的峰会上,意法半导体携手多家IoT生态合作伙伴共同展出了200多个原型设计,包括基于市场领先的STM32 *微控制器(MCU)和微处理器(MPU)等最新技术创新成果。 与此同时,本届峰会也为参展者提供了一个绝佳的平台,通过应用演示基于超低功耗STM32U5 IoT Kit的安全监控摄像头、STM32H7伺服控制器,以及基于TouchGFX(或RT-thread)的智能穿戴等解决方案,让大家充分地了解到意法半导体为工业、电源管理、传感器、成像等应用开发的技术和产品。 (ST新产品吸引了众多参展者体验互动) 到目前为止,意法半导体STM32峰会已经在中国走过了五个年头。每年4月底,STM32都会在深圳这个电子行业前沿阵地掀起一场面向嵌入式开发者的“蝴蝶效应”。对于广大蝶粉而言,STM32峰会就像是一个大舞台,只要你足够精彩,就一定可以舞出自己! 看到这里,你是不是心动了呢?峰会第二天(4月29日)还有免费的NUCLEO开发板可以领取,欢迎大家莅临2021年STM32中国峰会现场,亲身体验意法半导体和客户开发的这些创新演示。

    时间:2021-04-28 关键词: STM32 意法半导体 嵌入式

  • 你眼中的嵌入式是什么样?

    编排 | strongerHuang 微信公众号 | 嵌入式专栏 很多初学小白对嵌入式的理解都比较模糊,甚至有错误的理解,今天就给大家分享一下嵌入式到底是什么。 嵌入式专栏 1 嵌入式人才要求 嵌入式行业需要什么样的技术人才? 仔细观察各种招聘的岗位要求,无非是两方面: 1.通用要求 比如什么学历,多少年工作经验,有创新精神,抗压能力强,吃苦耐劳,善于沟通,态度认真等等等等... 2.专业要求 这个可真的多了去了,但无非就是各种精通。什么精通控制理论,精通电路设计,精通各种硬件驱动开发,精通linux内核以及裁剪,精通C/C++/Java语言,精通DSP,精通ARM,精通什么linux / ecos / ucos / wince / VxWorks,精通嵌入式数据库,精通多线程编程,精通各种网络协议,精通各种总线协议,精通塞班/安卓/IOS平台应用开发,精通汇编、编译器、二进制工具,精通各种媒体封装格式、编解码,精通通信技术,精通硬件原理图,精通PCB设计,精通计算机结构,精通bootloader,精通……感觉只要是行业内的就要精通。(笔者感觉精通一门就得好久...) 看完这些,尤其是专业要求,头大了吧? 那么,我们就分析一下上面的要求吧。各个公司就的通用要求像是互相复制粘贴的一样,比如学历、经验、还有个人秉性,我都不知道各个公司怎么在员工入职前考察。专业要求呢,一看就让人头晕,了解了嵌入式开发的结构可能就好理解些了。 从技术实现上讲,嵌入式的产品分为两大类:一类简单的,没有操作系统支持的;一类复杂的,有操作系统的。就目前发展方向看,后一种是趋势。前一种从程序实现上可分为3层:硬件层、驱动层、应用层;后一种分为4层:硬件层、驱动层、系统层、应用层。 所以,嵌入式的开发大致需要这么从下到上四类工程师:嵌入式硬件开发、嵌入式驱动开发、嵌入式系统开发、嵌入式软件开发。 嵌入式专栏 2 掌握技能 嵌入式开发,牵涉到的面比较广,要求的技能其实挺多。 1.嵌入式硬件开发 这是硬件工程师来做,一般出身为自动化,电子,通信等专业,他们要求熟悉电路等知识,非常熟悉各种常用元器件,掌握模拟电路和数字电路设计的开发能力,熟悉硬件开发模式和设计模式,熟悉各种芯片及外围设备,熟悉8位16位32位处理器嵌入式硬件平台开发。 有的要求有FPGA的开发经验,精通常用的硬件设计工具:Protel/PADS(PowerPCB)/Cadence/OrCad。 一般要有4~8层高速PCB设计经验。由于本人不是做硬件的,对这一块的不熟悉,所以不敢妄言。 2.嵌入式驱动开发 这个可以硬件工程师来做,也可以软件工程师来做,主要还是取决于设备。目前驱动开发,除非是简单的设备驱动,实际上很多时候都是移植,所以更多的是需要掌握目标平台的硬件和系统特性。 所以至少得掌握一些操作系统、系统结构、计算机组成原理、数据结构相关知识。熟悉嵌入式ARM/MIPS/PowerPC架构。具有单片机、某种或多种32位嵌入式处理器的移植开发能力,熟悉bootloader过程,具有扎实的硬件知识,理解硬件原理图,能独立完成相关硬件驱动调试,能够根据芯片手册编写软件驱动程序。 如果涉及到网络设备,或许还要掌握很多高层的网络协议的原理。个人感觉这一块虽然大部分不是很难,但却是极为重要的。当然如果要在这一层次提供对上层的多线程支持,某些驱动也是很难写的。 3.嵌入式系统开发 这个没听说硬件工程师来做的。做这块,熟悉操作系统的原理是必不可少的,比如内存管理,比如线程调度,比如文件系统等等;还要精通处理器体系结构、指令集、寻址方式、调试、汇编和混合编程等方面的内容;熟悉操作系统启动流程。 对于linux,要熟悉Linux配置文件的修改,掌握内核裁减、内核移植、交叉编译、内核调试、启动程序Bootloader编写、根文件系统制作和集成部署Linux系统等整个流程。这一块要是真写起来,困难程度那是相当恐怖的,好在大多都是移植,很少听说有公司要去开发个操作系统的,没Google的实力啊。 4.嵌入式软件开发 这个嘛,没有操作系统的话,程序一般不会特别复杂,如果有操作系统的支持,又和一般的软件开发很接近,所以尽可以看作是搞桌面开发。这个要求就是熟悉系统的API,精通C语言的高级编程知识,包括函数与程序结构、指针、数组、常用算法、库函数的使用等知识、数据结构的基础内容;掌握面向对象编程的基本思想,以及C++语言的基础内容; 精通嵌入式Linux下的程序设计,精通嵌入式Linux开发环境,包括系统编程、文件I/O、多进程和多线程、网络编程、GUI图形界面编程、数据库;熟悉常用的图形库的编程,如QT、GTK、miniGUI、fltk、nano-x等,掌握各种应用层的网络协议使用,以及各种音视频技术等。 5.通用技能 另外还有些以上四类都用得着的技能。 (1)基础技能:搞嵌入式开发,还有一些必不可少的基础技能 开发平台的熟悉。目前的嵌入式开发大多数是在linux或者类linux下的环境下进行的,那么linux的使用应该熟悉吧,shell脚本得会写吧,配置文件得会改吧,GCC GDB得会用吧,Make工具得会吧? 比如项目管理工具的使用,都什么年代了,不会用CVS,也不会用SVN?请问,你还活在软件时代的原始社会么? 数据结构和算法。搞软件开发,不懂数据结构,不会算法优化,不会衡量复杂度,太不靠谱了吧?当然,这个不是要求啥算法都会,啥数据结构都记得住,最起码得知道有那么种东西,有什么作用,这样用到的时候好歹也能查啊。 编程语言。关于JAVA,我知道现在JAVA的异军突起,很是震动了编程语言界,但是在嵌入式开发下,不会C或者C++语言,实在说不过去。当然现在很多手机应用完全用java写的,如果你只想搞嵌入式的上层软件开发又不想深入下去,只用JAVA也未尝不可。关于汇编,嗯,这个可能挺难,毕竟跟具体的硬件架构(主要是CPU)有关,但是真的很有意思,而且在某些时候,它是不可替代的。 (2)特殊技能:对于嵌入式开发的某些部分必不可少,但对于有些(比如应用开发)可能没有多大用处 数字电路。这个主要是了解一些基本的电路知识,如门电路、逻辑电路、存储器、寄存器,为了更好的理解嵌入式芯片、存储器、外围设备等硬件的设计,但往往在软件开发中未必能用的到。因为大部分硬件都提供了很完整的软件接口。 操作系统。这个说的是平台上选用的操作系统。嵌入式产品操作系统实在是太多了。但操作系统的内部设计原理都是殊途同归。首先要去学习的是操作系统原理,去了解进程通信、内存管理、文件系统等几个重要的部分,因为这些在软件开发尤其是内核驱动开发时会用到。接下来可以去熟悉至少一种主流的操作系统,Linux是一个很好的选择,去了解它的内核架构,设备驱动架构,如何去编译、裁剪、编写应用程序,以及如何使用在具体的嵌入式产品上。 计算机的组成/微机原理。主要是为了了解微型计算机的硬件工作原理,明白CPU、总线、I/O、存储器等一些关键结构是怎么工作的,虽然是很枯燥的知识,但是对熟悉外围设备硬件工作方式,及操作系统,软件架构的设计及优化相当关键。 (3)扩展的能力:这些可能是要用到的 通信协议。对于非应用层的通信协议,我实在不知道是不是该把它放入操作系统的范畴,因为很多操作系统是没有网络部分的,但是在很多方面它又是由操作系统提供。当然这些下层通信协议,貌似不太用关心,因为太多的开源协议栈了。应用层的网络协议可能就要关心了,比如http,ftp,rtsp,rtmp,mms等等。 音视频处理。比如文件封装、音视频的编解码、各种音视频的标准,还有流媒体什么的。Ffmpeg是一个很好的东西,建议学习一下。 信息安全。恩,这一块貌似现在越来越受到重视了。 数据库。唉,嵌入式设备能力越来越强啊!再搞搞,我看也不用交叉编译了。 有时和同事讨论起现在的行业需求,说到各个公司总是招不到人,程序员又总说找不到工作,自己就有很多感想,是公司要求高,还是程序员要求高?有时候看到一些招聘的职位要求,总是打击到自己的信心,一条一条数下来,好像自己能做到的还真没多少,只好让自己再努力些再努力些。当然有时也会觉得某些招聘不靠谱,看那一条条的要求,个人感觉要是全做到,普通人怎么也得努力个十年八年的,这样的大牛们,估计看不上给出的那薪资吧。 对于程序员来讲,做技术真的是很累很难的一件事情。网上搜一下,遍地的抱怨贴、情感贴,都充分反映了这个职业对身体和情感的考验。如果你不畏艰难,想把技术做下去,那么努力吧,也许某天你会随便拿起一份招聘启事,鄙视一眼:“靠!就这点要求,老子去都掉价!”,那么你就是真正的大牛了! 嵌入式专栏 3 现状分析 不少新人来到我们研发已近十几年。这十几年里,同一批人员,有的已经很快适应了环境,经过自己的努力和付出,能为研发工作独挡一面,成为某一方面的小专家;有的尽管前期不太适应,但是通过指导和修正,业已慢慢进入了工作状态,相信经过一段时间,会逐步担当起某一方面的研发工作。 同一时期进来工作,为什么他们现在的能力和状态会产生如此大的差异呢? 通过的相处和分析,我发现凡是进步快的同志有如下特点: 勤奋,为了解决一个技术问题经常会主动留下来加班。 钻研,为了解决一个技术问题会主动学习各方面的资料,勤做实验,用事实去验证;。 和领导和同事及时主动沟通,集思广益,争取各方面的资源,充分利用已有的经验,避免走弯路,加快研发进程。 有强烈的事业心和牺牲精神,不达目标绝不停息。 反之,那些成长慢或者还没有融入研发工作的同志则具有以下特点: 工作没有目标,精力分散,很多的时间花在网络上,偷偷的看视频。 工作推卸责任,把工作没有进展的原因推卸到工作难度太大,或者资源不够,而自己却又不主动的去争取资源。 没有长期为研发乃至个人的职业生涯有充分的打算,或者说来研发的目标比较低下只是为了混口饭吃;人无远虑,必有近忧,没有远大的理想,外界任何一个小的干扰都会让你三心二意,因而知识的学习没有系统性。 和同事和领导的沟通不主动,甚至避让,怕领导检查工作。 更关注生活而不是工作。 比较在意自己的付出。 两种一对照,问题显而易见:研发工作是一项很具挑战性的工作,需要付出艰辛的劳动,需要有扎实的理论基础和动手能力;在开发任务面前头脑清醒,思维敏捷,头绪清晰,有条不紊;遇到困难不会退,遇到挫折不气馁;需要有团队精神,需要有化解矛盾和困难的勇气,智慧和决心,要有相当强的心理素质;因此人员的素质和心理状态是决定性的。上进的同志,稍微带一带,成长速度很快;不主动的同志,工作起来举步维艰,带起来很吃劲,心情也受影响。 为了提高研发效率,我们开发了管理软件,制定了各种规章制度。但是,软件和制度只能治标,不能治本,问题的根还是出在人上。 应该讲,目前研发部门的软硬件条件和和技术水平,可以让一批想在电子技术嵌入式领域有所作为的年轻人干出骄人成果的。但是现实情况我们也不能过于乐观,研发部门还是存在一些问题的,尤其是人员素质问题。为此我们在参加研发管理培训的时候也咨询过专业人士,他说了一句话:小草永远也长不成苍天大树。 所以请各位想想,你现在是小树苗呢,还是草种子?是树是草取决于你是否有强烈的向上成长的愿望,取决于你是否有千方百计吸取土壤养料的勤奋,取决于你对的人生价值的判别,认为现有的土壤值得你扎扎实实定下根来,做一棵这片土壤上的大树。想成为大树的,我们一定创造条件让他(她)成长为大树;如果注定是草种子,我们也无能为力,只有优胜劣汰。 嵌入式专栏 4 再论能力和勤奋及其他 1.笨鸟先飞早入林,对事物的认知是和事物对大脑的刺激频率和时间成正比的,一个事情经常去做,时候经常去琢磨,就能悟出其中的道理,对事物认识深度是通过在实践中不断发现错误,不断修正才达到的。如果人不勤奋,把过多的时间和注意力放在工作之外的地方,那就自己切断了实践这个重要环节,水平和经验永远得不到提升,能力的提升跟谈不上了,接着就是职务,收入上的提升,说到底就是个人在社会上竞争力的提升。不去提升你的核心竞争力,成天沉迷于网络还有其他事物,是否有点舍本逐末呢? 2.个人定位决定工作的态度,思维决定习惯,习惯决定行为,行为影响你的核心竞争力。 3.改变自己,而不是改变他人和环境。 -END-

    时间:2021-04-25 关键词: 编程语言 现状分析 嵌入式

  • TDK 对嵌入式电机控制器系列进行了扩展,实现了对高温环境的适应

    TDK 对嵌入式电机控制器系列进行了扩展,实现了对高温环境的适应

    · HVC 4222F 和 HVC 4422F 属于基于 Arm® M3 的电机驱动器,具有 32k 和 64k 两种闪存 · 完全指定,经过高达 160°C 结温测试 · 目标应用包括汽车驱动系统和热管理系统* TDK Corporation 对其 Micronas 嵌入式电机控制器系列产品进行了扩展,以实现高温环境应用。HVC 4222F 和 HVC 4422F 专门针对环境温度要求高达 150 °C 的应用中智能执行器的操作开发研制而成。HVC 4222F 具有 32k 闪存,而 HVC 4422F 则具有 64k 闪存,可应用于更加复杂的软件。这些高温装置主要应用于内燃机驱动系统,以及新兴的电动和混合动力汽车热管理系统。* 样品现已上市;2021 年第二季度将开始进行批量生产。 这两种新型高温装置均属于 LIN 总线连接执行器的汽车级电机控制器产品系列。HVC 4xxxF 系列集成了 Arm® 标准微处理器与六个独立的 500mA 半桥驱动器以及一系列附加功能,使紧凑而经济高效的电机控制应用成为了可能。装置能够在功率要求高达 1A 峰值电流的应用中驱动小型有刷 (BDC) 和无刷 (BLDC) 步进电机。 凭借其强大的处理能力,HVC 系列可实现复杂的电机控制算法,例如用于永磁同步电机 (PMSM) 的空间矢量调制 (SVM)、带有反电磁力的无传感器换向 (BEMF),以及各种带电流限制和失速检测的步进算法。11 个通用输入输出引脚 (GPIO) 实现了大量霍尔开关组合或 2D/3D 传感器的集成,从而使电机控制更为精确。 主要应用* · 散热器格栅百叶窗 · 智能阀门和智能泵 · LIN 总线连接执行器 主要特点和效益** · 电源电压范围从 8 V 到 18 V(支持 4.5 到 40 V 瞬变) · 6 个 500 mA(最大)半桥驱动器 · 32-位 Arm® Cortex®-M3 CPU 内核 · 20 MHz 系统振荡器,35 kHz 看门狗振荡器 · 2k SRAM 32k 闪存型号与 4k SRAM 64k 闪存型号 · 12-位,1 µs ADC,用于内部和外部测量 · 2 个 8 位电流 DAC,电机电流限制为 2 mA 至 500 mA · 中心和边缘对齐并具有 ADC 触发功能的 12-位 PWM 发电机 · 用于输入和输出 PWM 信号处理的 16-位定时器 · 11 个用于应用程序接口的 GPIO · LIN 收发器,使用总线分流方法进行自动寻址 · 小型高效热 QFN40 封装 主要数据 *任何关于我们产品的目标应用程序的提及都不会声称适合用途,因为这必须在系统级进行检查。 **所有操作参数必须由客户的技术专家针对每个客户应用进行验证。

    时间:2021-04-23 关键词: 电机控制器 TDK 嵌入式

  • 嵌入式系统编程

    嵌入式系统编程

    今天分享的文章描绘出了一个真正的嵌入式程序员应该是怎样的模样,其实bug菌一直觉得嵌入式程序员是一个程序员世界中的鬼斧神工,他们利用极其简约的"物件"构造出精美的杰作! 好吧,不吹了,看了下面的译文你就了解了: 寄存器!示波器!胡子! 串口!C! 循环剃须!胡子!中断!汇编!等等,我刚刚提到胡子了吗? 如果我提到“嵌入式程序员”一词,我们行业中的大多数人都会立刻想起一个英雄角色的形象。 一个拥有神秘技能的伟大开发人员,有着渊博的神秘学的知识,对个人卫生的概念持半信半疑的态度,面部胡子拉碴,像神一样的形象。 然而,在秘密地研究了几年这个主题之后,我在这里告诉你,你们的想象统统不正确。 大多数嵌入式程序员都没有胡子,做嵌入式程序员也不必连做梦都要使用汇编语言,而且嵌入式程序员也会洗澡。 我还可以告诉你嵌入式编程非常有趣,收获颇丰,且富有挑战性。如果你对本文感兴趣,那么有可能将来你也会从事这一行。 请注意,以下内容可能有点雄心勃勃。我会介绍嵌入式程序应有的样子,而不是大多数嵌入式程序实际的样子。 这可能是一种理想的状况。突然偶遇嵌入式代码,你可能觉得非常吓人,觉得这些代码都是一些聪明的家伙写的高端代码。 但我想要告诉你,你会对Spotify的嵌入式编程感兴趣,而优秀的代码正是我们的奋斗目标。 所以,如果你也是一个嵌入式程序员,那么可能本文中介绍的代码与你每天使用的有出入,我明白你的心情,现实确实如此,但生活可以更加美好。 首先,我们来介绍一下嵌入式系统编程与嵌入式应用程序编程之间的区别。 嵌入式系统编程 :可能就是你想象中的嵌入式编程。 包括让嵌入式硬件平台正常运行所涉及的所有工作:编写设备驱动程序,引导加载程序,移植或编写操作系统,各种位操作,还要考虑到时钟周期问题。调试丢失的中断。 一连盯着示波器几个小时,埋怨编译器,讨厌中断控制器,就仿佛它是一个人一样。时常在午夜惊醒,冷汗淋漓,努力说服自己是猫偷走了中断信号的正面。不好意思,我跑题了。嵌入式系统编程确实涉及非常底层的东西。 嵌入式应用程序编程 :指的是为资源有限的系统编写应用程序的技术。这种开发更容易,开发环境很好。 还可以在台式计算机上编写、测试和调试代码。虽然有些约束可能很具挑战性,但是你无需考虑汇编、GPIO引脚或DMA描述符。 然而,你必须考虑内存的使用情况,运行环境,代码的大小和可移植性。但说真的,难道有人不喜欢这些工作吗? 本文讨论的是嵌入式应用程序编程,在Spotify我们大部分时间从事的都是这种类型的嵌入式编程。 1 简约之美 约束让我们的生活变得更加有趣。 与完整的管弦乐队录制的专辑相比,只用两根柱子和一杯水录制的音乐专辑需要更多的创造力。 虽然我对创造力或对“音乐”一词有着非常规的理解。但是, 我想表达的是嵌入式编程很有趣,但是有趣在哪儿呢? 大多数嵌入式程序的首要约束因素是大小,代码必须紧凑,常见的编程习惯(代码需要模块化,易于维护和测试,还要经过测试)仍然适用于嵌入式程序,除此之外还需要将代码量降到最低,而且还需要保证自给自足。 用一个概括就是: 优雅 。良好的嵌入式代码非常优雅。 那么什么是嵌入式编程呢?什么是嵌入式程序员?让我们继续往下看…… 2 内存的利用率--隐形的杀手 嵌入式程序员需要避开现代内存管理的概念。你几乎不可能实现垃圾收集。一个垃圾收集器可能就耗尽了代码容量的限制。 而且垃圾收集器还需要不时地运行实际的垃圾收集,这会破坏嵌入式程序的实时效果。 你甚至还需要避免常规的malloc(),调用malloc()可能会花费大量时间,因为分配器可能必须对分配区域进行碎片整理,才能释放出足够大的内存块来响应请求。 嵌入式程序员很乐意直接管理内存,编写自定义分配器,甚至通过静态分配的内存块来杜绝内存分配失败的发生。 大多数嵌入式系统和普通计算机之间的一个 重大区别就在于内存的组织方式 。 主流的台式机和服务器的处理器架构(如Intel x86)使用的编程模型中,代码和数据存储在同一个地址空间中。 这意味着如果你的机器有64MB的RAM(好大啊,太不可思议了!),而你的程序是40MB(令人难以置信!),那么你的数据就只剩下24MB(这么多,根本用不完啊!)。 在家的时候,我们称之为冯·诺伊曼架构,但在酒吧我们就不敢这么说,因为这会引发唇枪舌战。 由于RAM是处理器中功耗最大的一部分,而且由于RAM占用大量芯片面积,因此在许多嵌入式系统使用的模型中,代码和数据分别存储在不同的存储器中。 代码和静态数据存储在ROM(通常是闪存或EEPROM)中;而动态数据存储在RAM中。ROM比RAM便宜很多,因此通常使用的也较多(通常是5-10倍)。 RAM和ROM可以具有单独的地址空间(哈佛架构),也可以映射到统一的单个地址空间(改良版的哈佛架构,遗憾的是从未被称为小丑架构)。 除非你需要编写引导加载程序或系统内升级的功能(在这些情况下,你需要向代码的存储空间中写入),否则一般你不会注意到这两者之间的差异。 但这确实意味着代码的大小和RAM的使用率需要单独计算。换句话说:在嵌入式系统中,代码大小的限制不同于RAM使用的限制。 请记住,通常RAM的使用是最关键的参数。 3 你所看到的就是一切 嵌入式程序员确实是软件世界的佼佼者。他们喜欢亲手写程序,创建自己的代码库,使用20世纪60年代的语言,使用机械键盘。 很少有是现成的库可以满足嵌入式系统的特殊限制。虽然有很多JSON解析库,但很少有库能够支持大于RAM容量的文档的解析。 嵌入式程序员总是乐于尝试现有的库,因为他们都很懒。但是,如果没有合适的库,那么嵌入式程序员也很乐意重新发明更小、更快的工具。 由于嵌入式程序员非常重视理解和控制代码的执行和资源的使用,因此几乎所有代码都是用C语言编写的。 有时新的编程语言试图入侵嵌入式的世界,结果却会遭到嵌入式程序员的质疑。 这种语言有一些奇特的线程模型吗?请参见如下有关并发的讨论。 这种语言有垃圾收集吗?请参见如下有关性能的讨论。 这种语言的编译器是否支持人类已知的每种计算机体系结构? 请参见如下有关可移植性的讨论。简而言之,衡量标准设定得很高,而且C非常优秀。 嵌入式软件系统往往很好理解 。缺乏第三方的代码库和华丽的继承结构,而且还存在严格的代码大小限制,所有这些都保证了代码很小且易于理解。 在编写良好的嵌入式代码中,你在页面上看到的一切就是所有的代码。嵌入式程序员无需通过层层地剥离才能弄清楚代码的实际作用。 这并不是说实际的嵌入式应用程序的逻辑不会非常复杂,但至少我们不需要通过层层叠叠的抽象模式来隐藏这些逻辑。 4 并发 嵌入式开发人员都不喜欢并发。对于查尔斯·巴贝奇(可编程计算机的发明者,计算机的先驱)来说,一次做一件事就足够了,你也一样。 大多数形式的并发支持都需要不时地保存状态并切换到新任务。 这需要多个堆栈,每个任务一个,还需要很多的RAM,有时多得不是一点半点。现如今,堆栈很容易就占用1KB甚至更大的空间。 嵌入的程序员无法忍受这一点。他们宁愿手工处理合作性的任务切换、非阻塞的I/O、轮询、回调、手动任务调度、主循环。 这些都是嵌入式程序员最常用的东西。如果你不了解这些东西的含义,也不用担心,你可以参考本文末尾推荐的著作。 聪明的读者可能不禁想问:“难道不是所有类型的的任务切换都需要保存任务的状态吗?你岂不是将这些工作从操作系统转嫁到程序员头上了吗?” 嵌入式程序员会回答说:“然也!”,或者说:“将工作从操作系统转嫁到程序员头上,这就是嵌入式编程的工作啊!” 并发是一个难题。但是,抛开先入为主的多线程的概念,并发实际上就简单多了。你知道你的代码不会被中断,因此你很容易掌握执行顺序。 缺点就在于你需要为I / O等编写更多的代码,因为你不能使用阻塞。 前面说过的可怜的嵌入式系统程序员很不走运,对他们而言, 硬件中断会打乱所有的工作。 5 请可移植性 如果你的程序不能在人类所有已知的处理器体系结构上运行,那么你的程序就不算嵌入式程序。 大端、小端、基于堆栈的寻址、基于寄存器的寻址、RISC、 CISC、标量、向量、DSP或PIC,这些都无所谓。 代码无论放到哪里都可以正常运行。一个字节包含8比特?没那么快!嵌入式程序员不会做任何假设,他们会质疑所有问题。 如果有一天,客户要求你的程序在有分段只写内存和分支协处理器的基于Chewbacca 5000 12.5位堆栈的矢量CPU上运行,那么嵌入式程序员也可以坦然地告诉他:没问题。 这对你来说意味着什么?疯狂地刷旧版的C标准吧。 6 易于测试 由于嵌入式程序可以在“设备外”进行多种类型的测试,因此嵌入式程序员可以在编写测试代码的时候,尽情地尝试现代软件开发。 测试代码可以用Node.JS、Python、或C ++编写。我们可以在测试代码中在为堆栈上分配大对象,世上没有比这更享受的罪恶感了。 为硬件开发嵌入式程序时,测试绝对至关重要。你编写的代码最终会出现在永远不会更新的设备中。 有时你的代码会被刻录到ROM芯片中。如果在发布后才发现Bug,那成本可就十分昂贵了。 因此,坚决地贯彻现代测试的原则,对编写易于测试的代码保持热情,以及百分百完成测试覆盖率的决心,是嵌入式程序员非常宝贵的品质。 7 性能 对于大多数程序员来说,性能是一个简单的问题:“代码的运行速度够快吗?” 如果代码的运行速度比要求还快,则万事大吉。 对于嵌入式程序员来说,情况则略为复杂:“代码的运行速度够快吗?实时性够吗?功耗是否在计划内?” 除了RAM和代码大小的限制外,代码的运行速度还必须够快。 但不用过快。未使用的周期有助于降低功耗。降低功耗意味着电池寿命更长,产生的热量更少,而且在下一次硬件升级中可以使用更便宜,更慢的CPU。 我们总是与底层的硬件人员博弈。良好的嵌入式代码设计可以促进CPU进入睡眠模式,例如利用显式轮询,让系统可以在轮询之间休眠。这也意味着代码不应该因任何原因造成阻塞。 有些嵌入式系统有硬性的实时要求,例如起搏器。在这样的系统中运行的任何线程或任务都必须保证能够在固定的时间段内返回。 如果运行时间过长,则系统可能会完全失效。拿起搏器举个例子,这样的起搏器会被归类为“次品”。毋庸置疑,为心脏起搏器写代码的工作不适合胆小的人。 大多数嵌入式媒体应用程序都有软性的实时要求——如果线程或任务占用CPU的时间超过应有的时间,那么系统性能会被降级,但不会完全失败。 音频或视频可能会出现故障或卡顿。用户界面可能会感觉延迟。这绝对不是好事,但也不是灾难性的。 编写具有良好实时特性的代码非常类似于编写有助于CPU睡眠模式的代码,两者都是利用很短时间片,非常注意循环长度并且永远不会阻塞。了解你的代码路径。不惜一切代价避免递归。 8 怎样才能成为嵌入式程序员 有理想的嵌入式程序员都有哪些重要的特质? 你需要对计算机体系结构的基础知识有深入的了解。了解内存的层次结构,吞吐量瓶颈和硬件级别的并发问题。还有一颗强大的心理掌握寻址的工作原理(指针)。 此外,根据你需要使用的软件类型,可能还需要掌握一些行业的技术。例如,在Spotify,你需要对网络有很好的理解。 如果你觉得你对计算机体系结构的基础知识没有深入的了解? 那么请参照下列推荐书籍: 《计算机体系结构:量化研究方法》 这本书绝对是经典之作,写的非常好。如果你可以理解内存层次结构设计和线程级并行等章节,那么就可以应对内存管理、并发或吞吐量瓶颈相关的所有问题了。 《现代操作系统》 这本是也是经典之作。作者写道:“5年后,每个人都将在他们的200 MIPS,64M SPARCstation-5上运行免费的GNU。”这本书写自1991年,但书中的内容远远超过了作者的预知能力。书中有关内存管理的章节是内存管理方面优秀的入门读物。 《C语言程序设计 K&R》 标准的C编程书。有史以来最优秀的编程书籍之一。也可能是有史以来最好的技术写作范例之一。当然也是有史以来最畅销的数据。一定要读! 《C语言接口与实现》 这是一本关于正确使用C的书籍,书中介绍了如何使用最实用的数据结构和算法的示例,编写易于维护和测试的代码。 《C专家编程》 这本书对C语言及其与系统交互进行了深入探讨,介绍了内存管理、指针算法、编译器的工作原理、中断的处理方法。 除此之外,好奇心也是嵌入式程序员身上最重要的品质,渴望了解事物原理的冲动以及坚韧,愿意全身心地投入到工作中,不断学习。 END 直接来源:最后一个bug 素材来源: 作者 | Per Knytt 译者 | 弯月 责编 | 屠敏 本文为CSDN翻译,转载请注明来源出处。 版权归原作者所有。仅供技术的传播和学习讨论,如涉及作品版权问题,请联系我进行删除。 免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!

    时间:2021-04-20 关键词: 内存 编程 嵌入式

  • X-FAB增强其180nm高压CMOS技术产品组合中的车用嵌入式闪存产品

    X-FAB增强其180nm高压CMOS技术产品组合中的车用嵌入式闪存产品

    中国北京,2021年4月15日——全球公认的卓越的模拟/混合信号与光电半导体解决方案晶圆代工厂X-FAB Silicon Foundries(“X-FAB”)今日宣布,已为其XP018高压(HV)车用产品工艺推出全新闪存功能。这款新的闪存IP利用X-FAB得到广泛验证的氮化硅氧化物(SONOS)技术——该技术具备更高的性能水平和一流的可靠性,完全符合严格的AEC100-Grade 0汽车规范,可承受在-40°C至175°C的温度范围内工作,并完全支持ISO 26262规定的功能安全级别。其阵列大小为32KB,采用8K×39位配置,带有32位数据总线;另外7位专用于错误代码校正(ECC),以确保零缺陷的现场可靠性。 X-FAB专有的XSTI嵌入式非易失性存储器(NVM)IP测试接口也已包括在内,以达成对存储器的完全串行接驳。 该款汽车级闪存IP能够运行于单个1.8V电源,非常适用于低功耗设计。新增的内置自检(BIST)模块对于实现有效的存储器测试以及全面的产品调试至关重要。如需要,X-FAB还可以为客户带来完整的NVM测试服务。 “这一全新IP解决方案进一步丰富了X-FAB针对180nm开放技术平台的嵌入式闪存产品组合;该平台具有多种电压与晶圆材料可供选择,扩大了我们向市场提供的产品阵容,使我们能够满足客户在更多应用中的需求。”X-FAB公司NVM开发总监Thomas Ramsch表示,“在低功耗和需要适应挑战性环境的情况下,它将具有特殊的价值。” “在现有X-FAB平台上增加的全新嵌入式闪存功能,将实现更小的面积占比,从而为我们的客户带来更明显的收益。此外,XP018的模块化方法意味着其仅需要更少的掩膜层。这两个因素都将有助于推动晶片成本的显著优化。”X-FAB公司NVM解决方案技术营销经理Nando Basile补充道,“全新闪存IP意味着XP018现在能够以高度经济高效的方式应对需要额外逻辑内容和计算资源的混合信号及高压等应用。这将特别适用于电池供电的设备,如便携式或自主智能传感器;并在医疗保健、工业、消费和物联网领域发挥巨大潜力。”

    时间:2021-04-15 关键词: 闪存 X-FAB 嵌入式

  • 基于μC/0S一Ⅱ和LPC2129微控制器实现智能机器人控制系统的设计

    基于μC/0S一Ⅱ和LPC2129微控制器实现智能机器人控制系统的设计

    1 引言 轮式移动机器人是机器人研究领域的一项重要内容,它集机械、电子、检测技术与智能控制于一体,是一个典型的智能控制系统。智能机器人比赛集高科技、娱乐、竞技于一体,已成为国际上广泛开展的高技术对抗活动。现以ARM7处理器为控制核心,采用无线通信技术,并移植嵌入式实时操作系统μC/0S一Ⅱ设计了一套智能机器人控制系统。 2 硬件设计 根据竞技机器人的功能要求进行总体设计,将各个功能进行模块化,其控制系统硬件框图如图1所示。中央处理器采用微控制器结构,用以控制外围设备协调运行。舵机控制机器人的运动方向;驱动电机电动机采用输出轴配有光电编码器的小型直流电机驱动车轮旋转。电磁铁作为机械手夹紧的执行元件。设置了两路超声波传感器、8路光电检测输入和8路开关量检测接口。整个机器人的运行状态和运行参数通过LCD动态显示。 2.1 微控制器的选型 机器人要实现的动作和功能较多,需要多个传感器对外界进行检测,并实时控制机器人的位置、动作和运行状态。系统中的所有任务最终都挂在实时操作系统μC/0S一Ⅱ上运行,因此不仅要考虑微控制器的内部资源,还要看其可移植性和可扩展性。LPC2129是Philips公司生产的一款32位ARM7TDMI—S微处理器,嵌入256 KB高速Flash存储器,它采用3级流水线技术,同时进行取指、译码和执行,而且能够并行处理指令,提高CPU的运行速度。由于它的尺寸非常小,功耗极低,抗干扰能力强,适用于各种工业控制。2个32位定时计数器、6路PWM输出和47个通用I/0口,所以特别适用于对环境要求较低的工业控制和小型智能机器人系统。因此选用LPC2129为主控制器,可以获得设计结构简单、性能稳定的智能机器人控制系统。 2.2 无线通信接口设计 系统采用迅通公司生产的PTR2000无线通信数据收发模块。电路接口如图2所示。该模块基于NORDIC公司生产的射频器件nRF401开发,其特点是:①有两个频道可供选择,工作速率高达20 Kb/s;②接收发射合一,适合双工和单工通信,因而通信方式比较灵活;③体积小,所需外围元件少,接口电路简单,因此特别适合机器人小型化要求;④可直接接单片机串口模块,控制简单;⑤抗干扰能力强;⑥功耗小,通信稳定。 2.3 光电检测模块设计 2.3.1 光电检测过程 设计光电检测模块,使机器人能够检测地面上的白色引导线。光电检测电路主要包括发射部分和接收部分,其原理如图3所示。发射部分的波形调制采用了频率调制方法。由于发光二极管的响应速度快,其工作频率可达几兆赫兹或十几兆赫兹,而检测系统的调制频率在几十至几百千赫兹范围之内,因此能够满足要求。光源驱动主要负责将调制波形放大到足够的功率去驱动光源发光。光源采用红外发光二极管,工作频率较高,适合波形为方波的调制光发射。 接收部分采用光敏二极管接收调制光线,将光信号转变为电信号。这种电信号通常较微弱,需进行滤波和放大后才能进行处理。调制信号的放大采用交流放大形式,可以将调制光信号与背景光信号分离开来,为信号处理提供方便。调制信号处理部分对放大后的信号进行识别,判断被检测对象的特性。因此,该模块的本质是将“交流”的、有用的调制光信号从“直流”的、无用的背景光信号中分离出来,从而达到抗干扰的目的。 2.3.2 光电探头 在机器人底盘前部安装有光电探头,共设置了5个检测点,其结构如图4所示。 从理论上讲,检测点越多,越密,识别的准确性与可靠性越高。但是硬件的开销与软件的复杂程度也相应增加。采用该寻线系统保证了检测的精确度,也节约了硬件的开销。发光二极管发出的调制光经地面反射到光敏二极管。光敏二极管产生的光电流随反射光的强弱线性变化。检测出这种变化,即可判断某一个检测点是否在白色引导线的上方,从而判断机器人和白色引导线的相对位置。 2.4 超声波测距传感器设计与实现 两路超声波传感器用以控制机器人避开障碍物,并预测机器人相对目的地距离,起导航作用,其接收部分与微控制器的捕获和定时管脚相连接。整个超声波检测系统由超声波发射、超声波接收和单片机控制等部分组成。发射部分由高频振荡器、功率放大器及超声波换能器组成。经功率放大器放大后,通过超声波换能器发射超声波。 图5给出由数字集成电路构成的超声波振荡电路,振荡器产生的高频电压信号通过电容C2隔除掉了信号中的直流量并给超声波换能器MA40S2S。其工作过程:U1A和UlB产生与超声波频率相对应的高频电压信号,该信号通过反向器U1C变为标准方波信号,再经功率放大,C2隔除直流信号后加在超声波换能器MA40S2S进行超声波发射。如果超声波换能器长时间加直流电压,会使其特性明显变差,因此一般对交流电压进行隔除直流处理。U2A为74ALS00与非门,control_port(控制端口)引脚为控制口,当control_port为高电平时,超声波换能器发射超声波信号。 图6示出为超声波接收电路。超声波接收换能器采用MA40S2R,对换能器接收到的信号采用集成运算放大器LM324进行信号放大,经过三级放大后,通过电压比较器LM339将正弦信号转换为TTL脉冲信号。INT_Port与单片机中断管脚相连,当接收到中断信号后,单片机立即进入中断并对超声波信号进行处理和判断。 3 实时操作系统μC/OS—II的移植 μC/OS—II是一个嵌入式实时操作系统内核,包含了任务调度、任务管理、时间管理、内存管理和任务间的通信与同步等基本功能。μC/OS—II进行任务调度时,会把当前任务的CPU寄存器存放到该任务堆栈中,然后再从另一个任务堆栈中恢复原来的工作寄存器,继续运行另一个任务。 根据各个控制功能和微控制器的资源结构对任务进行划分,共划分为7个应用任务,其划分过程如图7所示。无线串行通信采用中断接收方式,保证数据接收的实时性。 μC/OS一Ⅱ任务的建立包括定义任务堆栈、设定任务优先级、初始化该任务要求的系统硬件及实现具体的控制过程等4部分。现以任务1为例,介绍应用任务的建立过程。 在嵌入式实时操作系统环境下开发实时应用程序,可使程序的设计和扩展变得容易,而且无需大的改动即可增加新的功能。通过将应用程序分割成若干独立的任务模块,可大大简化应用程序的设计过程;而且能快速、可靠地对实时性要求苛刻的事件。通过有效的系统服务、嵌入式实时操作系统,能使系统资源得到更好的利用。 4 调试运行 在机器人控制系统起动时,μC/OS一Ⅱ对堆栈空间、各个控制寄存器和外设器件的硬件进行初始化,并设定当前各个功能部件的初始状态。 在实时机器人系统下,机器人正常启动后,系统实时监视机器人在比赛场上的运行状况,若出现某一动作或功能无效则给出出错信息。正常运行时实时显示机器人在比赛场上的坐标值和动作状态,如图8所示。 5 结语 根据智能机器人的控制要求,设计了基于无线通信的嵌入式机器人控制系统。在软件设计上移植了嵌入式实时操作系统μC/OS一Ⅱ。利用光电检测模块和超声波导航模块感知外部信息,实现了对智能机器人的控制。

    时间:2021-04-15 关键词: 无线通信 微控制器 机器人 控制系统 嵌入式

  • 基于S3C4480处理器和μC/OS-Ⅱ实现机器人控制系统的设计

    基于S3C4480处理器和μC/OS-Ⅱ实现机器人控制系统的设计

    移动机器人是一种能够感知外部环境,在有障碍物的环境中能够实现动态决策与规划,从而完成避障等多种功能的综合系统。机器人系统通常分为机构本体和控制系统两部分,控制系统的作用是根据用户的指令对机构本体进行操作和控制。随着机器人的智能化水平越来越高,控制器要有方便、灵活的操作方式,以及多种形式的控制方式和高度可靠性,还要有很高的实时性。 为了保证系统的实时性,简化控制系统软件的设计,有必要在控制系统引入嵌入式操作系统。本设计将嵌入式技术与机器人技术相结合,利用ARM作为硬件平台并移人μC/OS-Ⅱ嵌入式实时操作系统,开发了具有多线程、多任务管理的控制终端。嵌入式主控制器ARM是整个机器人控制系统的核心,主要完成环境感知、组织管理、总体任务分配。嵌入式主控器作为机器人的运算层,一方面作为控制上位机,可以通过串口与下位机伺服控制系统通信,从而完成机器人的运动控制;另一方面还提供了与遥控操作端或用户端的无线通信接口。本文设计的机器人控制系统可应用于日常生活、足球机器人以及其他科学探索领域。 1 系统组织架构与硬件设计 设计时考虑到机器人在体积、质量等方面的限制,以及要满足功耗低,实时性高,性能优越的特点,选择合适的软硬件结构及有效的控制模式是整个设计过程的关键。 1.1 系统总体架构 整个机器人控制系统由嵌入式主控制器、伺服控制模块、无线通信模块和传感检测模块组成。控制系统的总体架构如图1所示。 按功能划分,该控制系统分为上下两层。由实现任务管理、运动轨迹生成、定位的上层控制系统,以及完成机器人伺服控制、传感器信息采集的下层控制系统组成。上层控制系统是整个控制系统的核心控制层,它有两种控制实现方式:一种是独立运行模式,另一种是遥控或远程实时控制模式。独立运行模式有自己的运行参数,即上层控制系统根据激光雷达的信息传递到环境建模模块,产生环境地图并产生避障算法所需信息,控制器根据避障模块信息产生机器人本体速度和方向信息,传递到运动控制器。在运动控制底层程序定义了一系列程序,运动控制器通过解释上层控制系统传递过来的信息并执行相应程序,从而达到机器人控制的目的,实现实时避障。遥控器或远程实时控制模式是通过无线通信单元接收用户端或遥控端发出的命令,实现对机器人的实时控制。系统的控制实现方式如图2所示。 1.2 主控制模块 主控制模块采用SAMSUNG公司16/32位RISC处理器S3C4480作为控制器。S3C4480功耗低,有多种电源供电方式,有多种外部存储器访问,新的总线体系结构(SAMBA),速度可达132 MHz。主控模块使用Hynix公司的HY57V281620(SDRAM)以及SAM-SUNG公司的Nand-Flash芯片K9F2808U作为存储器。为了增大数据吞吐能力,选取了2片SDRAM构成32位地址宽度。S3C4480使用ARM7TDMI核,它满足μC/OS-Ⅱ正常运行的所有条件,设计时S3C4480移入μC/OS-Ⅱ操作系统,将加快处理器的应用和开发,而且还能提高系统的实时性。通过将系统的功能划分成按不同优先级调度的任务,实现对机器人的多任务控制,主控制模块中的路径规划任务采用栅格法。 1.3 激光雷达测距模块 激光雷达是一种工作在从红外线到紫外光谱段的雷达系统,相对于超声波、红外、摄像头等其他传感测距方法,激光雷达具有探测距离远,测量精度高,价格相对适中等优点。在本设计中使用德国施克公司的LMS291激光测量系统,基于飞行时间测量原理,180°扫描角度,可以设置三个保护区域,具有滤波功能,以消除障碍检测过程中激光雷达的测距噪声干扰。 LMS291激光雷达通过旋转镜面向各个方向发射脉冲激光,并由LMS291接收器接收反射光线。该激光雷达响应时间可固定为13 ms,发射角为几mrad的激光脉冲,通过测量发射脉冲与反射脉冲之间的时间延迟,并乘以光速,就可以测得障碍物的距离。时间测量通过图3所示的脉冲填充法求出。 如果计数值为N,则t=N△T=N/f,从而可得L=ct/2=cN/(2f),其中,f为时钟脉冲。 LMS291激光测量系统提供RS 232数据接口,本设计主控制器采用的是S3C44B0,由于它的LVTTL电路所定义的高、低电平信号为正逻辑,而RS 232标准采用负逻辑方式,两者间通信要进行电平转换,在设计时系统采用RS 232电平转换芯片MAX232ACPE实现串口的通信。 1.4 无线通信模块 无线通信模块利用从前端RF接收到的遥控端或用户端的信息通过串口发送到机器人,也可将机器人的信息通过无线通信模块发送出去。前端RF使用Chip-con公司生产的CC2420芯片,无线通信模块采用的微控制器为Microchip公司的PIC18LF4620。CC2420与PIC18LF4620都使用3.3 V作为工作电压,可以降低功耗,CC2420只需通过SI,SO,SCLK,CSn与PIC18LF4620的SPI接口进行连接。本设计中使用PIC18LF4620的RC6,RC7引脚作为RS 232的数据发送端与数据接收端。CC2420是一款较为通用的符合IEEE802.15.4的2.4 GHz ZigBee收发芯片,该芯片在集成了PHY层和部分MAC层的同时,还提供了许多硬件支持。 1.5 伺服控制模块 运动控制模块通过RS 232与主控制模块连接,主控制模块通过串行总线将期望速度、方向信息传送至运动控制器,运动控制器将信息处理后作为运动控制算法的输入量,运动控制算法得到以PWM形式表示的电机控制信息。为判断电机转速及运转方向,安装在电机上的光电编码器提供相位相差90°的两个通道的光码脉冲输出,光电编码器产生的两脉冲送入DSP的正交编码脉冲单元的QEP1,QEP2引脚,通过DSP的比较单元CAP1,CAP2捕捉,然后经译码单元产生内部4倍频后的脉冲信号CLK以及转向信号,将脉冲信号送入选定的计数器进行计数,计数方向由转向信号决定,通过读取选定通用定时器的计数值、脉冲数、计数方向可得到电机的转速、行程及方向为伺服控制提供反馈输入。没计使用TI公司的TMS320F2812作为控制驱动模块的控制器,该芯片产生的PWM信号并不能够直接驱动电机的执行,设计时使用TI公司的直流电机驱动芯片SN7S4410将PWM转换成可驱动电机的驱动信号。图4为移动机器人运动控制系统的原理图。 图4中电流传感器为霍尔元件电流传感器,将采集到的电机电流信息送入A/D转换接口,从而整个运动控制系统形成双闭环控制系统。运动控制器中运动控制算法采用PID算法,设定允许的误差为e0,设定如下关系: 当| e(k)|≤e0时,控制器不起作用; 当| e(k)|>e0时,可以得到控制器的输出为: PWM信号的宽度由时间管理器中定时器的周期寄存器和与该定时器相关的比较寄存器决定,经过PID处理后的控制器输出u(k)为脉冲的占空比,然后写入选定定时器的比较寄存器,比较寄存器与周期寄存器的比值即为PWM波形的占空比,从而实现电机转速的控制。 2 软件设计 该机器人控制系统的软件设计包括主控制模块、DSP运动控制器算法程序、PIC18LF4620的程序设计。PIC18LF4620的程序设计在这里不做介绍。 2.1 主控制模块程序设计 主控制模块软件设计是在μC/OS-Ⅱ平台上设计各硬件的驱动程序,创建和启动各项任务,创建信号量、消息邮箱、消息队列完成各任务间的通信。 针对S3C4480的硬件资源和编译器特性,移植时要对μC/OS一Ⅱ的三个源文件做修改: (1)OS_CPU.H头文件与编译器相关的数据类型重新修改; (2)OS_CPU_ A.S文件中修改处理器相关的4个汇编函数; (3)OS_ CPU.C文件中编写初始化任务的堆栈函数。 μC/OS-Ⅱ中程序是从main()函数开始执行,程序启动后跳转至主程序运行,调用ARMInit()初始化ARM系统,包括建立相关参数和变量,配置ARM处理器中断端口、设置中断并初始化各器件,然后调用OSInit()初始化μC/OS-Ⅱ操作系统,将操作系统的初始化与硬件的初始化分开来使得思路更清晰,便于调试。由于各任务之间要通过创建信号量、消息邮箱、消息队列来完成通信,该操作通过调用OSSemCreate(),OSMboxCreate(),OSQCreate()函数来完成,然后调用OSTaskCreate(void(*task)(void*pd),void*pda-ta,OS_STK*ptos,INT8U prio)函数创建各任务完成系统控制。最后调用函数OSStlart(),μC/OS-Ⅱ开始运行,执行任务。本系统设计时主要完成的任务有无线通信任务、命令解释任务、激光雷达信息处理任务。 2.2 伺服控制模块程序设计 伺服控制模块利用高速的DSP运动控制器与反馈信号组成闭环控制系统,DSP发送PWM波与方向信号控制直流电机的转速,通过速度反馈,DSP可实时读取当前速度,利用DSP中的控制程序根据速度读数控制PWM的占空比,从而实现闭环控制。主程序流程图如图5所示。 在DSP的事件管理器中,将其中一个定时器设定一个中断周期,每当定时器产生中断时,调用中断处理子程序获得电机的反馈速度。 3 结 语 根据新型激光雷达跟踪测量理论,开发研制了基于μC/OS-Ⅱ的机器人实时控制系统。该控制系统已成功用于实验室自主研制开发的足球机器人。性能测试表明,该机器人控制系统能够快速及时跟踪定位目标,并且能够通过无线通信模块与遥控端进行通信,完成指定操作指令。该控制系统采用的控制决策算法为PID,今后将致力于研究采用更为先进的算法。

    时间:2021-04-15 关键词: 机器人 处理器 控制系统 S3C4480 嵌入式

  • 基于RTX51嵌入式实时操作系统实现PBJ-1嵌入式控制系统的设计

    基于RTX51嵌入式实时操作系统实现PBJ-1嵌入式控制系统的设计

    排爆机器人(EOD robot)是一种遥操作地面移动机器人,操作机主体一般是由一个机械手和一个可移动平台组成,主要用于拆除疑似爆炸物品,以减少作业现场人员伤亡,是军警部门必须装备的设施。目前国际上主要流行美国Remotec公司的Andros系列排爆机器人、法国Cybernetics公司研制的TRS200中型排爆机器人等。但是国外的排爆机器人价格过高,出现故障后维修特别不方便。因此国家863专家组已经将高性能排爆机器人的研发及国产化列入了重点支持的课题。 由于种种原因,目前的排爆机器人很多只采用PLC实现点动控制,功能有限且操作性较差。研究高性能控制器成为排爆、消防等各种遥操作地面移动机器人的共同课题。利用先进的嵌入式系统技术可以较好地解决这类问题。 本文概述了上海交通大学机器人研究所研制的新型遥控移动式排爆机器人PBJ-1的嵌入式控制系统(如图1所示),主要叙述基于RTX51嵌入式实时操作系统(RTOS)开发排爆机器人PBJ-1嵌入式控制系统固件的情况。利用嵌入式系统技术开发适合排爆等各类遥控地面移动机器人使用的嵌入式控制系统能够解决上述种种矛盾。 1 PBJ-1功能介绍 目前国际上比较流行的排爆机器人,都需要由经过专门培训的操作人员通过操作一组分别控制机械臂上各个关节驱动电机的按键控制,操作很不方便。操作人员需要根据现场的状况,判断出需要机械手执行的动作,再经过大脑的转换,手工控制机械臂各个关节顺序动作,使机械手爪拟合出一条空间轨迹以完成作业,大大降低了工作效率。这类排爆机器人一般都需要大量的摄像机,随时显示爆炸物相对机械手爪的位置,以便操作人员决定下一步动作。 新型排爆机器人PBJ-1为了使操作人员操作更加方便,在嵌入式控制器中嵌入了机器人运动学运算,能够实现机械臂的自主联动控制。操作者只要通过观看控制箱上面的显示器,直接操纵控制器命令机器人水平前、后或垂直上、下运动,机械臂可以实时进行机器人运动学运算和分解运动控制,控制机械手爪完成空间的直线拟合运动。这种操作方式略过了操作人员在大脑中进行动作转换的步骤,大大方便了排爆这一高危险性作业现场的作业。 为了方便现场操作,在其嵌入式控制器系统中还加入了机器人的一些半自主动作功能。例如当机器人完成作业后机械臂可以自动折叠归位;机械臂可以自动进入作业最佳操作姿态;当操作不当时,控制器可以自主取消操作人员发送的命令,以避免机械臂与车体之间的干涉碰撞等。 为防止爆炸物被恐怖分子遥控引爆,爆炸物品的拆除现场一般都要做电磁屏蔽处理,不能使用无线遥控型机器人,只能采用有缆遥操作移动机器人。由于爆炸物品的拆除作业危险性很大,所以对排爆机器人的有线通讯系统的可靠性要求很高。PBJ-1是通过RS-485协议实现相互之间远距离、高速、高可靠性通讯。 操作人员可以通过上位控制箱里的液晶显示器监视作业现场的状态;通过操作各种动作按钮及操纵杆控制机器人完成各种作业。控制箱有六组4位数显LED,分别显示机器人型号(PBJ1)、通讯状态(run或Err)、大小臂关节角、机器人及车体运动速度、机器人电源实时电压。这些都保证了操作人员可以全面了解机器人具体运行状态,顺利完成作业。 2 PBJ-1嵌入式控制系统设计 遥操作机器人由于工作于非结构环境中,实际期望运动轨迹未知,所以需要根据操作者的实时操作情况进行动态实时的目标位置生成及轨迹规划,并完成相应的运动控制。 由于这台新型排爆机器人功能增强,下位机微控制器需要实时完成机器人运动学及分解运动控制解算,并驱动各个接口器件实时控制机器人运动,还要保证上、下位机之间的正常通讯连接,及时、迅速、高可靠性地响应上位机经过处理的数据并且上传机器人本体的各种状态信息,负担很重。因此如何合理地进行系统固件程序设计成为决定该机器人实际运行效果的关键。 要实现上面所述的功能,微控制器的应用必须能够同时进行多任务或工作的执行。对此,传统的基于单任务顺序循环机制的程序设计方法难以胜任,如图2所示。因此,需要找到一种新的合适的控制器设计方法。由于微控制器系统功能通常可以分解为多个相对独立的模块,将这些模块理解为任务,从而可以引入多任务机制进行管理。引入多任务机制后,可以有效地改善程序结构,满足应用系统复杂的定时要求。在多任务机制下,CPU的运行时间被划分成许多小的时间片,由某种调度算法按不同的优先级别分配给不同的任务。多个任务分别在各自的时间片内访问CPU,从而产生了微观上轮流运行、宏观上并行运行的多任务效果,如图3所示。 在多任务嵌入式系统中,合理的任务调度必不可少。单纯通过提高处理器速度无法达到目的,这样就要求嵌入式系统的软件必须具有多任务调度能力。因此必须基于多任务实时操作系统进行嵌入式系统固件开发。 实时操作系统的首要任务是调度一切可利用的资源完成实时控制任务;其次才着眼于提高计算机系统的使用效率。其重要特点是通过任务调度对重要事件在规定的时间内作出正确的响应。实时操作系统既能保证对外界的信息以足够快的速度进行相应处理,又能并行运行多个任务,具有实时性和并行性的特点,因此能很好地完成对多个信息的实时测量、处理并进行相应的多个实时控制。 PBJ-1上下位机嵌入式控制器都是以业界经典51内核增强型单片机AT89C55WD为核心;基于嵌入式实时操作系统RTX51Tiny开发固件程序。通过提供必不可少的系统服务,如信号量管理、消息队列、延时等,实时内核使CPU的利用更为有效。 2.1 RTX51简介 RTX51是德国Keil公司开发的一种应用于MCS51系列单片机功能强大的、可用于目前世界上所有由Intel 8051标准内核派生出的350多种增强微控制器的实时操作系统。使用RTX51可实现程序按时间片轮转和抢先的任务调度,并且支持事件和信号驱动。 RTX51有两个版本:RTX51Full和RTX51Tiny。RTX51Full允许4个优先权任务的循环和切换,并且能够并行地利用中断功能。RTX51Full可以从内存池中申请和释放内存,同时可以强制一个任务停止执行等待一个中断,或者是其它中断传来的信号量或者消息。RTX51Tiny短小精悍,是RTX51Full的一个子集,只占用900字节ROM、7字节DATA型及3倍于任务数量的IDATA型RAM空间,可以很容易地运行在没有扩展外部存储器的单片机系统上。使用RTX51Tiny的程序可以访问外部存储器,允许循环任务切换,并且支持信号传递,还能并行地利用中断功能。RTX51Tiny 允许“准并行”同时执行几个任务。每一个任务在预先定义好的时间片内得以执行。时间到使正在执行的任务挂起,并使另一个任务开始执行。最新的RTX51Tiny2.0重新调整了内核结构,使用更灵活、执行更快、占用的资源更少,另外还增加了几个新的特性。 RTX51Tiny内核完全集成在Keil C51编译器中,以系统函数调用的方式运行,因此可以很容易地使用Keil C51语言编写和编译一个多任务程序,并嵌入到实际应用系统中。内核主要提供以下函数供应用程序引用,见表1。 RTX51Tiny的用户任务具有表2所列的几个状态,它们如图4所示进行切换。 为了保证任务在执行顺序上的协调,必须采用同步机制。内核用以下事件进行任务间的通信和同步: (1)SIGNAL:用于任务之间通讯的位,可以用系统函数进行置位或清除。如果一个任务调用了os_wait函数等待SIGNAL而SIGNAL未置位,则该任务被挂起直到SIGNAL置位,才返回到READY状态,并可被再次执行。 (2)TIMEOUT:由os_wait函数开始的时间延时,其持续时间可由定时节拍数确定。带有TIMEOUT值调用os_wait函数的任务将被挂起,直到延时结束,才返回到READY状态,并可被再次执行。 (3)INTERVAL:由os_wait函数开始的时间间隔,其持续时间可由定时节拍数确定。带有INTERVAL值调用os_wait函数的任务将被挂起,直到间隔时间结束,才返回到READY状态,并可被再次执行。与TIMEOUT不同的是,任务的节拍计数器不复位。 RTX51Tiny采用微控制器(51)内部定时器T0来产生定时节拍,各任务只在各自分配的定时节拍数(时间片)内执行。当时间片用完后,切换至下一任务运行,因此各任务是并发执行的。RTX51Tiny调度程序定义这些任务按照下面的规则运行: (1)如果出现以下情况,当前运行任务中断: ①任务调用os_wait函数并且指定事件没有发生。 ②任务运行时间超过定义的时间片轮转超时时间。 (2)如果出现以下情况,则开始另一个任务: ①没有其他的任务运行。 ②将要开始的任务处READY或TIME-OUT状态。 图4 RTX51任务切换图 2.2 嵌入式操作系统的特殊问题处理 在RTX51 下进行多任务编程与传统的顺序循环单任务编程相比有以下几个值得注意的不同点: (1)多任务编程CPU 是轮流执行每个任务,可以将每个任务设计成死循环的模式,不断重复地进行数据计算或者访问硬件,不会影响别的任务的执行。当一个任务的数据计算完成后,可以通过os_wait 函数将CPU 交出执行别的任务。而单任务模式却独占了所有的CPU 资源,时常要担心是否执行时间太长而不能及时响应外部的异步事件。 (2)多任务编程有一个缺点,即资源冲突和重入问题。所谓资源冲突就是任务A在访问某个资源时,恰好发生了任务切换,任务B也访问这个资源,且改变了它的状态,这样当再次执行任务A时就可能发生冲突或带来不确定性。而所谓重入是指假设任务A在运行某个函数,发生任务切换后,任务B也运行这个函数,这样就会破坏任务A执行这个函数的现场,从而可能导致任务A执行函数时结果不正确。这种问题尤其容易出现在串行接口器件的操作中,例如串口、串行的A/D、D/A器件等。 在本嵌入式机器人控制器开发过程中,采用这种处理办法:将对每个独立的硬件(例如串行通讯)进行操作的驱动程序段放在一个任务中,也就是说要想对某个设备资源进行操作,只有依靠执行相应的任务来实现。这样无论何时切换任务,都不会对任何独立的“外设”造成影响。这样做彻底避免了资源冲突和重入问题而且利于系统维护与升级。各个任务之间要实现通信,可以调用os_send_signal函数及全局变量。 在嵌入式控制系统开发中借鉴了Windows消息驱动的思想,使部分不需要始终执行的任务处于等待信号状态,这样它们不会占用资源。只有当需要进行相应处理时通过需要它们运行的任务发送给它们SIGNAL,它们才会进入RUNNING任务队列中,得到执行。相关的系统函数为: os_wait (K_SIG, 0, 0); //等待信号 os_send_signal (Task_ID);//向Task_ID任务发送一个信号。 这样的处理,可以使微控制器在有限的资源下集中精力处理好耗时且重要的事情。 2.3 排爆机器人嵌入式控制系统固件开发 上位机嵌入式控制器固件结构如图5所示。根据控制器要完成作业的独立性分割成几个任务片。图5表示了各任务之间的关系、与外设连接关系。整个系统被区分成三个层次。 减少上、下位机之间数据交换的次数及数据量有利于减少下位控制器中断机器人的运动控制转入通讯协议处理的几率,可以提高运动控制的质量。所以PBJ-1的通讯部分固件程序设计没有采用传统的定时向下位机传送输入设备的状态这种高通讯负担的方法,而是基于消息驱动的思想。通讯任务依靠输入设备检测任务执行的结果来决定是否激活、进入消息队列以实现控制器之间的通讯。这样只有当操作者实际改变了输入设备的状态,上位机才向下位机发送相应的信息。利用消息驱动思想来开发通讯程序十分方便、可靠,并且大大减少了通讯线路的负担。为了保证数据传输的高可靠性,每次数据交换都先经过握手以确保无误。下位机嵌入式控制器固件结构如图6所示。 图5 上位机嵌入式控制系统固件结构 图6 下位机嵌入式控制系统固件结构 由于有些任务不需要一直执行,例如机器人需要响应上位机的指令完成继电器的切换等,也将利用os_wait函数处理,使它们平时不进入RUNNING任务队列中,减少资源浪费。在下位机串口中断中利用isr_send_signal向该任务发送信号激活该任务,使得该要求得到执行。具体调用方法如下: isr_send_signal(Task_ID); //从一个中断发送一个信号到Task_ID任务。 通过Windows消息驱动的思想和RTX51 Tiny实时操作系统的配合,合理分配了系统的资源。下位机控制器“集中精力” 完成机器人运动学解算及分解运动控制运算这些相当耗时的任务,实时控制机械臂运动。 在微控制器固件开发中嵌入操作系统还大大提高了系统的稳定性。即使某个外设或任务出现故障,与之无关的任务一般不会受到影响,不像传统的顺序循环机制的程序设计方法中如果某一环节出现问题会立刻造成整个系统的崩溃。 实际整个系统的上下位机微控制器都是仅仅利用运行于22.1184MHz频率下的AT89C55WD 就很好地达到了预期目标。该系统在随意频繁地分别开关上下位机电源、受到较强电磁干扰、大功率电机频繁启动、制动造成系统电源电压波动较大等苛刻的运行测试中均表现出了非常高的稳定性与数据传输准确性。整个系统在运行中即使出现了通讯失败(人为切断通讯线路或部分电源),当故障排除后,上、下位机可以迅速自动恢复正常的通讯状态没有出现误动作。 为新型排爆机器人PBJ-1先后开发了两套控制器固件程序,采用完全一样的硬件平台。一套是基于传统的顺序循环机制,开始效果不理想,后来借鉴消息驱动思想改进程序架构才满足了要求。开发过程中花费了不少时间来调试。另一套就是本文所述的基于RTX51 Tiny嵌入式实时操作系统开发的,实际运行效果相当好,但是花费的时间很少,而且很容易增加新的功能。 实践表明, 在系统复杂、对实时性和精度要求比较严格,并且需要并行处理的任务较多的运动控制系统中,使用RTX51Tiny是一个较好的解决办法。此外,使用RTX51Tiny实时操作系统,会加快嵌入式控制系统的开发速度,降低软件编写的复杂度,提高产品的开发效率。维护和功能扩展都非常方便。

    时间:2021-04-15 关键词: 操作系统 控制系统 上位机 下位机 嵌入式

  • 嵌入式技术面试时的

    编排 | strongerHuang 微信公众号 | 嵌入式专栏 找工作也是一门技能,有的人很快就找到自己喜欢的工作,有的人找了很久也没找到合适的工作。 下面给大家分享几点找工作过程中存在的“潜规则”内容。 嵌入式专栏 1 面试的本质不是考试,而是告诉面试官你会做什么 经验不够的小伙伴特别容易犯的一个错误,不清楚面试官到底想问什么,其实整个面试中面试官并没有想难倒你的意思,只是想通过提问的方式来知道你会什么。 比如STM32单片机的代码从哪里开始执行? 没入门的说从main函数开始,大佬会从上电启动开始。 围绕着一个话题只要你能在某一方面回答得很深入很透彻,基本上面上的可能性会大大提高; 如果当你听到这个话题时,感觉不知道如何回答,或者说感觉很简单,几句话就说完了,那么基本上你很难面上,因为你的知识储备不够,说不出来关于技术相关的内容。 嵌入式专栏 2 薪水要求高一点录取概率就大一点 我曾经面试一个嵌入式工程师,各种精通C语言,精通stm32等等等,然后我就问他你期望的薪水是多少呢? 他的回答是4K,先不说他简历上写的是真是假,但是有一点很明确,如果你在市场上去肉,别人都是卖30元一斤,而路边有个摆摊的只买10元一斤,那么你们会去买么? 另外,我想告诉大家的是,一般来说对于一家正规的技术型公司,真的不在乎多给工资,最重要的是人才; 或者我们换位思考一下,假设你是项目经理,你来招人帮你干事情,你会节约一点工资,去招技术差的,帮老板节约成本,自己慢慢来带人么,给自己找一大堆事情么? 而且,从心里角度来说,人们一般只会集中精力关注一个点,如果你的期望薪水高一点,那么他在考虑是否录取你时考虑的就是薪水问题,或者就是考虑你的技术问题,但是工资是老板发,技术是自己使用,所以从某方面来说如果有几个人与你技术差不多,但是从潜意识里,就会因为你的期望工资高而觉得你的技术好一点,最后录取你,这就像假设我们要求买一件羽绒衣服,同时看上了两件,一件800元,另一件1000元,我相信大多数人都会认为1000元这件质量好点,如果再加上买这件衣服的钱不是你出,那么你会选择那件呢? 最后提醒大家,期望薪水高一点并不是说无边界,那么到底多少合适呢? 可以从两个方面考虑一是工作年限,一般来说 初入行:8K到12K 1年到2年:10K到15K 3年到5年:13K到22K 5年以上:18K以上 当然,不同的地区有点差别,但差别应该不大 另一个方面是参考大公司的工资标准,打开招聘信息,查看大公司的招聘信息,一般来说都是给的一个区间值,你可以把区间值最大的那个值乘80%作为你的期望薪资的参考值。 嵌入式专栏 3 简历上罗列了很多技能的很难面上 这里我就简单说一下为什么,简历上罗列很多技能可以反映如下几个问题: 1.不清楚对应岗位工程师的核心技术是什么,给面试官的第一感觉就是:外行; 2.罗列的技能越多面试官问的方向就越多,你很难每一样都精通,最后会成为问的每一个技能你都只会点皮毛; 3.完全暴露出你没有任何工作经验,我见过有的把熟练使用办公软件、外语等级、计算机二级什么的都写在上面; 那面试技能这里到底应该怎样写呢?从个人经验和及面试反馈来看,个人建议如下: 1.写两个精通或者深入研究的技术点,如:熟练某款MCU,有多个某平台项目实战等; 2.写三个熟练应用,这个最好写常用的框架; 3.写三个了解并能简单使用的技能; 总之技能这一栏要在潜意识里引导面试官去问你你已经准备好的话题; 嵌入式专栏 4 笔试题做不来影响并不大,关键是要体现出你在认真对待 首先大家要明白一点的就是,在你认真对待笔试题的情况下,笔试题做得好与不好、正确与错误其实影响并不大,注意我这里说的是认真对待的情况下。 这一点估计没有多年工作经验或没有带过团队开发的人很难理解,其实大部分面试官招人重点看如下3点: 1.是否聊得来 2.主观能动性 3.逻辑思维注意: 我这里并不是没有任何基础的人具备上述三点就能面试,而是指已经基本会编程的情况下满足上述三点就很容易面试上; 嵌入式专栏 5 对自己要自信,面试官只是比你早到公司几个月而已 首先强调一点,对自己自信,并不是不尊重面试官; 这里主要表达的核心思想是,在整个面试中你要让人感到你和面试官是平等的,面试官在挑选你,你也在挑选公司; 嵌入式专栏 6 不写假简历,但必须扬长避短 其实这就是里我们常常说的如何包装简历,老老实实总是会吃亏的;诚实守信、不写假简历这是最基本的职业道德; 但是,扬长避短,适当的夸张一下自己的能力是很有必要的,这就如同一家公司在对外宣传自己的产品是一个道理; 好了,这一点我也不好在公开场合长篇大论,先具体、实际的了解情况,然后在根据实际情况包装简历; 嵌入式专栏 7 老板是人精,谈理想时,别虚伪,要坦诚 这里一般是面试的最后一个环节,你一定要让人感觉你是一个真诚、实干的技术员,千万不能让人感觉你是一个浮躁、眼高手低的人; 嵌入式专栏 8 不打没有把握的仗,必须充分准备 这是面试是否顺利非常非常重要的一个环节,也是很多浮躁的最容易犯的错误。 它的核心思想其实就是:面试必须系统化的认真的准备!重要的事说3遍。 面试必须系统化的认真的准备! 面试必须系统化的认真的准备! 面试必须系统化的认真的准备! 怎样系统化的认真的准备呢? 以下7个步骤是在我实际经验中总结出来的,提供给大家参考 1.最基本条件,概念上一定要懂的一些知识和技能。 2.系统化的知识点,对知识点系统化的梳理和系统化的看面试题,并且强行将知识点划分为3类,精通、熟练、了解,千万别东看一下西弄一下,最后会让你浮躁的心直接在面试中崩溃掉。 3.写简历,简历中必须在醒目的位置体现出技术点(hr就认几个关键词,决定是否通知你面试),如果投递出去的简历面试邀请率低于60%,肯定是简历写得有问题,最好找专业人士帮你看看简历。 4.模拟面试(三次),提高面试通过率。面试的成本其实挺高的,好不容易收到面试通知,千辛万苦赶车找路来。 到面试的地方,如果犯了常规的低级错误,其实很不划算,早一天找到工作就早一天赚到钱(程序员的工资平均在500左右一天) 5.实战学习面试(5次实战面试),出去面试,但目的不是为了面上,而是为了让你放松心情,不紧张,习惯与面试官进行技术沟通(其实很多人在这个阶段就会拿到offer) 面试完后马上回忆并记录面试中问了那些问题,自己大体是怎么回答的,然后与专业人士讨论这样回答是否恰当,必须保证下次遇到类似问题会回答得更好,否则面试很多次也不会有提高,因为在你回答得不好或者明显错误的地方面试官并不会给你指出来,这就是为什么,很多人出去面试说自己回答得很好,然后就让他等通知,然后。。。就没有然后了 6.正式面试,同样,每面试一次后马上与专业人沟通,最后你会发现每个面试官问的问题都大同小异,你会觉得面试so easy!当你拿到多个offer后,然后从中选一个,那感觉简直就像走上了人生巅峰! 7.通过试用期,虽然都说面试造飞机、工作拧螺丝,但是估计对于刚入行的人来说,还是有很多的技术没有接触或者不懂,这时不懂的一定要多问,业务上的多问同事,技术上的要先自己研究一下,如果还是不懂就要多请教专业的人,实在不懂再问同事,总而言之言而总之一定要积极主动! 嵌入式专栏 9 选择大于努力的前提是先足够的努力才会有选择 很多人都在倡导选择大于努力,可更重要的往往更容易被忽略,那就是:只有足够的努力才会有选择。 这就形成了一个死循环,或者用我们程序员术语叫做:死锁,选择一家好的公司上班,对自己的发展前景很重要,但前提是你能拿到好公司的offer! 嵌入式专栏 10 人生苦短,绝不将就,必须去自己真心想去的公司 我遇到过很多人,在跟他们聊天时,他们都有类似的心理:一点都不想在这里上班,但是工作又不好找,只好暂时做着,这一做就是好几年;每天带着一种不愿意的心情上班,是何种的煎熬,而且我相信也很难作出卓越的成绩,最多勉强把工作完成,这样做下去意义又何在!

    时间:2021-04-12 关键词: 面试 嵌入式

  • 海思赛道|全国大学生嵌入式芯片与系统设计竞赛

    海思赛道|全国大学生嵌入式芯片与系统设计竞赛

    上海海思(以下简称“海思”)为加强全国高校学生在嵌入式领域的创新设计与工程实践能力,培养具有创新思维、解决复杂工程问题的复合型人才。 近日,海思携手大赛组委会南京集成电路大学,赴东南大学的九龙湖和无锡国际校区,进行2021年全国大学生嵌入式芯片与系统设计竞赛(以下简称“嵌入式大赛”)海思赛道的预热宣传,获得了东南大学师生的热烈欢迎。本赛道要求参赛队基于海思提供的HiSpark开发套件,设计并实现一个有创意的嵌入式系统作品。同时,海思免费提供华为云训练资源,为开发者提供AI全栈的开发环境。海思赛道预热宣传中,东南大学电子工程学院副院长徐申老师现场致辞,东南大学校赛负责人凌明老师进行嵌入式技术分享及校赛要求,南京集成电路大学王涛老师介绍了嵌入式大赛总体情况。 徐申老师、凌明老师及王涛老师进行宣讲 上海海思平台与解决方案Marketing部部长赵秋静在宣讲会上对海思公司基本情况、业务情况、海思赛道开发套件、选题指南及要求以及相应的培训、技术支持,获奖福利等方面进行介绍。欢迎东南大学的同学们踊跃报名海思赛道,充分发挥同学们的创意和想象,设计并实现一个有创意的嵌入式系统作品。会后学生与老师、海思专家进行进一步的交流互动。 赵秋静及海思专家与现场学生互动 【关于海思赛道比赛套件】Taurus & Pegasus AI计算机视觉基础开发套件 具备1.0 TOPS NPU和强大的图像处理引擎Taurus & Pegasus AI计算机视觉基础开发套件,是基于海思Hi3516DV300和Hi3861V100芯片设计。Taurus & Pegasus套件都可通过NFC扩展板碰一碰实现手机和单板互联,更简单的实现人机交互功能;并配置OpenOCD JTAG调试工具,方便开发者快速调试。Taurus套件是AI视觉处理单元,可以实现图像编解码显示的基础功能,如图像采集、多路编码、音视频存储传输、音视频显示回放等应用场景;可以通过海思SVP(Smart Vision Platform)简化并加速视觉神经网络算法和应用的开发,实现AI计算机视觉基础功能,如人脸检测识别、车牌识别等应用场景。Taurus套件核心亮点如下: 1)双核ARM Cortex-A7@ 900MHz 2)支持NEON加速,集成FPU处理单元 3)集成1.0 TOPS神经网络&智能计算加速引擎 4)最大支持500万像素摄像头 5)丰富的图像处理引擎(ISP、3D去噪、图形增强等) Taurus AI计算机视觉套件 Pegasus套件是WiFi-IoT控制和执行单元,搭配多种丰富的功能板,可扩展更多的传感器,从而达到AI计算机视觉与外设联动。Pegasus套件核心亮点如下: 1)高性能32bit微处理器,最大工作频率160MHz 2)支持2.4GHz, 802.11b/g/n 3)支持256节点Mesh组网 4)支持 CoAP/MQTT/HTTP/JSON 基础组件 Pegasus WiFi-IoT套件 同时,海思免费提供华为云训练资源,为开发者提供AI全栈学习和开发环境。 【关于海思赛道选题】海思赛道采用半开放式命题,海思将提供5个选题方向并提供相应的指导和技术支持: 1)模拟工业领域检测机器人 2)视觉感知的宠物喂食机器人 3)安全智能门锁 4)专注力辅助训练装备 5)数字望远镜海思携手东南大学积极筹备嵌入式暨智能互联大赛,为服务国家嵌入式芯片与相关应用产业的发展大局,加强全国高校学生在相关领域的创新设计与工程实践能力,深化产教融合,培养具有创新思维、团队合作精神、解决复杂工程问题能力等新工科要求的优秀人才。 【关于嵌入式大赛】 全国大学生嵌入式芯片与系统设计竞赛暨全国大学生智能互联创新大赛,2018年由教育部电子信息教指委主办,现在由中国电子学会主办,国内外知名厂商协办和支持。大赛组委会由中国电子学会、电子信息教指委老师、东南大学、各分赛区承办单位和参与厂商组成。全国大学生嵌入式大赛在促进在校大学生创新人才成长、提升工程实践能力等方面发挥了积极作用,在广大高校和行业上产生了广泛而良好的影响。 2020年参赛规模:303所学校的2009支队伍,5019个人报名参赛,具有广泛的影响力。2021年全国大学生嵌入式暨智能互联大赛将于4月份启动报名,并于10月下旬在南京集成电路大学完成全国总决赛。

    时间:2021-04-05 关键词: 芯片 嵌入式

  • 嵌入式相关开源项目、库、资料------持续更新中

    1、OS RT-Thread:一款小而美的物联网操作系统。 freertos:一个轻量级的操作系统。 mbed-os :ARM自己打造、主打IoT的一整套软件解决方案 。 LuatOS :LuatOS是运行在嵌入式硬件的实时操作系统,只需要少量内存的flash空间就能运行,用户编写lua代码就可完成各种功能。 DJYOS:都江堰操作系统。 lmosem :一个完全从第一行引导代码开始编写,基于ARM平台,支持多进程、多CPU、内存管理、文件与设备管理的全32位操作系统内核。 更多资源敬请期待...... cJSON:一个基于C语言的轻量级的JSON解析库。 MultiTimer :一个软件定时器扩展模块。 SmartTimer :一个轻量级的基于STM32的定时器调度器 。 EasyLogger:一款超轻量级、高性能的 C/C++ 日志库。 SFUD:一款开源的串行 SPI Flash 通用驱动库。 PLOOC:受保护的低开销面向对象编程。 mqttclient:一个省资源、高稳定的MQTT客户端。 letter-shell:一个功能强大的嵌入式shell。 lwrb:一个轻量级通用环缓冲区管理器库。 Unity:一个轻量级的、适合嵌入式的测试框架。 CuTest :一款微小的C语言单元测试框, 全部代码加起来不到一千行。 googletest:谷歌C++测试框架。 libu:一个C语言写的多平台工具库。 SQLite :一个开源的嵌入式关系数据库。 Linux Lab :Linux 内核实验室,基于 Docker/Qemu 的极速 Linux 内核学习、开发和测试环境。 nr_micro_shell :shell for MCU,单片机命令行交互。 mbedtls :一个开源、便携,易于使用,可读的和灵活的SSL库。 inih:C 语言编写的 INI 文件解析器。 MS-RTOS:Micro Safe RTOS 。 eepromfs:基于EEPROM的简易类文件的数据读写库 。 mult_timer :一个Linux下的超级精简的多重定时器 。 更多资源敬请期待...... GuiLite:大道至简 - 5千行/仅头文件/全平台GUI库 。 ToughGFX:一个C++编写的GUI软件框架 。 littlevGL :一个免费的开源图形库。 MonoGUI :一个黑白图形用户接口系统 。 QT:跨平台的应用程序和用户界面框架。 AWTK:是 ZLG 倾心打造的一套基于 C 语言开发的 GUI 框架 。 4、物联网、智能家居 Domoticz :一个开源的智能家居系统 。 RT-Thread IoT SDK :基于RT-Thread IOT开发板的各类例程。 更多资源敬请期待...... qt_2019_ncov:基于Qt/C++实现的新冠肺炎疫情监控平台。 DAPLink/CMSIS DAP:一个调试器, 集成下载、调试和USB虚拟串口。 DoST:Linux 下开发 STM32 。 MiniQ :一个迷你四轴飞行器。 Avem:一个轻量级无人机飞控。 串口ISP程序:一个stm32串口ISP程序。 DSView:一个跨平台的逻辑分析仪。 Arduino :开源电子原型平台。 更多资源敬请期待...... 100ask download:百文网资料下载中心。 fire download:野火资料下载中心。 野火:野火电子论坛。 ST:ST中文社区。 Linux:Linux内核官网。 Buildroot:buildroot源码。 Ubuntu:Ubuntu官网。 清华镜像站:清华大学开源软件镜像站。 u-boot:u-boot源码下载页面。 宅学部落:一个Linux、编程语言、内核、驱动开发学习网站。 GNU:GNU官网。 PyQt5:PyQt5教程。 git手册:git学习手册。 电子世家:一个电子类导航网站。 芯路恒电子:小梅哥博客、FPGA论坛。 micropython:micropython中文网。 电堂科技:STM32相关。 KST-51 :《手把手教你学51单片机》 。 digoboy:地瓜派视频网。 open-c-book :《C语言编程透视》。 open-shell-book:《Shell 编程范例》 。 kerneltravel:Linux内核之旅。 bookstack:书栈网。 MobaXterm:一个好用的终端软件。 更多资源敬请期待...... 免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!

    时间:2021-04-05 关键词: 开源项目 嵌入式

  • 嵌入式开发中为什么很少用设计模式?

    作者 | 李肖遥 来源 | 技术让梦想更伟大 刚开始工作的两年,我做项目写代码不会考虑代码扩展、移植、模块化等,导致项目有新增功能、或修改的时候不知如何下手。今天分享一篇肖遥整理的关于设计模式的文章,希望对大家有帮助。 工作有些年了,每每看到一些朋友会问,设计模式需要学吗?好像做嵌入式的从没遇到过需要用设计模式的,所以一直没系统学习,但是我也知道这个很重要,久而久之,到头来还是没学。 这里我说一下自己的看法和思考,来看看一些问题。 嵌入式专栏 1 什么是设计模式? 设计模式是代表了开发人员不断积累的最佳的实践,是软件开发人员在软件开发过程中面临的一般问题的最优解决方案。 也就是说,经过了不断的发展,不同的问题或者方案有对应的一套法子,而这个法子被总结成了这么几十种通用模式,我们如果遇到了就对应着去套用就可以了。 当然那几大开发原则和二十几种设计模式大家还是随便去找都可以找到说明的,笔者就不多说了(我也只用到了其中几种),大家自行学习为好。 嵌入式专栏 2 开发中为什么很少用设计模式? 在平时项目开发中,我们很少使用设计模式,我感觉这个现象还是很正常的,不是说工作中没用到设计模式,而是大多数情况下我们项目中没想那么多,更多的是做一些需求更改,而忽略本质。 设计模式的目的是提供可拓展性和可维护性, 但是我们开发的项目本身,大部分都是固定写死的,逻辑单一,我们开发的模块也并不在其他的位置或项目中复用,目的很明确就是做当前的业务。 平时开发中用到设计模式的地方很少,但是框架就不同的了,框架必须适应不同的项目,具备高弹性和拓展性。他们要能适应各种不同的环境,所以,设计模式在框架设计中处处可见。 假如一开始在大公司或者接手一个接近成熟的项目时,那大概率会负责一些小模块或者细分领域的开发;而在小公司或者是几乎从零开始做项目的时候,可能我们本身还不够去设计一个符合项目长期规划的架构,最终导致写的代码比较乱,维护性差。 所以在嵌入式开发中,当我们有了一定的基础和项目经验的时候,我们就会想着,嗯,一个好的架构多么重要啊,或者我需要去好好学一下设计模式了。 嵌入式专栏 3 嵌入式开发一定要学设计模式吗 ? 可以这么说,设计模式为拓展而生。 平时项目中的业务逻辑代码,大部分功能是死的,是专为这个场景而生的,不会在另外的场景中出现,这种业务的开发,是不需要设计模式的。 但是如果需求有变化,我们一般可能就直接修改源代码了,这样实际上带来了一定的修改成本,而为了一个项目中可能不明确的未来变化,而精心设计扩展性很高的架构,成本也是显而易见的,所以,这是一个取舍。 当然,从长期来看,一个好的设计是值得的,毕竟与其不断的修改新的需求,还不如一劳永逸,这样开发人员才能从各个方面高效去开发了。 在嵌入式软件开发中,当软件系统到达一定的复杂程度时,设计模式就显得尤为重要。虽然搞嵌入式的常常是基于一些16位/32位/64位单片机开发,而且这些可能受一些硬件方面的限制,但是单片机软件也是可以遵循软件工程的基本原则来进行架构的。 从代码组织的角度比如组件化、分层、去耦等等,或者从设计角度比如基于消息队列、事件驱动等等,都是有因可循的。 所以对于这个问题,嵌入式开发最好是要学设计模式,这里鼓励大家多看看重构、设计模式、面向对象的C等方面的书籍。 嵌入式专栏 4 设计模式该怎么学? 前面说了那么多,设计模式是什么,嵌入式中哪里用到了设计模式,设计模式到底需不需要学等等,好,那你告诉我到底怎么学! 这里我想分一些情况来说,关于这个问题,设计模式怎么学习,得看你的程度、你主要解决什么问题、你负责的部分而定。 若你的编程水平或者学习的程度还没到那(还在学习怎么编程阶段),看了自然是懵逼的,这个时候还是好好补补基础知识,这些还用不到。 若在项目当中,你解决的大部分是一些业务逻辑,这种情况能用的设计模式不多,因为需要的是业务模式,也就是参考设计模式原理,自己设计业务模式改改需求啥的,就没必要了。 若你负责或参与应用框架或与其相关,那帮助就大了,这个时候用什么设计模式,怎么去设计就要考验功底了。 当然,不管怎么说,只要有时间即使是你目前程度还不到,你也可以学习设计模式使自己提升程度,但得一步一步来,稳中进步。 这个学习也不是一次性把所有的都学习了,这样其实也很难掌握,可能只是知其表而已,一般先从某个与你要处理的问题相关或者常会遇到的模式开始学起,一次学一个,学的深一些。 大部分人最常提的是单例、工厂、策略这几个,比如一个功能,要求既要支持串口通信,又要支持TCP通信,而对调用方来说最好不要知道它们的区别,这就是典型的策略模式场景。 这种比较常见的情况,很多项目中都可能遇到,因此不可能不学,网上也有很多经验分享,还有很多教程例子,这个时候也不可能学不会。 嵌入式专栏 5 总结 到此,你觉得设计模式有没有用? 每个人的情况不同,学习过程不一定是这样,做的工作内容肯定也不一样,关键点是只要你在这行,在写代码,那么一般一定用得到其中几个模式,等你学会几个,并且常用,时间久了自然就明白了。

    时间:2021-04-05 关键词: 设计模式 嵌入式

首页  上一页  1 2 3 4 5 6 7 8 9 10 下一页 尾页
发布文章

技术子站