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

2023-10-27

记得大学学单片机的时候,也很想知道自己到底学的怎样了,到了什么水平,到处问人单片机开发怎么才算入门了,最后老师跟我说:能做一个万年历出来就算入门了在这里插入图片描述
于是用单片机控制显示器做一个万年历就成了我的目标,通过按键进行日期设置与时间调整,能区分闰年闰月,设置后的时间需要断电保存等。后面终于做出来了,并且显示方面我用了两种实现方式(数码管与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似的坚持,加油!

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux下开发怎样才算入门了? 的相关文章

随机推荐

  • 时间序列预测——时序卷积网络(TCN)

    本文展示了使用时序卷积网络 TCN 进行时间序列预测的全过程 包含详细的注释 整个过程主要包括 数据导入 数据清洗 结构转化 建立TCN模型 训练模型 包括动态调整学习率和earlystopping的设置 预测 结果展示 误差评估等完整的时
  • 终于支持 markdown 格式了

    print Hello MD
  • Pytorch虚拟环境搭建、训练unet、vit、yolov3

    一 搭建虚拟环境 手把手教你在win10下搭建pytorch GPU环境 Anaconda Pycharm 老潇的摸鱼日记 博客园 cnblogs com https www cnblogs com victorxiao p 1351225
  • 华为奇葩面试题登上热搜!「一头牛重800公斤一座桥承重700公斤,请问牛怎么过桥?」

    今日 知乎上有一道华为公司面试题 一头牛重800公斤一座桥承重700公斤问牛怎么过桥 目前这个话题已经登上了知乎热搜第三 这个问题到底是互联网大厂奇葩亦或是常规操作 这到底是道德的沦丧还是 下面就一起来看看神通广大的知乎热心网友是怎么解答的
  • 【基于python实现UI自动化】1.0 selenium工具介绍

    基于python实现UI自动化 1 0 selenium工具介绍 Selenium介绍 Selenium的发展 Selenium 1 Selenium 2 Selenium 3 Selenium 4 Selenium介绍 Selenium是
  • 【STM32WLE5之LoRa# 系列2、易智联LM401 评估板PingPong工程移植】

    STM32WLE5之LoRa 系列2 易智联LM401 评估板PingPong工程移植 前言 一 开发环境 1 STM32CubeMX与STM32CubeIDE软件安装 2 下载STM32WL固件库 二 硬件平台 三 PingPong例程的
  • 工厂模式(创建型)

    工厂模式有 简单工厂模式 工厂方法模式 抽象工厂模式 简单工厂模式 简单工厂模式的方法为 通过一个工厂 工厂里面有一个创建的函数 通过输入type 通过switch的匹配 匹配成功的话 创建相应的产品 没有的话 返回nullptr 具体的结
  • Spring cache

    文章目录 Spring cache 简单使用 注解缓存 Cacheable 键生成器 自定义的键生成器 带条件的缓存 CachePut CacheEvict Caching CacheConfig 使用Spel表达式 使用xml配置缓存 以
  • win10如何添加开机自己启动软件

    win10添加开机自启动软件的方法 Win10添加自动运行软件的方法 打开C Users 用户 AppData Roaming Microsoft Windows Start Menu Programs Startup 注意此处的用户是具体
  • 趣链科技解读区块链技术及其产业应用

    陀螺公开课 是定位于区块链行业的线上精品教育课程 以视频的形式传递行业思考 内容板块包括技术前沿 产业案例 领袖视野 学术思想 名人演讲等 通过邀请行业领域专家线上讲课 及开放高质量视频投稿 为用户提供优质的区块链学习内容 陀螺公开课第二期
  • linux-bash基础特性-通配符

    globbing 通配符 文件名通配 整体文件名匹配 而非部分 匹配模式 元字符 匹配任意长度的任意字符 ab ab开头的单词 ab 包含ab的单词 ab ab结尾的单词 a b 包含a b的单词 匹配任意单个字符 ab ab开头的三个字符
  • Ubuntu Linux操作系统

    Ubuntu Linux操作系统 Ubuntu是一个Linux发行版的操作系统软件 这意味着它运行在使用Linux的应用程序 内核和库 Ubuntu的开发和由Canonical公司 即成立由马克 沙特尔沃思资助的南非公司赞助 的Ubuntu
  • Android自定义权限permission

    http www tuicool com articles BZZrimu ndroid是一种特权分隔的操作系统 在Android上运行的每个应用程序都具有各自独立的系统标识 Linux用户ID和组ID 系统各部分有不同的身份标识 因此 L
  • 五眼网络安全机构联合发布事件响应指南

    聚焦源代码安全 网罗国内外最新资讯 编译 奇安信代码卫士团队 位于澳大利亚 加拿大 新西兰 英国和美国的网络安全机构联合发布关于检测恶意活动和事件响应的安全建议 报告指出 最佳实践事件响应程序始于对工件 日志和数据的收集及其删除分析 之后在
  • 数据结构---求用二进制表示的数字最右侧的1的位置

    public static void main String args int e 700 int rightvalue e e 1 int rightPosition 0 for int i rightvalue i gt 1 i i g
  • elasticsearch collapse折叠聚合

    目前经验 折叠只能用于筛选数据 不能进行聚合 需要聚合 自己在内存中聚合 from elasticsearch import Elasticsearch def query 2coll index name query size 10000
  • vue3组合式api bus总线式通信

    vue2中可以创建一个 vue 实例 做为 总结来完成组件间的通信 但是在vue3中 这种方法是不能使用的 因为vue3中main js中 使用的createApp 没有机会再写 new Vue了 但是我们可以使用 mitt 的插件来解决这
  • Xposed入门教程

    2019年8月27日16时51分47秒 以前一直没机会接触Android Hook方式的逆向 今天有空试了下 以前也很少写这种东西 今天第一次 认真写下 记录一下 准备 准备搞太极的 但是Xposed都不会 不好搞 所以就先来搞Xposed
  • Selenium自动化测试基于Python

    目录 简介 第一个Selenium例子 unitt 基本认识 unitt增加测试用例 unitt设置同一个开头和结尾 unitt断言 unitt测试套件 unitt生成HTML格式的测试报告 unitt定位 WebDriver功能 一 We
  • Linux下开发怎样才算入门了?

    记得大学学单片机的时候 也很想知道自己到底学的怎样了 到了什么水平 到处问人单片机开发怎么才算入门了 最后老师跟我说 能做一个万年历出来就算入门了 于是用单片机控制显示器做一个万年历就成了我的目标 通过按键进行日期设置与时间调整 能区分闰年