嵌入式课程结业总结

      我大学学的专业就是计算机,之前就接触过c,c++等计算机语言。在大学期间,上课的方式就是老师在讲台上讲,学生在书本上划重点,做笔记等,很少有实操的机会,学的东西基本都停留在理论状态,独立敲代码的能力基本没有。来到华清之后,刚开始的预科C的课程将C语言的基本知识都梳理了一遍,主要是基本的数据类型,感觉收获很大,接下来的数组,指针,函数,数据结构等内容学下来也感觉比较轻松。后面的文件IO,多进程线程的课,我理解的本质上是讲解各种函数,函数的功能,原理,用法等等。不管代码有多长,函数有多复杂,一层层分析抽丝剥茧,其实都是从最基本的知识点出发的。老师上课的方式也挺好,只要有没听懂的知识点,提出来老师会当场解决,直到弄懂为止。

      个人总结的学习方式就是要多敲代码。只有在敲代码的过程中,敲不下去了,或者出错了,才能找出问题在哪,是什么原理,为什么要这么写,,一个个去解决问题,后面就会越来越顺,出错越来越少。

       由于自己对软件硬件开发十分感兴趣,感觉物联网、芯片是当下以及未来最热门的方向,因为生活、工业生产等方面几乎处处应用了这些技术,只有掌握了相关知识技能,才能跟住时代的脚步。前些年一直想提高自己的编程能力,因为忙于毕业和论文,一直没有大块的时间对编程进行系统的学习。读大学和工作是没有人督促的,完全凭自己的自觉,上自习也是一个人,这种环境容易使人变得懒散,失去斗志。来到华清学习,让我突然感觉回到了高中时代,找到了些许当年奋斗的激情和热血。华清的学习氛围和管理模式很好,老师们都很专业,对学生提出的问题都会耐心解答,老师们通过实例代码突出书中最重要的内容,这比起自己花大把时间阅读书籍效率要高的多。感觉华清老师的讲课思路真的很清晰,即使有时候第一遍听的不太懂,再看一次回放就可以彻底把知识点搞懂,老师们对授课进度和节奏把握的也很好,会留给学生充分的自习时间编写代码和回顾知识点。到目前已经学习了Linux与C高级、数据结构、进程线程、网络编程、C++等内容,再把后面几个月的培训学完,基本可以比较系统和全面的掌握嵌入式开发知识,为以后的工作打下坚实的基础。华清的培训模式也有助于学生们养成良好的习惯,自从来到华清学习以后,我养成了每天早起,按时吃饭,按时睡觉的习惯,这样使我每天精力充沛,不像从前的我经常熬夜,吃饭不规律。

       华清的官网上有大量的学习资源,老师们的讲课视频,同时还配备了很多教材,如果有培训课程以外的需要,也可以学习华清官网上的其他教学资源,我感觉这对于已经工作的人是很有帮助的。华清在培训的最后一个月还会教同学们制作简历、传授面试经验和进行模拟面试,这也可以为正在找工作的同学提供很多经验,少走弯路。所以如果你想提高IT相关专业技能、学习计算机互联网知识,或跨入互联网行业的门槛,又苦于找不到方法和途径,我会向你推荐华清。

       我相信经过在华清的学习,未来我可以更好的胜任工作。培训以来,感谢老师们的耐心传授,班主任的悉心指导和同学们的相互鼓励与协作。最后希望同学们能够勤学苦练、共同进步,也希望华清越办越好。

      由于很少了解嵌入式系统,感觉蛮难的,很多的概念都比较模糊,真是茫然无从下手。但是在每位任课的老师的带领下,从最基础的东西学起,最终渐渐的了解了很多关于这方面的东西。

        嵌入式系统本身是一个相对模糊的定义,一个手持的MP3和一个PC104的微型工业控制计算机都可以认为是嵌入式系统。总体来说,嵌入式系统是“用于控制,监视或者辅助操作机器和设备的装备”。一个典型的桌面Linux系统包括3个主要的软件层---linux内核、C库和应用程序代码。内核是唯一可以完全控制硬件的层,内核驱动程序代表应用程序与硬件之间进行会话。内核之上是C库,负责把POSIX API转换为内核可以识别的形式,然后调用内核,从应用程序向内核传递参数。应用程序依靠驱动内核来完成特定的任务。

        在了解了基础知识之后,我开始进行编写操作,当然,其中遇到很多的难题,很多东西都是第一次接触,而通过最近的学习,我感觉收获还是蛮多的。可能我对于嵌入式的知识学习的还是不太多,但是这之外的东西收获颇丰。它让我学会了如何通过自己的努力去认知一个新事物,更重要的是端正自己的学习态度,只有真正下功夫去学习,才能有收获,正所谓“一份耕耘,一份收获。”我也学会了如何去分析问题,如何找出自己设计中的不足,继而去排除解决问题,这就是一个自我学习的过程。当我们通过实验去学习理论知识时,自己动手得出的结论,不仅能加深我们对嵌入式的理解,更能加深我们对此的记忆。

         当然在每个阶段之后,自己也要好好的复习前面的内容,加深对学习内容的理解和使用,把所学的知识联系起来。当然在上期课程结束之后也是有一些小项目,通过自己的编写能够很好的去掌握前面所学习的知识点。最最重要的还是动手能力,必须得自己动手才能成长起来呀。

        当然,在这其中,我也发现自己的许多不足之处,编写代码逻辑不清晰,还有上课听懂,但是不知道怎么动手。我相信在以后的学习工作中,我一定会端正自己的学习态度,一丝不苟的去对待每一件事。只有做好足够的准备,才能事半功倍!

华清远见的嵌入式课程在我看来主要分为三个部分,基础,提高,深入。基础学完可以应聘纯C的开发工作,提高学完可以应聘应用层的C++/QT开发,深入学习完可以应聘驱动开发。

嵌入式基础课程

嵌入式基础课程所使用的大都为C语言,分为6个课程

C语言基础:为期两个星期的C语言基础补习,里面讲述了,C语言基本特性,数据类型,运算符,结构语句,GDB调试,位运算,修饰符,函数,main函数传参,动态内存。

Linux C:一个星期的课程,以Linux为主体,主要讲述了:Linux基础知识,体系结构,虚拟机下Ubuntu使用,软件包管理,网络基础,目录体系,vim编译器使用,相关命令,Makefile ,Sheel脚本。

IO:两天的课程,分别讲述了文件IO,系统IO,相关的函数和使用。

数据结构与算法:一个星期的课程,讲述了:数据结构基础知识,线性结构,树状结构,网状结构,算法,复杂度,项目演示。之后又给了我们两天的时间做项目。

进程,线程:一个星期的课程,讲述了:进程,线程,进程间通信,线程间通信。

网络编程:一个星期课程,讲述了:网络基础,通信流程,服务器模型,IO模型,网络属性设置,SQLit数据库

嵌入式基础部分,总共六周左右的时间,六个课程又分为三个阶段,

第一个阶段:语言和环境的使用,这一阶段较为轻松代码量少,概念也不难

第二个阶段:学习了数据结构和IO,代码量一下就上来了,概念中等,只要学习就不难理解,这时候也接触到第一个项目,通过项目熟练前面所学的内容,练习自己的敲代码能力。

第三个阶段:涉及到了进程线程,网络,概念相对复杂,需要反复理解,但是这一阶段代码量不大,反复敲经典代码,可以掌握。

在这一部分,如果细分,还可以分成两个阶段,C语言到数据结构,算是基础,文件,进程,网络,这三个课程算是Linux内核部分。后者的概念较多,但是不建议太过于深究,一切还是需要代码练习。

嵌入式学习提高课程

嵌入式提高课程开始引入面向对象语言:

C++:为期两个星期的课程,主要讲述了:初识Cpp,面向对象,运算符重载,模板,STL,继承,多态,项目讲解,另外给了两天的时间让我们做项目,并且答辩。

QT: 为期两个星期的课程,主要讲解了:QT概述,QT软件的安装,创建QT项目,信号和槽机制,QT窗口系统,QT信号机制和事件,绘图和绘图设备,文件系统,QT的Socket编程,多线程,数据库,另外给了两天的时间让我们做项目,并且答辩。

Python:为期一个星期的课程,主要讲述了Python的基础,这个课程作为了解课程,只要会编写基本的Python程序,会看Python即可,因为现在有些岗位需要会Python

STM32/NBiot:为期一个星期的课程,老师会发一个STM32的开发板,和一个NBiot开发板,会讲解如何使用,如何编写项目,如何通信,采集传输数据。

嵌入式提高的课程,总共6个星期,其中的重点在于C++和QT,作为初次接触面向对象来说,这一步是艰难的,需要大量的时间来学习,理解,并且敲代码,后两个个课程。并不是很难,所以可以空出时间来复习C++和QT,学会合理的安排时间。学习完这个阶段,其实以及可以找应用层的开发了,这时候如果有想从事这应用层开发的同学,可以开始复习并且刷题了,并且完善项目。

嵌入式课程深入

由于这一阶段的课程我还没有学习,所以只是,放上学习内容,不过这一阶段主要是偏向底层,涉及内核,在学习的时候,会发放ARM开发板,并带着做项目,ARM一个星期学习时间,系统移植一个星期学习时间,驱动两个星期学习时间。总共一个月的时间,这个阶段学完可以找驱动开发的岗位。

最后的项目实战,为期一个月的时间,这个时间,是自己做一个完整的大项目,然后同时复习,准备建立,并且练习面试,找心意岗位。

学习软件

VNC: 用来上课时观看老师桌面,听课使用

VMware:虚拟机,用来安装Ubuntu操作系统,进行Linux下环境操作

feiQ: 飞秋用来传输文件,上课笔记,提交作业

QT: 在QT阶段时,使用该软件开发

visual studio:在C++阶段时,c++语言的编辑编译

VSCode:编辑器,用来敲代码,配合插件使用,提升学习效率

BowOad: 轻量级代码编辑器,一般用来查看上课代码,方便高效

XMind: 用来编写思维导图,在上课时通过思维导图记录笔记

Source Insight:代码阅读器,用来看源代码,内核代码

WT+WSL: win终端和wsl,实现在终端内运行Linux系统,配置麻烦,但是使用起来方便快捷。

学习资料

教科书:《嵌入式 Linux C语言程序设计》,《嵌入式操作系统Linux篇》,《嵌入式应用程序设计综合教程》,《嵌入式体系结构与接口技术 Cortex-A9》,《嵌入式Linux驱动开发教程》

内部PDF:《第一期讲义》,《第一期实验手册》,《第二期讲义》,《第二期实验手册》讲义是基础概念的讲解,实验手册是项目实操的详细步骤与重点。

参考书籍:《嵌入式系统软件工程 方法、实用技术及应用》,《嵌入式c语言自我修养:从芯片、编译器到操作系统》,《C语言解惑:指针、数组、函数和多文件编程》,《明解C++》,《面向对象是怎样工作的》,《计算机是怎么跑起来的》,《网络是怎样链接的》,《程序是怎样跑起来的》,《跟我一起写Makefile》

老师上课笔记:老师在上课时会同步的写笔记,会把上课的知识点写到word文档里。每天课程结束的时候,会发给我们。

演示代码:老师在上课的时候写的代码,会打包好,每天一发。

课程回放:每天上的课程,老师会再华清远见专门的网站上录制直播,下课时,班主任会发当天的视频链接,可以点击在浏览器中观看

笔记整理

这些笔记是根据上课时的讲解,老师的笔记,自己参考的网上资料自我整理的Markdown文档,和通过上课时记录的思维导图。

Markdown

C语言提高.md

计算机操作系统.md

数据结构.md

C++.m

C语言基础.md

QT.md

预处理命令.md

进程.md

XMind

C语言高级.xmind

C++.xmind

进程.xmind

Linux OS.xmind

C语言基础.xmind

数据结构.xmind

IO.xmind

网络编程.xmind

        笔记只是自己学习过程中的总结,对于详细知识的学习,还是要看对应的书。笔记记录和整理最为忌讳的就是,过于注重笔记的整洁美观,而忽略了记录笔记本身是为了什么,当每天你花费大量的时间去整理笔记而没有时间练习代码,这时候你就需要停下来了。

个人学习心得

        在学习了这么久的时间里,自己或多或少都有一点点的学习心得,首先需要明确的是,不管我们因为学到了新的知识而高兴,或者是终于改好了代码中bug而兴奋,还是在做了一整天的痛苦,这些都是这个过程中的感受,不要忘记最初的目的,找一个很好的工作。

        找到一个很好的工作,才是我们最开始的目标,那么在学习这条路上,就要以这一目标为基准,6个月的高强度学习,每天获取大量的知识,从早上8点到晚上九点,这每一天的时间,辛苦是肯定的,全部掌握知识点是不可能的,一定要有取舍,要有安排,哪些是一定要牢记的,哪些是要掌握的,哪些是要了解的,这都不一样。

        哪些知识点重要或者不重要,对于每一个人来说都是不一样的。因为大家想做的岗位不一样,岗位的需求不一样,虽然说不至于在学习的时候就心猿意马的找工作,但是在学习的时候了解一下,岗位需求,自己想做哪一方向的工作,通过这种目的指向的学习,会让自己合理的做出安排。

        在学习过程中,有很多的学习方法,对于个人来说,练习,代码复现,通过自己亲自敲一遍的代码,是完全不一样的。上课听老师讲完课,这时自己是一种水平,听完课自己过一遍笔记,自我整理完笔记这又是一种水平,自我打一遍代码又是一种水平。所以不要害怕敲代码,越是害怕,说明这一方面你越欠缺。

        学习资料有很多,现在最大的问题不是资料太少,而是资料太多,所以在学习的时候,不要去疯狂的查询资料,先耐下性子,拿手头的资料慢慢的学进去,再说其他额外的资料。网络上很多资源良莠不齐,计算机书籍也有好有坏,不要在这一方面花费太多时间。

        上课的回放重要吗?重要,但是十分不推荐当天上完课就看。笔记重要吗?重要,但是不要花费太多的时间花费在笔记上面,让他变得精美。最好是先看老师的笔记,根据上课同步记录的思维导图学习,等时间慢慢空闲了再去整理自己的笔记。

       最为推荐的,就是自我建立一个代码库,把学习阶段中,所学习的,要练习的代码整理到文件夹中分类,注释多一些,再给每一个练习配合一份简单的文档,通过建立自我的代码库,是我感觉最为高效的学习方法。

        另外,由于学习内容多,资料也多,所以应该建立一个合理的文件结构用来存放所有资料,练习的代码,笔记,资料...,按课程分别存放,清晰明了,最忌讳的就是全部放桌面,自己都不知道文件在哪里。

         在学习过程中如果遇到问题,首先自我解决,这一阶段可以在网络上查找资料,如果自我解决不了,那就和同学一起讨论,如果还是解决不了就询问老师,在学习的过程中,一定要注重讨论,把自己想说的,想问的表达出来,不要自己一个人闷着学习,闭门造车。

         在学习生活中,有什么困难,有什么想法困惑,甚至是抱怨,担忧,焦虑,这些都可以和班主任聊聊,不得不说,班主任都是小天使。班主任真的十分的负责,遇到问题咱们就去解决问题,而不是让他留存下来,成为一根刺。

         最后要说的是,学习工作是生活的一部分,在这条路上奔波的时候,不要忘记自己的身体健康,和心理健康,注意好身体,好好吃饭,每天下课了,运动运动,走一走,心情烦躁了和同学说说,和老师交流交流。这样我们才能越来越好,不是吗?

宋宝华嵌入式 C/C++语言精华文章集锦 C/C+语言 struct 深层探索 ............................................................................2 C++中 extern "C"含义深层探索........................................................................7 C 语言高效编程的几招...............................................................................11 想成为嵌入式程序员应知道的 0x10 个基本问题 .........................................................15 C 语言嵌入式系统编程修炼...........................................................................22 C 语言嵌入式系统编程修炼之一:背景篇 ............................................................22 C 语言嵌入式系统编程修炼之二:软件架构篇 ........................................................24 C 语言嵌入式系统编程修炼之三:内存操作 ..........................................................30 C 语言嵌入式系统编程修炼之四:屏幕操作 ..........................................................36 C 语言嵌入式系统编程修炼之五:键盘操作 ..........................................................43 C 语言嵌入式系统编程修炼之六:性能优化 ..........................................................46 C/C++语言 void 及 void 指针深层探索 .................................................................50 C/C++语言可变参数表深层探索 .......................................................................54 C/C++数组名与指针区别深层探索 .....................................................................60 C/C++程序员应聘常见面试题深入剖析(1) ..............................................................62 C/C++程序员应聘常见面试题深入剖析(2) ..............................................................67 一道著名外企面试题的抽丝剥茧 ......................................................................74 C/C++结构体的一个高级特性――指定成员的位数 .......................................................78 C/C++中的近指令、远指针和巨指针 ...................................................................80 从两道经典试题谈 C/C++中联合体(union)的使用 ......................................................81 基于 ARM 的嵌入式 Linux 移植真实体验 ................................................................83 基于 ARM 的嵌入式 Linux 移植真实体验(1)――基本概念 ...........................................83 基于 ARM 的嵌入式 Linux 移植真实体验(2)――BootLoader .........................................96 基于 ARM 的嵌入式 Linux 移植真实体验(3)――操作系统 ..........................................111 基于 ARM 的嵌入式 Linux 移植真实体验(4)――设备驱动 ..........................................120 基于 ARM 的嵌入式 Linux 移植真实体验(5)――应用实例 ..........................................135 深入浅出 Linux 设备驱动编程 .......................................................................144 1.Linux 内核模块..............................................................................144 2.字符设备驱动程序 ...........................................................................146 3.设备驱动中的并发控制 .......................................................................151 4.设备的阻塞与非阻塞操作 .....................................................................157
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值