转眼间近四个月的学习就结束了,我的这个阶段的生活也画上了句号。回想近四个月的学习、工作和生活上,有过震撼、诧异、怀疑,也有此刻越来越多的探求和欣喜,我感受最多的是自我在不断的成长和走向成熟,一个不断发现自我、创新自我的过程。现对这段时间的学习做如下总结:

一、在学习中,首先,是C语言学习阶段。虽然之前学习过C语言,但是掌握的并不是很熟练。通过这个阶段让我对C语言更加熟悉,尤其是在指针,指针与数组,指针与函数这几个知识点,相对于以往已经有了很大的提高。在这个阶段,老师的耐心和专业,以及我认真听讲,认真完成课后作业,花时间去理解与实践,是我有所提高的主要原因。当然也有遇到困难的时候,在这个时候我在朋友有空的时间,会请教解决问题。

其次是Linux基础阶段,在这个阶段学习了Linux基础。这里主要老师主要讲解了认识linux操作系统和基本命令操作,Shell脚本编程,Makefile文件管理,以及对上个阶段的一些补充。Linux基本命令的操作可以让用户通过终端以命令行的方式与Linux系统进行交互,这个过程实现了用户空间到内核空间,内核空间到用户空间的交互,从而达到目的。Shell脚本编程,它有一套shell脚本语言,通过shell脚本编程可以实现按一定逻辑和顺序执行多条命令,达到最终的效果。通常在一些系统初始化的时候,会编写shell脚本自动的执行某些命令,而不用人为的输入。Makefile文件管理是对批量文件进行管理,当某一个程序有多个源文件时,通过Makefile管理文件可以使得我们操作这些文件变得更加方便。最后是内存的动态开辟,以及堆栈,结构体,联合体的学习,这些都是C语言的一些基本知识,在写代码,分析代码的时候会用到这些基础知识。这些就是我对这部分学习知识点大致的理解;在学习过程中shell脚本编程对我来说会有一点点难度,毕竟在之前是没有接触到这门编程,不过在学习中跟着老师的节奏,对这部分的知识初步掌握。

然后是数据结构的学习,这是一门比较难的学科。因为它的引用场景很多,我们不觉中都会有用到,在求职的过程中也会对此有所要求,所以学好这门课程非常重要。例如linux系统就是用纯C语言以及数据结构实现的。这个阶段主要介绍了数据结构的基础知识,常用的一些数据结构以及常用的算法(排序算法、查找算法)。在这个阶段需要有良好的C语言基础和逻辑思维,这里会大量的用到指针和结构体。刚开始学习链表、栈、队列的时候还好,但是学到树和图的时候会明显感到变得很难,我的问题难在理解,但是在课后花了些时间,对这部分的知识点也算是基本掌握。其实我觉得数据结构,主要是学习逻辑抽象和解决问题的方法。通过对实际问题的抽象成对应的数据结构,加入合适的算法,从而达到解决问题以及提高程序的运行效率的目的。

接下来学习了linux高级编程,学完这里我们就可以编写一些简单的小程序。在这个阶段主要学习了I/O编程(标准I/O、文件I/O),这里是我们可以通过调用C库函数或者系统调用的相关函数,实现对文件的读写操作;进线程,通过学习进线程可以实现多任务处理程序,当然在这个过程中,需要熟悉进程间通信,线程间通信,临界资源的保护等;网络编程,通过学习网络编程,我们可以通过TCP/IP或者UDP协议自己搭建服务器和客户端,实现一些小程序。为了提高cpu的利用率,通过进程,线程实现并发服务器,或者通过select,poll,epoll I/O多路复用实现伪并发。这个阶段结束后,我做了一个基于TCP/IP的文件服务器。通过这个项目,将这个阶段所学的知识运用起来,让自己对这部分知识更加熟悉并能正确的运用。在做项目的时候也遇到了一些问题,主要是服务器客户端收发不一致,最终统一收发大小,调整两边收发最终解决了这个问题。

在C++学习阶段,这是我学习的第二门编程语言,在学习的过程中,相较于C我还是有些不习惯,比C语言的语法要求更加严格,对变量进行了保护,对代码进行了封装。C++的三大特性:封装、继承、多态,它兼容了C的特性。这个阶段主要学习了C++的基本语法、函数重载、继承、多态、异常处理、和STL标准模板库。通过学习C++我现在掌握其基本语法,能比较熟练的使用C++,但是缺乏对C++的大量的编程练习,这是我之后需要弥补的。

在QT阶段,图形界面应用编程开发。学完这里我们可以使用C++编程语言,编写出自己的图形化界面应用程序,最终打包成可执行程序软件。这会使得我们的程序的功能更加直观,用户也更加方便操作使用。Qt中我认为核心是信号与槽机制,这个机制是实现许多功能的前提,它可以将两个对象关联起来(进行通信),并执行对应的操作,最终实现相应的功能。这个阶段主要讲了一些基础控件的使用,三个主窗口的使用(mainWindow、QWidget、QDialog),Qt事件机制,文件操作,进程线程,网络通信 ,打包发布软件。通过对Qt的学习,我也是能做一些简单的小软件,熟悉以上学习的部分的使用。最后结束时,做了一个项目对这部分知识的巩固学习。我和另一个同学做了一个远程网络摄像头的一个软件,这个软件的功能主要是实现视频监控。Qt实现一个客户端,在linux系统搭建一个服务器,在客户端可以看到视频监控画面,服务器做数据的中转。学习到这个阶段自己有了,很大的提高。

后面的是关于底层硬件的学习,主要学习ARM,系统移植,以及驱动程序设计开发。

在ARM阶段,主要学习ARM的框架,ARM汇编指令,基于ARM的裸机编程。这里就直接和硬件打交道了,但是在此之前我们需要搭建好开发环境(交叉编译),然后就可以进行开发了。学习完了ARM框架和汇编指令后,进行裸机编程实现点灯,PWM波,看门狗定时器,ADC,中断,串口这些接口,还介绍了通信方式:SPI总线,IIC。在学习ARM指令的时候,异常向量表,以及几种模式的切换操作,理解时有些困难。这里需要自己多实践,记忆这些指令的使用,以及异常处理流程。在学习裸机编程时,每当写完程序看到硬件正常工作并实现功能时,自己内心是很开心的。当然有时候写完程序,硬件没有反应,这就需要多分析代码和查看芯片手册寻找问题,然后解决问题。学完这个阶段,我对硬件有了一定的了解,也能基于ARM编写裸机驱动程序,也是收获满满。

在系统移植阶段,主要学习操作系统的移植。一般是将操作系统移植到嵌入式开发板上,移植的流程为:uboot移植,内核移植,设备树,根文件系统。在实际开发中,为了方便会通过文件系统实现开发板与主机挂载,实现交叉编译(在主机上编译完程序后,再到开发板上执行)。uboot的作用是引导操作系统启动,这里主要对硬件做了一些初始化为启动系统做准备。内核移植需要到官网下载源码,然后根据需要编译内核代码,这里使用menuconfig命令 开启一个图形化界面选择内核模块进行编译,但是需要匹配开发板的芯片,不然内核代码是没有用的。在内核源码中找到设备树目录,找到对应芯片的设备树源码进行编译最后得到设备树文件。根文件系统的制作,通过 busybox来编译根文件系统,但是在编译完成后还需要根据需要创建必须的目录文件,否则将不能正常使用。这部分的学习主要是学习遇到问题和解决问题的方法。

在驱动程序设计开发阶段,主要学习了字符驱动开发的基本流程,上层一些功能函数需要底层驱动支持,临界资源保护操作,平台驱动。这里主要学习驱动的模块化编程,当写好驱动程序编译完成后,以模块的方式加载到内核,当不需要的时候从内核卸载驱动程序。通过对驱动的学习,了解到驱动的简单开发流程,能写简单的驱动程序。

在学习的过程中,我也有一些不足之处。遇到问题很少询问老师,这也是我一直以来就存在的问题。我知道询问老师,可以及时解决问题,老师也可以得到学习反馈。所以我认为这是我以后需要改进的。

以上就是我这近四个月对每个阶段学习的总结,总的来说,这段时间的学习使我专业技能掌握的更加熟练,整体能力得到提升。学习完后接下来就准备找工作了,在课程快要结束的时候,有就业老师指导简历制作,以及面试技巧。在我完成自己的简历后,我发给了自己的就业老师,就业老师指导我完善自己的简历。在以后的职业规划中,还是先打磨自己的技术,在这个行业站住脚,认真对待工作,积极面对生活。

嵌入式阶段性学习总结相关推荐

  1. 百度嵌入式深度学习框架Paddle-Mobile介绍

    本篇内容介绍嵌入式深度学习的应用场景.Paddle-Mobile的特性优势以及使用开发方法,预计阅读时间4分钟 嵌入式深度学习有哪些应用 深度学习技术已经在互联网的诸多方向产生影响,关于深度学习和神经 ...

  2. 20165310_获奖感想与Java阶段性学习总结

    获奖感想与Java阶段性学习总结 一.Learning By Doing ​ 在此之前,其实我并没有想到能够成为小黄杉的第一批成员之一,喜悦之余,也感受到了许多的压力.小黄杉一方面代表了老师对于我这一 ...

  3. 嵌入式全栈工程师_我花了半个月,整理出了这篇嵌入式开发学习指南(学习路线+知识点梳理)...

    不好意思久等了 这篇文章让小伙伴们久等了. 一年多以来,关于嵌入式开发学习路线.规划.看什么书等问题,被问得没有一百,也有大几十次了.但是无奈自己对这方面了解有限,所以每次都没法交代,搞得实在不好意思 ...

  4. linux嵌入式如何学习,嵌入式Linux要如何学习?嵌入式linux学习路线讲解

    在学习嵌入式linux之前,一定要有C语言基础,而且是越熟练越好.对于汇编基础来说没有那么重要,当然对于C语言来说起码能够熟练写出一个数组排序.输入数字求和之类的程序代码.当然如果不熟悉的话就需要多写 ...

  5. 嵌入式开发学习路线图

    之前看到别人在学习视频中的回复,觉得很全面,分享给大家 --------------我就是个搬运工 基础学习Ⅰ---Linux入门        目前嵌入式主要开发环境有 Linux.Wince等:L ...

  6. 嵌入式linux学习路线参考(LINUX学习者必看经典)

    整理了嵌入式linux学习路线供参考,希望对您有所参考价值! 一.linux入门 目前嵌入式主要开发环境有 Linux.Wince等:Linux因其开源.开发操作便利而被广泛采用.而Linux操作系统 ...

  7. 嵌入式开发学习笔记9-做一个好玩的LED闪烁

    嵌入式开发学习笔记9-做一个好玩的LED闪烁 前言 实际操作 程序功能 实现思路 程序源码 实现效果展示 前言 LED小灯闪烁实质是控制单片机上的I/O口,通过向I/O口循环输入高低电平,从而控制LE ...

  8. 原创丨嵌入式IMX6ULL学习指引-四大要点-简单也实用

    这个部分十分重要!初学者一定要认真看一遍! 我们主要讨论嵌入式技术学习方法,这里主要是针对嵌入式软件. 嵌入式技术是一门边缘科学(又称交叉科学),涉及的内容非常广泛,前几年很多学校,包括一流的大学都在 ...

  9. 嵌入式入门学习笔记1:资料收集

    嵌入式入门学习笔记1:资料收集 一:网上购买的500G资料 资料地址:https://pan.baidu.com/s/1siwOPjtcRCPZNikN4-Z2tw 密码:lhnr 二.嵌入式涉及的知 ...

最新文章

  1. python上海培训哪里比较好-python培训班上海哪里比较好?
  2. Golang基础之数组
  3. 声明 struct x1 { ...}; 和 typedef struct { ...} x2; 有什么不同?
  4. 兴业银行与第四范式开启AI平台加速模式 毫秒级信用卡反欺诈系统上线
  5. 数据结构——树的简单操作集合
  6. python3的print函数
  7. 安卓手机网页 字体垂直方向对齐_初学Excel办公软件字体对齐调整
  8. Spring Cloud CLI简介
  9. 【深度学习基础】张量的描述与深度学习常见张量
  10. 第一个python程序-判断登陆用户名和密码是否正确
  11. java的argv_Java:使用org.apache.commons.cli解析传入参数args,该包会协助解析argv参数...
  12. 电源大师课笔记 2.8
  13. 暑期作息时间表模板_2015中学生暑假作息时间表模板
  14. 期货高手:文华财经博易大师指标公式提取源码还原源码编写教程分享
  15. [Azure - VM] 解决办法:无法通过SSH连接VM,解决错误:This service allows sftp connections only.
  16. DIY 一个 JSON解析器。
  17. 初二数学勾股定理,八年级上册思维导图简单清晰
  18. 二叉树任意两节点之间的最短距离
  19. excel打印预览在哪里_易打标条码标签设计打印软件下载_易打标条码标签设计打印软件绿色版下载...
  20. 腾讯 X5 不能加载内核

热门文章

  1. LPWAN及高效弹性工业物联网核心技术方案
  2. nodejs微服务解决方案
  3. 王者荣耀服务器账号怎样注销,王者荣耀账号怎么注销
  4. 获取时间getTime
  5. 解决微信内置浏览器缓存问题的三个方法
  6. 请画出五个具有五个结点的无向图,使之分别满足: (1) 是欧拉图但不是汉密尔顿图。 (2) 既是欧拉图也是汉密尔顿图。 (3) 是完全图K5。 (4) 是棵树。 (5) 是汉
  7. 新司机的黑裙战斗机 篇一:硬件选购及开箱装机
  8. 搭建虚拟机及Linux基本命令
  9. 揭秘移动支付私有化部署的骗局
  10. 计算机网络(第7版)——谢希仁 习题3-33