这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » 软件与操作系统 » 嵌入式系统有哪些坑可以避免呢?

共15条 1/2 1 2 跳转至

嵌入式系统有哪些坑可以避免呢?

菜鸟
2021-10-26 13:58:30     打赏

学习硬件的小伙伴们都知道嵌入式是用于控制、监视或者辅助操作机器和设备的装置。嵌入式是一种专用的计算机系统,作为装置或设备的一部分。 嵌入式是才发展起来的一项IT开发技术。嵌入式在ARMMCU等各个方面都有了细分专业团队进行外协设计。但是往往我们在使用过程中有很多误区。


很多嵌入式初学者认为,学嵌入式,就是学习ARM,就是学习开发板


买一块开发板,然后在上面“移植”u-boot、Linux内核,再使用busybox制作一个根文件系统,大功告成!觉得可以出去找工作了。这其实是有一定片面性的:首先ARM是个CPU架构,跟PC上的X86架构一样,你见过有人在Windows下面学习C/C++编程、MFC编程、网络编程、互联网编程,说自己学习X86的吗?


当然,也不可否认,嵌入式平台的多样性、硬件的可定制性导致我们在嵌入式平台上开发应用程序、驱动之前,首先要搭建这个平台,就像我们在Windows下面要装操作系统一样,但是这仅仅是我们学习嵌入式开发的第一步。其次,关于系统的“移植”,很多人玩了开发板之后,会在自己的简历上写自己移植过u-boot,Linux内核。其实,这种写法也是有点瑕疵的。真正的移植,往一个新的芯片或开发板上porting一个u-boot或Linux内核,那可不是一个人能干的事情,是一个团队干的事情。


时钟、DDR、存储<,可能牵涉到各个模块,哪里遇到问题,都需要各个模块的owner去debug,有时候甚至可能是芯片的bug,或者硬件开发板的bug,这就需要我们使用软件去解决、去规避这个坑,这都需要我们在很短时间,甚至一两天的时间去解决这个问题,需要一个团队的各个模块专家合力完成。


所以说,我们所说的“移植”,其实就像是在Windows下面安装操作系统,按照步骤完成装机。当然,通过这个过程,可以加深我们对嵌入式系统的理解,但是我们首先要知道的是,我们“移植”的系统,都是芯片公司团队做好的系统镜像,我们做的只是配置、编译、安装、甚至升级这些基本的操作。这些环境只是我们学习嵌入式开发的平台,万里长征才走完了第一步。


学习嵌入式,我们到底该学些什么?


嵌入式越来越复杂,一个SOC芯片上集成的模块越来越多。以手机为例,典型的嵌入式产品,我们看看上面集成了多少模块:触摸屏、LCD、i、4G等无线通信、音视频编解码IP、DDR、存储控制器、3D/2D加速、指纹识别、DMA、G-sensor各种传感器......可以说,现在一个手机的复杂度和硬件配置,已经超过我们的桌面PC了。除了不断增加的硬件,软件方面,比如Linux内核,光内核代码就有1000多万行,每天更新的速度超过你学习的进度,你能学得完嵌入式的所有知识和技能吗?


早期PC时代,我们知道能做出X86 CPU量产的也没有几家,AMD和威盛。但是嵌入式时代不一样了,ARM的IP授权模式导致不同的芯片厂商百家齐放,不同的SOC平台和开发板眼花缭乱,针对不同行业需求定制的SOC平台雨后春笋:手机芯片、平板芯片、视频安防、物联网、汽车电子、工业控制,甚至人工智能AI芯片......,你到Linux内核的ARCH下面可以看看有多少种CPU架构,再到arch/arm下面看看有多少种开发平台,这还只是加入到内核mainline的平台,算上没有加入Linux内核主线的各种平台,其实数量更多。


众多的芯片架构、不同的开发板平台,我们该如何去学习?


嵌入式和PC的概念也越来越模糊了,Intel已经推出X86架构的CPU和嵌入式产品了,比如平板。ARM也开始进军服务器和笔记本领域了。无论什么CPU架构,ARM、X86、MIPS、PowerPC,还有最近火热的物联网芯片,无论是做嵌入式产品,还是PC、服务器,他们的底层本质其实都没有变,都是计算机原理和系统架构,都是冯诺依曼的计算机架构,图灵原型机的各种实现。


不断复杂的软硬件系统,对嵌入式工程师或者学习者来说是一个挑战。这对我们本身的知识和技能有一个更新的要求。早期51单片机时代,我们可以自己使用面包板或者自己画PCB,做一个开发板,然后在上面开发软件。软件、硬件自己全搞。现在不断复杂的SOC平台,再想一个人全搞,软硬通吃,基本不可能,这也导致我们需要分工协作来完成。首先软硬件的分工,各司其职,各自精通自己的领域,然后进行软硬件整合,协作开发。


再次,软件方面,嵌入式软件也越来越复杂,Linux内核1000多万行,android源码下载下来就占几个G的空间,自己想全搞,同样不可能,同样需要进行分工。比如android,需要分为BSP工程师、Linux内核工程师、驱动工程师、android中间层开发工程师、APP开发工程师。对于一个Linux内核,也需要分工,各个模块同样进行分工:Linux内核的USB子系统、音频子系统、视频编解码、文件系统......把其中一个模块你搞精通了,工资绝对不是问题。





关键词: 嵌入式     避坑    

菜鸟
2021-10-26 14:40:35     打赏
2楼

学习


工程师
2021-11-12 23:42:07     打赏
3楼

避免也没啥问题


工程师
2021-11-18 22:22:07     打赏
4楼

还是分享的不错的


工程师
2021-11-19 23:58:43     打赏
5楼

还是在平时的操作中多加注意就好了


专家
2021-11-20 00:00:55     打赏
6楼

感谢分享


菜鸟
2021-12-08 15:39:09     打赏
7楼

不错,分享内容很丰富


高工
2021-12-08 15:58:53     打赏
8楼

嵌入式太复杂,只学好一种就行了。



菜鸟
2021-12-08 20:56:34     打赏
9楼

软件需求:Win7开机后直接进入CCS7.0烧写程序,按下确认键就可直接开始读取光驱的光盘中的目标代码通过JTAG口和RS422串口烧录到FLash里(处理器为中电58所的JDSPF28335);

有兴趣请联系(谈开发费用):郑经理,15319718717



专家
2021-12-08 21:00:24     打赏
10楼

谢谢分享


共15条 1/2 1 2 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]