cfnet用于嵌入式_做嵌入式驱动的,你一定要挺住!
搞嵌入式驱动开发一年多了,项目做的不少:
从网络驱动到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用于嵌入式_做嵌入式驱动的,你一定要挺住!相关推荐
- neo4j 嵌入式_在嵌入式Neo4j中使用Neo4j浏览器
neo4j 嵌入式 有时,您有一个应用程序以嵌入式模式使用Neo4j,但还需要使用Neo4j Web浏览器来处理图形. 由于一次最多只能从一个进程访问数据库,因此在嵌入式Neo4j应用程序运行时尝试启 ...
- sm总线控制器找不到驱动程序_细说嵌入式系统下的驱动程序设计
嵌入式系统驱动程序的开发有别于WIndows或Linux.后者除了必须了解新设备的硬件特性,把控制硬件的程序尽快完成之外,还需要设法让驱动程序符合Windows或Linux的规定(大且复杂的架构).但 ...
- 做嵌入式linux驱动的前途何在
做嵌入式linux驱动的前途何在? 或者说,怎么才能做好这一行? 我做嵌入式驱动开发已经一年多了,感觉没学到多少东西. 从网络驱动到CAN驱动.从dataflash驱动到NAND/NOR FLASH驱 ...
- ios开发转行_做了几年嵌入式,想转服务器开发,该学什么?
我是学通信工程专业毕业的,大学毕业后做的也是嵌入式相关的工作.开始做嵌入式linux应用开发,驱动开发,后来也做基于STM32单片机的开发,产品都是无线通信设备.后来机缘巧合在2011年,移动互联网大 ...
- linux 库全局变量_学习嵌入式,做底层还是应用好?嵌入式Linux底层要掌握哪些技能?...
很多学习嵌入式的新人.工程师,在学习到半途中,总会感觉到迷茫,不知道自己从哪方面入手.进阶,也不知道自己目前处于学习的哪个层次,不清楚往后从哪方面来提升自己.针对这些工程师常见的情况,今天编者就以一个 ...
- 为什么很多人在说做嵌入式驱动没前途?搜工作还是发现有很多招嵌入式的职位啊,linux驱动就真的没有前途吗?
认为做嵌入式驱动没前途的人是因为,相比过去而言,嵌入式驱动的行业优势在降低. 如果时间倒推十年,那时候是嵌入式最风光的时代,而智能手机还不怎么成气候,嵌入式Linux,或者其它的嵌入式平台(比如VxW ...
- 嵌入式和非嵌入式_我如何向非技术同事解释词嵌入
嵌入式和非嵌入式 数据科学 (Data Science) Word embeddings. 词嵌入. What are they? What do they look like? How are th ...
- 【嵌入式Linux】嵌入式Linux驱动开发基础知识之设备树模型
文章目录 前言 1.设备树的作用 2.设备树的语法 2.1.设备树的逻辑图和dts文件.dtb文件 2.1.1.1Devicetree格式 1DTS文件的格式 node的格式 properties的格 ...
- 做嵌入式,如果爱就全心投入,否则就放弃!
不少人或许还并不是很清晰地知道什么是嵌入式,IEEE对它定义的原文是:DevicesUsedtoControl,MonitororAssisttheOperationofEquipment,Machi ...
最新文章
- GPT-2仅是“反刍”知识,真正理解语言还要改弦更张
- Java中的图像锐化操作
- 山东华为服务器安装系统,山东云服务器平台安装
- 【THUSC2018】史莱姆之友【长链剖分】【链分治NTT】
- [你必须知道的.NET]第十五回:继承本质论
- 随笔写一个简单的爬虫
- list stream().forEach
- 微信联合苹果探索iOS系统的暗黑模式;iPhone SE 2于3月31日发布;Kotlin 1.3.70发布 | 极客头条...
- mysql数据库表无法显示_【MySQL8.0.18】IDEA 连接数据库无法显示数据表
- CVPR2022 | 移动端手部三维重建
- 关于PostThreadMessage以及创建线程消息队列
- 简单的物流项目实战,WPF的MVVM设计模式(二)
- 《算法》第四版入门准备
- java 读取txt乱码问题_Java读取txt文档乱码解决方法
- C++ Primer 第5版 练习5.14
- 将QQ语音的slk格式转化为wma
- c#将byte转为int_C# int转byte[],byte[]转int
- python手机号码替换代码_手机号码中间部分替换成星号
- CSS属性之relative
- 仓库如何盘点?使用盘点机盘点有什么好处?仓库盘点方法?
热门文章
- 解决方法WindowsError: [Error 193] %1 is not a valid Win32 application
- Windows10下搭建Java环境(最新教程)
- LaTeX中警告类型及说明
- 【HDU6667】Roundgod and Milk Tea【贪心】
- Spring启动执行流程梳理
- Linux上安装Julia-1.1
- SQL SERVER中用户定义标量函数(scalar user defined function)的性能问题
- linux自动删除30天前的日志文件
- 【BZOJ 2119】 2119: 股市的预测 (后缀数组+分块+RMQ)
- centos 下 django 1.8 配置好后 admin 后台无法显示 样式解决办法