Linux下开发怎样才算入门了?

记得大学学单片机的时候,也很想知道自己到底学的怎样了,到了什么水平,到处问人单片机开发怎么才算入门了,最后老师跟我说:能做一个万年历出来就算入门了在这里插入图片描述
于是用单片机控制显示器做一个万年历就成了我的目标,通过按键进行日期设置与时间调整,能区分闰年闰月,设置后的时间需要断电保存等。后面终于做出来了,并且显示方面我用了两种实现方式(数码管与LCD1602),当时欣喜若狂,自己心里面终于有底了,总算是入门了。
在这里插入图片描述
这个万年历在今天看来,是挺简单的,不过在当时也确实是一个比较全面的练手项目,到现在为止我仍然认为这是单片机的一个入门标准,因为它包括了输入设备(按键)、输出设备(数码管/LCD)、外设(RTC)等,其中需要对月份天数与闰年进行处理,对编程逻辑与算法有一定的考量,是一个小型系统了

后面往linux驱动开发方面发展,看了linux方面的一些视频与书籍,但是一直不得要领,学了后面忘了前面,兜兜转转也不知道自己到底学了些啥,反正是只见树叶不见森林,也开始问linux驱动开发怎样才算入门,也同样想像当年那样有一个明确的衡量标准,但是我搜遍了整个网络,身边的大佬也问了个遍,答案五花八门、莫衷一是,今天虽然我仍然是linux驱动开发这条道路上的一个新手,但是我已经在森林中找到了着力点,我觉得自己可以定义一个像当年单片机一样linux驱动开发的入门标准。
在这里插入图片描述
linux下驱动90%以上的都是字符设备驱动,所以我今天在这里提的标准也只是针对字符设备驱动,这个入门标准就是:在linux下用一个按键控制一个LED灯亮灭,同时为上层应用提供接口,在adb下能通过echo与cat对led进行亮灭控制与状态读取。

就这么简单,但开发涉及到的内容也是不少的,需要熟悉设备树的修改、字符设备那一套(设备号申请、注册、创建类、创建设备等)、platform设备驱动框架、pinctrl子系统、input子系统、中断的上半部/下半部、sysfs文件系统等。
在这里插入图片描述
虽然内容比较多,但是只要理解了linux下的那些框架,实现起来还是挺简单的,因为大部分工作linux已经给你做了,你需要做的就是理解它的框架,然后在它的框架上进行开发,实际代码不过几十行,实现部分可以参考这篇博文:
https://blog.csdn.net/maodewen11/article/details/116305322

最后说一下学linux驱动需要些什么条件,因为我听到不少朋友问过这个,以及自己在学的过程中一头雾水,有可能就是某些条件还不具备
1.C语言要扎实,像指针、结构体要运用自如
2.要有面向对象思想,linux内核以及驱动虽然都是C语言(少量汇编)写的,但是很多实现方式都是面向对象的
3.要有框架思维,linux是分层的,驱动与设备是分离的,里面的各种子系统都有自己的框架
4.需了解linux下的基本操作指令以及makefile或building system等
在这里插入图片描述
实际中linux驱动开发确实不容易,需要掌握的知识特别多,尤其像TP 、sound、 camera等这些驱动每个框架都相当复杂,像一些大厂每一块都是单独作为一个岗位,linux驱动开发不仅需要懂驱动,而且也要懂应用,写了驱动你要测试,然后系统关机充电的时候如果需要做点什么,也得需要你底层的应用来实现,像多线程,进程间通信、信号量、互斥锁的使用等,坑很大…

但是万丈高楼平地起,再牛逼的技术也抵不住SB似的坚持,加油!

注:本文图片均来源于网络,如有侵权,请联系作者删除!

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

东皇※太一

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值