0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

从网络驱动到CAN驱动

电子工程技术 来源:电子工程技术 2020-06-08 16:42 次阅读

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

网络驱动到CAN驱动、从Dataflash驱动到NAND/NOR FLASH驱动、从CF/IDE驱动到各种嵌入式文件系统、从LCD/VGA驱动到音频驱动、从IAR到ADS再到GCC、Ucoslinux、从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, USBSDIO等等,好多未知领域呢。在问题还没有解决之前很难说清是哪里不对了。

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

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

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

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

你在做驱动的时候,肯定会用到与内核相关的东西,或者需要和内核中的某些模块配合,这样你也要理解内核的某些部分是如何实现的,最后,你应该可以很好的掌握linux的内核整体框架是什么。

这些都是进步,都是在你一次又一次的开发中需要总结的东西,如果你不总结,永远都是从头开始(或者说永远都是还没看懂别人代码为什么这么做的时候,就去改它,然后可以工作了),就完事了,这样你永远也不可能提高,最后你就有了现在的这种感觉,觉得自己什么都不是,什么都不懂。

还有一点要说明的,现在有许多人搞linux开发,却不去用linux系统做为自己工作的平台,在这种情况下,你很难理解linux内核的实现机制,以及为什么要采用这种方式实现。

你都没用过linux系统,就想去实现一个与linux运行机理相符合的项目,这是不可能的。就是你这个项目成功了,它也肯定不是最优的,或者是不符合linux的使用习惯的(包括内核的扩展和应用程序的实现)。

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

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式
    +关注

    关注

    5076

    文章

    19050

    浏览量

    303968
  • Linux
    +关注

    关注

    87

    文章

    11240

    浏览量

    209055
  • 应用程序
    +关注

    关注

    37

    文章

    3250

    浏览量

    57638

原文标题:搞嵌入式驱动开发一年多了,感触颇多......

文章出处:【微信号:EngicoolArabic,微信公众号:电子工程技术】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    驱动到空调、机器人应用,剖析格力的电机布局

    。比如,在空调中,电机是核心的零部件,因此受到格力电器等公司的广泛重视,并将其作为核心技术储备进行研发和布局。   不过,随着企业生态扩充和链式布局,目前格力电器的电机布局应该贯穿驱动到应用整个链条,形成了完
    的头像 发表于 10-09 00:10 6242次阅读
    <b class='flag-5'>从</b><b class='flag-5'>驱动到</b>空调、机器人应用,剖析格力的电机布局

    北京迅为RK3568开发板嵌入式学习之Linux驱动全新更新-CAN+

    北京迅为RK3568开发板嵌入式学习之Linux驱动全新更新-CAN+
    的头像 发表于 09-04 15:29 446次阅读
    北京迅为RK3568开发板嵌入式学习之Linux<b class='flag-5'>驱动</b>全新更新-<b class='flag-5'>CAN</b>+

    EtherCAT站转CAN协议网关(CAN转EtherCAT)

    EtherCAT的数据给CAN设备使用。 应用广泛:应用于支持CAN接口的变频器、步进电机、伺服驱动器、仪表、PLC、DCS、FCS等等。在自动化仓库和物流输送系统中,各类搬运设备和传感器可能使用
    的头像 发表于 08-30 11:30 430次阅读
    EtherCAT<b class='flag-5'>从</b>站转<b class='flag-5'>CAN</b>协议网关(<b class='flag-5'>CAN</b>转EtherCAT)

    虹科技术 全新Linux环境PCAN驱动程序发布!CAN/CAN FD通信体验全面升级!

    全新8.17.0版本的PCAN-Linux驱动程序正式发布,专为CANCAN FD接口量身打造。无论是CAN 2.0 a/b还是CAN F
    的头像 发表于 08-29 09:36 415次阅读
    虹科技术 全新Linux环境PCAN<b class='flag-5'>驱动</b>程序发布!<b class='flag-5'>CAN</b>/<b class='flag-5'>CAN</b> FD通信体验全面升级!

    【龙芯2K0300蜂鸟板试用】CAN接口驱动板设计、CANFD测试、CAN C++程序驱动测试

    绘制接口板 3k0300支持4路CANFD,原理图来看,只是把TX和RX放出来了,并没有差分收发器IC。 为了测试CAN功能,必须先做一个驱动板。 两路CANFD挤在一个6P
    发表于 08-25 21:09

    EtherCAT站转CAN总线协议转换网关(JM-ECT-CAN

    来自EtherCAT的数据给CAN设备使用。 应用广泛:应用于支持CAN接口的变频器、步进电机、伺服驱动器、仪表、PLC、DCS、FCS等等。在自动化仓库和物流输送系统中,各类搬运设备和传感器可能使用
    的头像 发表于 08-15 17:38 295次阅读
    EtherCAT<b class='flag-5'>从</b>站转<b class='flag-5'>CAN</b>总线协议转换网关(JM-ECT-<b class='flag-5'>CAN</b>)

    Profinet站转CAN协议转换网关(JM-PN-CAN

    Profinet网络中。 捷米特JM-PN-CAN连接到Profinet总线中做为站使用,连接到CAN总线中根据节点号进
    的头像 发表于 08-12 14:28 260次阅读
    Profinet<b class='flag-5'>从</b>站转<b class='flag-5'>CAN</b>协议转换网关(JM-PN-<b class='flag-5'>CAN</b>)

    请问esp32s3怎么添加nt35510驱动到新工程中?

    请问esp32s3怎么添加nt35510驱动到新工程中
    发表于 06-27 06:30

    CAN分析仪的驱动程序如何正确安装

    新手在使用USB转CAN时,可能会遇到一些常见问题。以下是一些常见的问题及其解决方法的清晰归纳: 1.驱动安装问题 问题描述:CAN分析仪的驱动程序没有正确安装,导致设备与计算机无法正
    的头像 发表于 06-03 18:07 1210次阅读

    CAN总线驱动器代替RS485总线驱动器是否可行?

    CAN总线驱动器代替RS485总线驱动器是否可行?不知道哪位大侠有实践过。如果可以进行替换,能否提供些资料
    发表于 05-17 07:56

    全新Linux环境PCAN驱动程序发布!CAN/CAN FD通信体验全面升级!

    全新8.17.0版本的PCAN-Linux驱动程序正式发布,专为CANCAN FD接口量身打造。无论是CAN 2.0 a/b还是CAN F
    的头像 发表于 04-19 10:38 871次阅读

    CAN(控制器局域网)驱动扩展评估板数据手册

    电子发烧友网站提供《CAN(控制器局域网)驱动扩展评估板数据手册.rar》资料免费下载
    发表于 04-14 15:29 0次下载
    <b class='flag-5'>CAN</b>(控制器局域网)<b class='flag-5'>驱动</b>扩展评估板数据手册

    驱动电机转速传感器工作示意图

    驱动电机速度传感器检测驱动电机的旋转速度和旋转方向(图25),作为控制驱动驱动电机的三相交流电的基本信息。输出信号输入到驱动电机控制模块,
    发表于 03-22 10:18 919次阅读
    <b class='flag-5'>驱动</b>电机转速传感器工作示意图

    浅析网络变压器的电流驱动方式

    网络变压器的驱动方式主要分为电压驱动和电流驱动两种。其中,电压驱动是指变压器的中心抽头接电源,而电流驱动
    的头像 发表于 03-05 17:20 1778次阅读
    浅析<b class='flag-5'>网络</b>变压器的电流<b class='flag-5'>驱动</b>方式

    CAN控制器、CAN收发器、CAN驱动器的区别是什么?

    CAN总线结构中,CAN控制器、CAN收发器和CAN驱动器是三个不同的组件,各自具有特定的功能和作用。
    的头像 发表于 01-30 09:44 4028次阅读
    <b class='flag-5'>CAN</b>控制器、<b class='flag-5'>CAN</b>收发器、<b class='flag-5'>CAN</b><b class='flag-5'>驱动</b>器的区别是什么?