嵌入式的概念很多很杂,要学习的内容也很多,对于初学者而言,最难的是找到嵌入式学习方向,并持续的学习下去。
对于初学者来说,你就是一张白纸,学什么方向都能提高能力,抓紧时间学习,不浪费时间才是最好的方向。
学好嵌入式最有效的方法就是做项目,做需求,只有真正的用知识解决实际问题,才能将知识学以致用,也才能真正的摆脱眼高手低,什么都知道一点点,什么都不深入的困境。
比如我们要实现一个需求,同一个局限网中,有一台电脑,有一个嵌入式的主板,主板上有一个400W的摄像头,我们需要用电脑(windows)看摄像头的视频直播,并且能的控制摄像头的开启和暂停,怎么做?
(1)首先我们要能让电脑找到摄像头,这要用到网络的UDP探测、然后电脑要能控制设备,摄像头视频要能传到网络,这要用到TCP
(2)嵌入式设备程序编写:要用到C/C++,代码要用到Makefile管理、编译要用交叉编译器、另外采集视频与传输视频速率不一致,要用队列缓存,这个任务是多个执行流同时工作,那就要用到线程、锁等概念。
(3)为了调试嵌入式开发板,就又要用到串口、telenet、samba、等工具,而为了在写代码过程中好调试,又用到了写文件、字符串使用等基础。为了使用开发代码VScode、VS2010和linux基本操作命令必不可少。
(4)为了在windows上看直播,就要用VS2010的MFC开发界面,为了直播,就要边从网络中获取数据,边解码,边显示就要同时了解怎样用网络,怎样解码和显示视频。
(5)为了更好的传输视频,保证无绿屏、花屏现象,这里面就不得不了解视频帧、图像、编码、解码等概念。
(6)为了方便代码以后好扩展,就要了解c++的面向对象的操作模式、为了以后指令要扩展,就要用目前的json格式,另外为了节约嵌入式资源(内存,网络)、就要注意不能有内存泄露、句柄泄露,为了更好的使用别人代码或者将自己代码给别人使用,不得不了解动态库、静态库。
(7)为了后期定位bug原因或者排错,不得不学习抓包、GDB或内存、句柄监测方法。
总之,知识只有在真正使用时,它才是有灵魂的,才知道因为什么而学,才知道怎样学习并且怎样使用知识。快速学习和快速应用新的场景新的知识,这个就是企业真正所需要的能力。
需要学习资料,可以私信,有全套餐的学习资料与开发板。