搞嵌入式驱动开发一年多了,项目做的不少:

从网络驱动到CAN驱动、从Dataflash驱动到NAND/NOR FLASH驱动、从CF/IDE驱动到各种嵌入式文件系统、从LCD/VGA驱动到音频驱动、从IAR到ADS再到GCC、Ucos到linux、从I2C总线到SPI再到SSC以及TCP/IP协议。

但感觉并没有学到什么东西,除了一个字:累!

老实说这些项目,很少有驱动是自己动手写的,基本都是找来相近的代码改过来的。

有时候感觉自己现在做什么都是半桶水,对自己超没信心了。

对linux也是一知半解,对启动脚本,系统配制,shell、makefile以及应用程序编程,都了解一点点但没有一样精通的;工作主要使用C语言,可是有时候写个测试程序也是一堆错误;英语自感觉还不错,但是有时候看datasheet也会发懵!

生活艰难,工资又低,想提升自己却又谜茫不已。

建议:

1) 为了今后的发展,你除了考虑广度以外,更重要的是注意知识的深度。

譬如,做过网络驱动,那么是不是只停留在会写驱动的表层上,有没有对Linux内核的网络结构,TCP/IP协议作过深入的了解。

2) 在Linux下开发很多时候都要利用现成的东西,没必要什么都自己搞。关键是变成自己的驱动后是否了解原作者编写时背后的一些东西。 你应该不止是简单的让它工作。写驱动的时候就要考虑它的性能问题,并给出测试的方法(当然可以利用现成的许多工具,譬如测试网络性能的netperf等)。

当你写过Flash驱动,可能会知道Flash的性能有时候有多重要。

3) C程序的自我修炼,是否考虑到软件工程方面的一些东西,程序的可维护性和扩展性,譬如LCD驱动,是不是从Sharp到NEC的只需要集中修改很少的几个地方?

对于不同品牌的Flash,如果使得Flash的驱动做的更具有灵活性。

4) 如果有时间结余,可以关注Linux内核的发展。譬如LCD的驱动有没有考虑到V4L2通用架构,譬如网络驱动用到了NAPI了吗?当然在此之前,假设已经对LDD3, ULK2理解的比较熟了。

5) 现在所作的这些驱动还算不得非常核心的东西。如果你想有更好的发展,可以考虑往audio,video,net方面发展,你应该多注意这个行业需要什么样的人才,上述每一项都需要很厚的底蕴,譬如video,需要了解MPEG4, H264等,怎么也要个1到2年才能算个入行阿,所以我建议不要只顾闷头做东西,要适当关注目前的一些应用。

6) 对硬件知识的补给,做嵌入式Linux这一行不可能不读硬件的Spec,如果你对硬件的工作机制理解的比较透,会有助你写出性能好的驱动程序。

顺便提一点,适时的提高你的英语水平,对你的职业生涯绝对有帮助(不要等需要的时候再补,来不及)。

7) 如果有时间,平时注意对Linux应用程序编写的了解/积累,也将有助于你写出很好功能很好的驱动程序。

8) 永远不能以为自己做了很多东西,就驱动而言,像TVIN/TVOUT, USB, SDIO等等,好多未知领域呢。在问题还没有解决之前很难说清是哪里不对了

有时候是datasheet里面的一句话没有注意,还有好几次调不出来最后查到是PCB的问题,所以有时候特别晕。

此外,其实如这位网友做的这些东西,在不懂的人看来,好像很高深,不能逾越,但是任何东西都一样,你要不断的进步,第一次做某个驱动和第二次再做这个驱动,你应该获得更多,如果你没有这种感觉,那你就是白做了。

比如,你第一次写Linux驱动和你第十次写Linux驱动,你应该有不同的感觉,更甚者,也许你有了一套很好的框架,无论任何驱动,你只要套用框架,然后针对不同的datasheet做点修改就可以了。

如果你能自己总结这些框架并把它分享给大家,那么你的价值又高了不少。

你在做驱动的时候,肯定会用到与内核相关的东西,或者需要和内核中的某些模块配合,这样你也要理解内核的某些部分是如何实现的,最后,你应该可以很好的掌握linux的内核整体框架是什么。这些都是进步,都是在你一次又一次的开发中需要总结的东西,如果你不总结,永远都是从头开始(或者说永远都是还没看懂别人代码为什么这么做的时候,就去改它,然后可以工作了),就完事了,这样你永远也不可能提高,最后你就有了现在的这种感觉,觉得自己什么都不是,什么都不懂。

还有一点要说明的,现在有许多人搞linux开发,却不去用linux系统做为自己工作的平台,在这种情况下,你很难理解linux内核的实现机制,以及为什么要采用这种方式实现。就如你到现在还不懂Linux的启动流程一样。这是很危险的。你都没用过linux系统,就想去实现一个与linux运行机理相符合的项目,这是不可能的。就算你这个项目成功了,它也肯定不是最优的,或者是不符合linux的使用习惯的(包括内核的扩展和应用程序的实现)。

所以,最后想说的是,你一定要定期总结,总结你这段时间做了什么,你从中得到了什么,为了你以后可以更好的做好类似的工作,你应该去看些其它的什么东西;二是你一定至少要在工作的开发环境中使用linux作为你的平时工作平台,而不要使用虚拟机和服务期,因为你只有完全了解了linux的使用,你才可以为它开发符合它规则的项目。

cfnet用于嵌入式_做嵌入式驱动的,你一定要挺住!相关推荐

  1. neo4j 嵌入式_在嵌入式Neo4j中使用Neo4j浏览器

    neo4j 嵌入式 有时,您有一个应用程序以嵌入式模式使用Neo4j,但还需要使用Neo4j Web浏览器来处理图形. 由于一次最多只能从一个进程访问数据库,因此在嵌入式Neo4j应用程序运行时尝试启 ...

  2. sm总线控制器找不到驱动程序_细说嵌入式系统下的驱动程序设计

    嵌入式系统驱动程序的开发有别于WIndows或Linux.后者除了必须了解新设备的硬件特性,把控制硬件的程序尽快完成之外,还需要设法让驱动程序符合Windows或Linux的规定(大且复杂的架构).但 ...

  3. 做嵌入式linux驱动的前途何在

    做嵌入式linux驱动的前途何在? 或者说,怎么才能做好这一行? 我做嵌入式驱动开发已经一年多了,感觉没学到多少东西. 从网络驱动到CAN驱动.从dataflash驱动到NAND/NOR FLASH驱 ...

  4. ios开发转行_做了几年嵌入式,想转服务器开发,该学什么?

    我是学通信工程专业毕业的,大学毕业后做的也是嵌入式相关的工作.开始做嵌入式linux应用开发,驱动开发,后来也做基于STM32单片机的开发,产品都是无线通信设备.后来机缘巧合在2011年,移动互联网大 ...

  5. linux 库全局变量_学习嵌入式,做底层还是应用好?嵌入式Linux底层要掌握哪些技能?...

    很多学习嵌入式的新人.工程师,在学习到半途中,总会感觉到迷茫,不知道自己从哪方面入手.进阶,也不知道自己目前处于学习的哪个层次,不清楚往后从哪方面来提升自己.针对这些工程师常见的情况,今天编者就以一个 ...

  6. 为什么很多人在说做嵌入式驱动没前途?搜工作还是发现有很多招嵌入式的职位啊,linux驱动就真的没有前途吗?

    认为做嵌入式驱动没前途的人是因为,相比过去而言,嵌入式驱动的行业优势在降低. 如果时间倒推十年,那时候是嵌入式最风光的时代,而智能手机还不怎么成气候,嵌入式Linux,或者其它的嵌入式平台(比如VxW ...

  7. 嵌入式和非嵌入式_我如何向非技术同事解释词嵌入

    嵌入式和非嵌入式 数据科学 (Data Science) Word embeddings. 词嵌入. What are they? What do they look like? How are th ...

  8. 【嵌入式Linux】嵌入式Linux驱动开发基础知识之设备树模型

    文章目录 前言 1.设备树的作用 2.设备树的语法 2.1.设备树的逻辑图和dts文件.dtb文件 2.1.1.1Devicetree格式 1DTS文件的格式 node的格式 properties的格 ...

  9. 做嵌入式,如果爱就全心投入,否则就放弃!

    不少人或许还并不是很清晰地知道什么是嵌入式,IEEE对它定义的原文是:DevicesUsedtoControl,MonitororAssisttheOperationofEquipment,Machi ...

最新文章

  1. GPT-2仅是“反刍”知识,真正理解语言还要改弦更张
  2. Java中的图像锐化操作
  3. 山东华为服务器安装系统,山东云服务器平台安装
  4. 【THUSC2018】史莱姆之友【长链剖分】【链分治NTT】
  5. [你必须知道的.NET]第十五回:继承本质论
  6. 随笔写一个简单的爬虫
  7. list stream().forEach
  8. 微信联合苹果探索iOS系统的暗黑模式;iPhone SE 2于3月31日发布;Kotlin 1.3.70发布 | 极客头条...
  9. mysql数据库表无法显示_【MySQL8.0.18】IDEA 连接数据库无法显示数据表
  10. CVPR2022 | 移动端手部三维重建
  11. 关于PostThreadMessage以及创建线程消息队列
  12. 简单的物流项目实战,WPF的MVVM设计模式(二)
  13. 《算法》第四版入门准备
  14. java 读取txt乱码问题_Java读取txt文档乱码解决方法
  15. C++ Primer 第5版 练习5.14
  16. 将QQ语音的slk格式转化为wma
  17. c#将byte转为int_C# int转byte[],byte[]转int
  18. python手机号码替换代码_手机号码中间部分替换成星号
  19. CSS属性之relative
  20. 仓库如何盘点?使用盘点机盘点有什么好处?仓库盘点方法?

热门文章

  1. 解决方法WindowsError: [Error 193] %1 is not a valid Win32 application
  2. Windows10下搭建Java环境(最新教程)
  3. LaTeX中警告类型及说明
  4. 【HDU6667】Roundgod and Milk Tea【贪心】
  5. Spring启动执行流程梳理
  6. Linux上安装Julia-1.1
  7. SQL SERVER中用户定义标量函数(scalar user defined function)的性能问题
  8. linux自动删除30天前的日志文件
  9. 【BZOJ 2119】 2119: 股市的预测 (后缀数组+分块+RMQ)
  10. centos 下 django 1.8 配置好后 admin 后台无法显示 样式解决办法