-
物联网工程专业,当时培养计划是2个方向,一个是偏硬件+软件结合(嵌入式),另一个就是纯软件(JAVA等)。以下课程是嵌入式要学的专业课,只罗列了相对重要的,其他通识就不说了。
-
PS:以下备注重要程度,纯属个人见解。
-
特别重要(专业课)
-
重要(基础课,学了对专业有辅助作用)
-
一般(学分要拿到,也可以作为基础课)
-
不要觉得有些课没用,后面工作才知道都是基础,在学校就按部就班的学好专业的每一堂课,到了大三大四,全部连通贯通,就明白了,每一门课都不是多余的。
-
是不是还会觉得学校的技术理论和设备落后?不,就像语数外一样,这么多年还是那些知识点,基础是不会被淘汰的。
编号 | 课程名 | 备注 |
---|---|---|
1 | c语言程序设计 | (特别重要) |
2 | 大学英语 | (一般) |
3 | 高等数学 | (重要) |
4 | 计算机网络导论 | (特别重要) |
5 | 线性代数 | (重要) |
6 | c语言课程设计 | (特别重要) |
7 | 大学物理 | (重要) |
8 | 电路电子学 | (特别重要) |
9 | 离散数学 | (特别重要) |
10 | RFID原理与应用 | (特别重要) |
11 | VC++程序设计 | (特别重要) |
12 | 大学生求职技能培训与指导 | (特别重要) |
13 | 概率与数理统计 | (重要) |
14 | 数据库系统原理 | (重要) |
15 | 数字逻辑与数字系统 | (特别重要) |
16 | 物联网工程概论 | (重要) |
17 | 汇编语言设计与应用 | (重要) |
18 | 计算机辅助电路设计 | (特别重要) |
19 | 计算机网络 | (重要) |
20 | 数据结构 | (特别重要) |
21 | 网络安全实用技术 | (重要) |
22 | 物联网工程实践 | (特别重要) |
23 | 传感器网络原理及应用 | (重要) |
24 | 单片机与接口技术 | (特别重要) |
25 | 计算机组成原理 | (重要) |
26 | 嵌入式系统与设计 | (特别重要) |
27 | 软件工程导论 | (重要) |
28 | 数字通信原理 | (重要) |
29 | 移动终端应用开发 | (特别重要) |
30 | 操作系统 | (重要) |
31 | 嵌入式系统项目实践 | (特别重要) |
32 | 数据仓库与数据挖掘 | (重要) |
33 | 物联网工程案例分析与实践 | (特别重要) |
1、c语言程序设计
-
c语言语法基础,教你如何写第一行代码,每节课老师都会布置电脑操作练习题,跟着做就是了。(哈哈哈哈哈,考了90分,很骄傲)
-
这里强调,学校上c语言课程的老师,都是非常厉害的的,记得当时的王牌专业,也和我们同一个专业课老师
-
基础打好,后续很多课程学起来会容易些,即使大一学得不是很好,相信大二、大三、大四、甚至工作以后,还会回去看这门课的知识
-
后面很多专业课都会用到c语言,比如:
1.1、c语言课程设计
- 是程序设计的进一步提升,语法学完了,就可以解决问题了,那么课程设计就是用程序解决一些典型的问题。就像语文一样,学好语法会造句,后面再写作文,后面再写书,语法很重要。
1.2、VC++程序设计:
- 学好了c语言,VC++的语法大部分和c语言差不多的,有一些会不同,c语言更底层,VC++面向对象,类封装起来使用,VC++可以做图形界面,c语言可以嵌在里面,两者结合开发应用,比如电脑的 xxx.exe
1.3、汇编语言设计与应用:
-
机器是没办法直接识别c语言的,只能识别01010101等这样的机器指令,c语言是为了方便开发,阅读性高,属于高级语言,高级语言都要转换成低级语言机器才能正常运行起来。程序编译就得到汇编程序,后续再链接到指定的地址得到可执行文件。
-
更多的可以了解原书《深入理解计算机系统-第三版》
1.4、单片机与接口技术:
-
这里会接触到最简单的处理器,51单片机,了解一个简单的软硬件系统主要有哪些东西,晶振、IO、中断、串口、Timer、寄存器、数码管、灯控、开关等这些最基础的元件和理论。硬件焊好,功能如何实现呢?c语言去实现,没有依靠操作系统的前后台程序,前台表示响应快的中断,后台是主函数的一些处理。
-
最简单的当然要学好,因为工作后用的高级芯片,处理器,控制器会更加复杂,但底层操作的方法大致是相同的。
1.5、数据结构:
- 这门课,概念学好了,也要用到c语言指针,结构体,共同体等,链表、队列、堆栈、等。
1.6、工作后对C语言的应用:
-
3年前写的代码,现在回去看,写的真烂,不仅不美观,还浪费内存,也不够简便,只有入的坑多了,才知道如何写简单又高效的代码。
-
指针,结构体,共同体,数组是用的很频繁的,指针一定要学好。
-
学好c语言,可以往好几个方向扩展,比如图形界面开发VC++,芯片验证Verilog,c基础好的话,这2个都可以快速上手。
-
研究生如果走算法方向的话,c语言也是会用到的,而且省内存省算力提高速度是很重要的,c语言使用不恰当,会造成内存泄漏,或者浪费资源,毕竟芯片的内存大部分是有限的。
2、大学英语
-
说实话,这门课对我考4级没什么太大的帮助,但是可以让你保持英语的感觉,建议大一就报考4、6级,这时候很多单词语法还能记得,越到大二大三大四,英语不怎么使用的话,会越来越难考的。
-
学分还是要拿到的,不难。对于英语好的同学来说,这门课就是小case。
2.1、工作后英语的应用:
-
工科好多人英语是考不及格的,但也不耽误是技术大神,一般的大学工科对英语的要求不是很高,能力至上。
-
软件接口和参数明名,可以是单词缩写或全拼组成,记不住没关系,找翻译软件嘛,如果表达的意思不是很清楚,还可以加中文注释。
-
面对国内客户,写中文注释和使用文档,就已经可以了,但是面对国外项目客户市场的时候,写英文注释英文文档,还靠翻译软件?可以,但是公司还是得让英语专业的同事审核,翻译一下,毕竟软件翻译和实际表达的还是不一样。
-
程序员英语不好,没关系,够用就行了。
-
想起前段时间看到的一个话题(英语该不该从主要科目中去掉?),个人认为是没必要去掉的,为了让所有人都有机会学英语,一旦变成花很多钱才能学的科目,很多贫困山区的孩子们是吃亏的。想起当初我第一次接触英语还是初一,得亏学习能力强,第一次考试就及格了,后续英语不算优秀也不差。
-
如果考研,英语是必须要好的,将来研究生毕业,如果从事算法处理、技术商务洽谈、芯片设计等岗位,英语是必须的。算法处理的岗位,可能要写英文专利。技术商务洽谈,拟英文合同,阅读以及写英文技术文档,可能还要和外国客户口语交流。芯片设计,其实和技术商务洽谈是差不多的,只是不需要拟合同。
-
当然程序员的我也需要看英文文档,边看边翻译还看不懂那种痛苦,哎。不过技术文档偏专业英语,只要懂语法,陌生的单词查到了,自己组织一下语言也可以看懂。
3、高等数学
-
确实是高等数学,也太难了,并不是像高考一样背公式考计算逻辑能力。每一种公式和推导都比较麻烦,且问题都不知道是啥那种。建议拿学分,不理解就算了。
-
考理科类研究生,高数是必考,听说一道题,答案都要写一张A4纸,确实理科类的研究生并不是那么容易的,膜拜。
3.1、工作后高数的应用:
-
说实话,本科毕业的我,在工作中很少用高数,偶尔也会写一些简单的算法,求查找最优结果。
-
但算法处理岗位的同事倒是经常提到高数的概念,比如求导,收敛,傅里叶变换等,还有人家写的专利,好多基础都是高数的公式哦,看不懂。
4、计算机网络导论
-
印象中,当时就学了下计算机的网络IP地址修改,局域网,网络的管理设置等,学了感觉自己都能当网管了呢!
-
在公司上班,有专业的IT解决网络和电脑问题,了解一下就行,如果感兴趣的话,可以自己研究怎么高级配置电脑,修电脑也行,哈哈哈。
5、线性代数
-
好像有点忘了线性代数学的啥,但是计算过程也挺麻烦的,百度了下,学的矩阵,向量,线性方程。
-
考研需要,工作中我已经忘光了,留给更聪明的人用吧。
6、大学物理
-
也不太记得大学物理学的啥,可以说是高中物理的高阶,了解下就行。
-
哦,大学物理对物联网工程专业好像还是有用的,物联网会涉及到传感器,还有一些物体,那么会有各种物理量,运动轨迹需要监测,物理公式就要拿程序去实现。
-
我只要清楚传感器元件,返回给我的是什么数据,再根据数据分析结果。
7、电路电子学
-
学完,感觉都可以自己接电路了,点灯,开关,电流,电压之类的学习,主要偏理论,也有一点实验,了解各种元件,还有示波器,万用表的使用。
-
哈哈哈,会第一次接触到焊烙铁,我的妈耶,焊的那叫一个难看,还有第一次接触到PCB设计制版,画电路PCB图,后面老师把我们设计好的图拿去工程制作,拿回来再接上元件,实现功能。
-
还是挺有意思的,理论加实验,当时学的还是懵懵的。
-
后续会补充我在这门课做的东西图。
7.1、工作后电路的应用:
-
我的岗位,软件控制硬件比较多,公司有专门的硬件工程师,他们负责PCB板的绘制和焊接,拿到板子以后,只需要了解板子有哪些接口,怎么接电,怎么跳线,怎么抓信号,看得懂原理图,根据需求,外接元件,调程序。
-
必要的时候,也需要自己动手做一些简单的焊接。
-
会使用示波器、逻辑分析仪、小型万用表、信号发生器、数字万用表、稳压电源的基础功能,复杂一些的,会有硬件工程师在旁边帮忙,毕竟很多接入220V电压的设备,不懂电气特性,乱接线的话,还是很危险的。
-
想起来刚工作的时候,没看清楚5V和GND,接反了,把串口都弄冒烟了,还好只是5V。
8、离散数学
-
离散数学对于嵌入式来说,还是挺重要的,课程会经常绘制真值表,真值表的值只有0和1
-
0表示假,1表示真,软件代码里的bool类型就是,ture表示1,即真,false表示0,即假
-
机器代码就是0和1序列组成的,很多硬件信号值也是0和1,芯片的bit位值也是0和1
-
与、或、非、异或等逻辑运算,在嵌入式软件操作配置控制器时,会经常用到,想要设置某一个bit为1,或为0,就要用到。
-
不复杂,但需要细心,能理解这门课,将来写程序也会相对容易,把一个复杂的东西,细化到具体一个bit去操作,就不是很难了。
2.1、工作后离散数学的应用:
软件方面的应用:
- 比如判断一个状态的不同,选择不同的操作
bool flag = true;
if(flag)
{
//如果为真,处理1
}
else
{
//如果为假,处理2
}
- 比如想把数据的某一位清0
uint32_t data1 = 0xFF;
uint32_t *data1_ptr = &data1;
*data1_ptr &= ~(0x1 << 6); //把第6位清0,data1 = 0xBF
- 比如想把数据的某一位置1
uint32_t data1 = 0xFF;
uint32_t *data1_ptr = &data1;
*data1_ptr |= (0x1 << 8); //把第8位置1,data1 = 0x1FF
- 比如想判断某一位是为0还是1
uint32_t data1 = 0xFF;
uint32_t *data1_ptr = &data1;
if((*data1_ptr & (0x1 << 5)) >> 5)
{
//如果第5位为1
}
if(!(*data1_ptr & (0x1 << 5)) >> 5)
{
//如果第5位为0,用到了非,非0为真
}
芯片方面的应用:
-
1,表示高电平,0,表示低电平,
-
1,表示使能,0,表示不使能
-
1,内存里表示值1,0,内存里表示值0
-
总之0和1表示什么意义,芯片都可以自定义,由芯片手册决定。
9、RFID原理与应用
-
物联网与互联网的区别就在于,以前的计算机网络,是解决长距离通信的问题,物联网是解决最后一公里的问题。
-
计算机已经实现和计算机相互联系了,且速度很快,延迟也几乎没有,但是一些物品还停留在手动开关,必须要人去操控的阶段。要怎么实现,不在家就能远程操控家用电器,坐着就能干很多事情呢,物联网就是这样的网络,真是个伟大的网络。
-
现在生活中见到的共享单车,租借的充电宝,自动驾驶,小度,智能音箱等,都是物品可以联网到APP或小程序控制,很大程度上可以减少资源浪费,不用人手一个自行车,需要的时候扫码租借就可以了。统称Internal Of Things(物联网)。
-
二维码也是从2019年之后才开始盛行,随处可见的扫码点餐,扫码关注,越来越方便。
-
IC卡也是其中一个,RFID就是IC卡的原理,身份证,地铁卡,银行卡,最早使用的都是磁卡,容易消磁,且存储不了多少信息,IC卡不会被消磁。后来的新身份证能用于高铁直接刷卡,也是这个原因。
-
这门课,就是让你知道,如果编程控制读取IC卡的信息,和操控IC卡,对物联网有一点实质性的了解。
10、VC++程序设计
-
面向对象的编程,这样说可能有点抽象,通俗点讲就是不像c语言那样每个函数,可以跨文件,跨区域,想调用就调用。而是会区分类别,一个类里包含成员变量、成员函数,成员可以是私有的,公共的。
-
别的类只能访问你的公共函数和公共变量,不能访问私有变量,且每个变量和函数必须按规则声明,使用起来相对规范些,可以很清楚的知道,接口和变量属于哪个类。封装起来了,其他类可以继承。
-
用于图形界面的开发比较多,比如现在电脑上常用的一些命令行工具xxx.exe,或图形界面,基本上都是基于vc++开发的。
-
开发的c++软件的工具有很多,常用的有Qt,Visual Studio,Mingw等。
10.1、工作后VC++程序设计的应用:
-
基于Qt开发工具,绘制图形界面,处理点击按钮、选择文件,下载hex等功能信号,编写槽函数,通过界面的操控实现功能。
-
底层可以嵌入各种lib库,c语言写的bin文件,使用封装好的控制器标准库,操控数字万用表、芯片、USB设备等。
-
简单的桌面命令行xxx.exe,还可以使用Visual Studio来开发,原理上和Qt是差不多的,库函数和配置有些不同,官网都有比较齐全的资料,可以查询。
-
嵌入式不只是底层开发,底层写控制器驱动是基本,还需要提供应用代码框架,方便添加不同的应用场景,到客户手里之前,还需要提供一系列帮助二次开发的桌面工具,让二次开发更方便。
-
比如产生的物理信号,通过软件转换成数字信号,要怎么体现出来,听到,看到呢?比如把音频数据保存到电脑,串口输出显示出来,摄像头拍照的照片实时显示,电脑里的音频文件怎么传输到芯片播放?等等,都需要用到界面工具。简单的串口显示可以用开源的,但大部分需要的工具是特殊的,只能自己开发。
32、数据仓库与数据挖掘
-
这门课挺有意思的,前提是要了解数据库是什么,会搭建数据库以后,就可以分析数据了,不是单纯的统计和存储。
-
印象很深刻的是,老师说了一个案例,沃尔玛的货架为什么会把啤酒和尿不湿摆在一起?
-
这就是用到了数据挖掘,也就是大家口中常说的大数据,用大量数据去分析出有意思的结论,这个结论可能是反人类的,不可思议的,人永远也想不到的,可能影响将来企业、集体做重大决策。
-
虽然我工作用不到,但是生活已经被大数据化了。
29、移动终端应用开发
-
嘿嘿,自己开发的第一款手机APP,就是在课上做的,没什么技巧,就是跟着老师的教程操作,学习怎么开发一个APP,问题很多,每个同学的电脑还有兼容性问题,即使生成了APP,手机也不一定能用,反正挺麻烦的,电脑每次运行虚拟的手机,还特别卡。
-
这门课,就算是给你提供一个职业方向,看你是否对开发APP感兴趣,了解一些基础,用不到特别多的专业知识,相当于熟悉一个工具。如果感兴趣,以后的职业方向可以选,APP设计师,APP开发工程师,APP测试工程师等等。