截至今天,自己负责的一个项目算是告一段落,前前后后5个多月时间。
该项目是对公司设计的基于powerpc的处理器进行FPGA仿真阶段的软件验证,以及bootloader和kernel移植,以便芯片进行投产,主要完成的工作如下:
(1)调试环境的搭建
(2)处理器核功能验证,如异常 cache TLB等
(3)bootloader以及kernel中处理器基本外设驱动调试,如USB SPI I2C MAC SDIO UART等,kernel最小系统启动进控制台。
由于该项目处于预研阶段,并且FPGA仿真板数量不多,所以公司投入人力不大,只安排让我来做这个项目。
对我来说,莫大荣幸有机会来独立完成这样一项软硬件综合调试(各种硬件问题搞得我都快要奔溃了)
由于FPGA板很久不用了不稳定,加之各种硬件问题。折腾5个月的时间总算是将FPGA阶段工作完成。

但是在最后阶段USB调试通过,整个系统调试完成时,心里却有一种怅然若失的感觉,毕业工作之后一直萦绕我脑中的一个问题:
嵌入式开发调试,最后我到底学到了什么?

工作至今三年有余,翻看自己的csdn博客发现,刚工作时写博客总结,总是会关注一些具体代码细节,如C语言的变参宏定义 某个具体驱动的实现等。
工作2年后,更多的总结是一些有意思的代码框架,以及自己对问题的见解,如kernel的时钟机制,系统调用等。

这是一种进步。
但是今天我却感觉,对于嵌入式开发调试,学到的最重要的东西并不是上述这些知识,而是积累下来的思路和经验。

记忆力是有限的,我之前有过这样的疑惑:
做过一些项目,对于处理器及各种外设都接触调试过,但是再次调试还是需要对其datasheet,涉及的specification,以及软件代码进行复习。
做过项目的一些调试,写博客总结相关知识,但是一个月后,再看博客,跟看别人写的一样,顶多混过脸熟。

但是我却发现,虽然这样,但是我再次调试,却比第一次接触时要从容很多。

以最近两星期进行的一些外设模块调试为例。

调试USB,USB2.0协议我也只是脸熟,枚举过程大体清楚,但是也背不出来。
但是我知道遇到问题,首先去排查哪个过程出错,枚举?class driver? 硬件是否正常,示波器测phy给出的clock是否正确,phy的状态引脚是否正常。
实在不行,USB协议分析仪呗,抓下USB包,一个包一个包排查。

调试mac,TCp/IP协议我也只是脸熟,mac的datasheet我也得在熟悉下。
但是遇到问题,我知道首先确定phy自动协商完成了没,再将mac以及dma寄存器全部打印出来对比,将dma descriptor queue打印出来,根据状态描述符来查,怀疑硬件问题,可以采用mac以及phy的loopback模式来进行排除。总能将问题定位出来。

调试spi i2c uart,协议需要熟悉下。
但是遇到问题,spi 3根线,i2c 2根线,uart 4根线(调试串口,非全功能串口),示波器直接抓信号,对着协议和数据手册查,一定能找出问题。

等等。。

各种奇奇怪怪的问题,总能找到解决方法。

现在遇到问题不会像刚工作时那样手忙脚乱,因为我相信,各种调试工具,示波器,万用表,逻辑分析仪,协议分析仪,抓信号,量电压,软硬件结合调试,总会找到问题所在!

这些是在调试过程中积累下来的思路和经验,当然,工作3年初学者跟大牛的经验相比,还是有很长的路,需要努力学习。

但是却说明了,工作中学习知识之外,更多的是对解决问题思路和经验的积累。

所以以后就不要纠结于知识的遗忘,而应该注重解决问题思路的培养和经验的积累。

kerneler,不仅是为表明自己是内核系统开发者,更多的是希望自己成为一个追求事物本质的人!

嵌入式开发调试学习与思考相关推荐

  1. ARM嵌入式开发板学习路线指引

    如何入门嵌入式?嵌入式开发学习方法步骤  如何入门嵌入式?嵌入式开发学习路线指引  嵌入式开发就是指在嵌入式操作系统下进行开发,一般常用的系统有linux,android.  平台:Cortex-A9 ...

  2. 一位久经沙场的嵌入式er站在初学者角度谈谈嵌入式开发与学习的一些问题

    一位久经沙场的嵌入式er站在初学者角度谈谈嵌入式开发与学习的一些问题 在刚刚涉足嵌入式开发的时候,总想找到这样一本书,它可以解决我一些这样那样的疑惑.但是遗憾的是,到现在也没有这样一本书面世,而且我想 ...

  3. 嵌入式开发需要学mysql吗_学习嵌入式开发需要学习哪些课程?如何学习?

    针对很多的大学生嵌入式开发初学者来说,对嵌入式开发的学习还很迷茫.今天信盈达嵌入式培训老师给出参考建议:首先:嵌入式开发需要学习哪些课程?因为嵌入式开发的方向不同,所学习的内容会有所区别,但是无论是哪 ...

  4. 零基础学习嵌入式开发难吗?嵌入式开发需要学习什么

    对于零基础刚开始学习嵌入式的同学很多都会有这样的一个想法,嵌入式开发需要学习什么?如果是电子或计算机专业的人,相对来说,会比较容易入门;而非电子或计算机专业的人,应该先从基本的电路和C语言编程开始学. ...

  5. 嵌入式开发必须学习qt吗?

    作为一名嵌入式开发行者QT是必须要学的,也许现在不学以后也要学习的.一方面,在嵌入式初学阶段,也就是裸机开发,可能需要自己写上位机,QT就是一个做上位机的一个好用的工具,一般只要会c++学习QT一天就 ...

  6. 嵌入式开发需要学习哪些东西

    刚刚读到这篇文章,对于刚入门嵌入式来说挺有用的,献给向我一样正在迷茫,苦于没有头绪,没人指引的学习朋友们. 主要讨论下嵌入式技术学习方法,主要是针对嵌入式软件. 嵌入式技术是一门边缘科学(又称交叉科学 ...

  7. 嵌入式入门学习笔记6:[转]嵌入式开发需要学习哪些东西

    本文转自迅为开发板iTOP-4412开发板实战手册:http://www.topeetboard.com 刚刚读到这篇文章,对于刚入门嵌入式来说挺有用的,献给向我一样正在迷茫,苦于没有头绪,没人指引的 ...

  8. #杂谈 个人嵌入式开发的学习

    本人目前从事的是嵌入式软件开发的相关工作.这是一个关于个人做项目时用过的开发工具的杂谈,仅是为了记录学习经历,同时也为和我有同样瞎搞东西的爱好者提供一个学习思路. 前言 我的技术栈: 下面介绍一下我用 ...

  9. 嵌入式开发/调试辅助工具

    开发辅助工具开发环境组成通常开发环境由三部分组成: 构建环境:包括代码编写,程序编译,版本控制等功能. 调试环境:用于定位问题的辅助工具集 测试环境:用于验证目标程序是否满足用户要求的显性需求和隐性需 ...

最新文章

  1. SAP QM 执行事务代码QA11 报错- Selected set code does not exist, or data entered is incomplete-
  2. 指针和数组的区别是什么?
  3. 查看文档(API) (NSString)
  4. webpack+vue+mint-ui 实现上拉加载更多(Loadmore组件)
  5. wince工业平板电脑_如何防止工业平板电脑温度过高?
  6. 基于Redis优化购物车 - 添加商品
  7. php session和cookie区别,php中session和cookie的区别是什么?
  8. 2013递归求解单链表中的结点个数(C++,附递归函数思路讲解与手绘图)
  9. pythonif语句如何循环播放_python – 循环播放文本,一次3个字符
  10. 【英语学习】【Daily English】U07 Restaurant L03 What do you recommend?
  11. Android Activity(一)Activity间的跳转
  12. Java开源大全 网站
  13. 心理学和管理学的一些效应学习
  14. 图像处理之LSB替换隐写算法的实现
  15. 计算机网络由 子网,计算机网络系统是由通信子网和资源子网组成的。()
  16. 盘点百度开放云编程马拉松八大亮点
  17. 吐血整理出来的大数据知识点,你掌握多少?
  18. 海外市场交易执行策略的实践
  19. static关键字是什么意思?java中是否可以覆盖一个private方法或者static方法
  20. 【深度学习】大牛的《深度学习》笔记,Deep Learning速成教程

热门文章

  1. 华为2011上机笔试题2+参考程序
  2. Python--day63--添加书籍
  3. Java中的JDBC是什么?
  4. Django 的操作
  5. 在浏览器中输入网址后的流程
  6. CentOS6.5下安装Apache2.4+PHP7
  7. 微信公众号开发之网页授权认证获取用户的详细信息,实现自动登陆
  8. codevs2693 上学路线(施工)
  9. angularjs ngTable -Custom filter template-calendar
  10. Lync Server 2010的部署系列(四) outlook无法加入联机会议