随笔分类 - Linux
摘要:前言 参考 设备树 8. Linux设备树 Linux3.x 以后引入了设备树,用于描述一个硬件平台的板级细节。 8.1 设备树简介 设备树可以被 bootloader(uboot)传递到内核,内核从中获取设备树中的硬件信息。 设备树的两个特点: 一:以 树状结构 描述硬件资源。 二:设备树可以像头
阅读全文
摘要:前言 1. ifconfig Linux ifconfig 命令用于显示或设置网络设备。 1.1 语法 ifconfig [网络设备][down up -allmulti -arp -promisc][add<地址>][del<地址>][<hw<网络设备类型><硬件地址>][io_addr<I/O地
阅读全文
摘要:前言 链接: 李柱明博客:https://www.cnblogs.com/lizhuming/ 区分设备驱动模型和平台设备驱动模型。 设备驱动模型 可以理解为 总线、设备、驱动。 平台设备驱动模型 就是那些 Linux 内核管理没有物理总线(即是不需要特殊时序控制的设备)(也是Linux内核没有自动
阅读全文
摘要:前言 参考: 李柱明博客 本文主要记录 linux 环境变量配置的生命周期。 如,修改环境变量 PATH 是手动指定还是临时生效或是永久生效。 1. 修改环境变量 1.1 手动指定 如 ARCH 和 CROSS_COMPILE: 直接在 make 命令后添加即可,如: lzm@lzm-machine
阅读全文
摘要:前言 6. 总线-设备-驱动 总线-设备-驱动 又称为 设备驱动模型。 6.1 概念 总线(bus):负责管理挂载对应总线的设备以及驱动; 设备(device):挂载在某个总线的物理设备; 驱动(driver):与特定设备相关的软件,负责初始化该设备以及提供一些操作该设备的操作方式; 类(class
阅读全文
摘要:前言 5. 分离分层 本章节记录实现LED驱动的大概步骤,且编程框架实现分离分层。 分离分层: 上层:系统 相关。如模块注册于注销。 下层:硬件操作。如提供 file_operations 。分离: 设备。提供板卡信息,如使用哪一个引脚。 驱动。引脚的具体操作。 以下以 LED 为例。 5.1 回顾
阅读全文
摘要:前言 参考: 《IMX6ULLRM(6ULL用户手册).pdf》 李柱明博客:https://www.cnblogs.com/lizhuming/ 本文链接:https://www.cnblogs.com/lizhuming/p/14588172.html 4. LED芯片手册分析 本章节记录实现L
阅读全文
摘要:前言 以野火i.M 6U为例 3. 字符设备驱动 需要明确的是模块和驱动是两回事。 本笔记开始记录驱动的相关知识。 3.1 Linux设备分类 Linux设备可分为三:字符设备、块设备和网络设备。 网络设备:是一种特殊设备,它并不存在于/dev下面,主要用于网络数据的收发。 Linux系统将设备分别
阅读全文
摘要:前言 以野火i.M 6U为例 2. 内核模块 本章节笔记主要理解内核模块代码框架和原理,分析一个简单的内核模块例子。 需要明确的是模块和驱动是两回事。 2.1 内核模块概念 2.1.1 内核 内核,是一个操作系统的核心。是基于硬件的第一层软件扩充,提供操作系统的最基本的功能, 是操作系统工作的基础,
阅读全文
摘要:前言 以野火i.M 6U为例 1. 开发环境搭建 驱动运行条件: 设备驱动是具有独立功能的程序,它可以被单独编译,但不能独立运行, 在运行时它被链接到内核作为内核的一部分在内核空间运行。 因此想要我们写的内核模块在某个版本的内核上运行, 那么就必须在该内核版本上编译它,如果我们编译的内核与我们运行的
阅读全文
摘要:前言 该 Makefile 已经通过基于内核 Linux5.4 版本验证通过。 因为编写这通用驱动 Makefile 时遇到了头文件指定路径失败的问题。使用过 ccflags-y 、INCDIR 、EXTRA_CFLAGS 、-L 等等参数都无效。就是因为我使用了 $(shell pwd)。导致这些
阅读全文
摘要:前言 李柱明博客:https://www.cnblogs.com/lizhuming/ 本文链接:https://www.cnblogs.com/lizhuming/p/14309823.html 11. 套接字 前面介绍的管道、信号量、消息队列共享内存等等都是用于单个计算机的进程间通信 基于套接字
阅读全文
摘要:前言 李柱明博客:https://www.cnblogs.com/lizhuming/ 本文链接:https://www.cnblogs.com/lizhuming/p/14304476.html 10. 网络编程 互联网通信所要遵守的众多协议,被统称为TCP/IP。 10.1 简要网络知识 TCP
阅读全文
摘要:前言 李柱明博客:https://www.cnblogs.com/lizhuming/ 本文链接:https://www.cnblogs.com/lizhuming/p/14299764.html 8. POSIX信号量 8.1 概念 信号量(Semaphore)是一种实现进程/线程间通信的机制,可
阅读全文
摘要:前言 李柱明博客:https://www.cnblogs.com/lizhuming/ 本文链接:https://www.cnblogs.com/lizhuming/p/14231490.html 7. 线程 7.1 概念 进程:进程是资源管理的最小单位 线程:线程是程序执行的最小单位 因为进程开销
阅读全文
摘要:前言 知识点 消息队列、信号量 和 共享内存 被统称为 system-V IPC 以上都是“持续性”资源,即它们被创建之后, 不会因为进程的退出而消失 6. 共享内存 6.1 概念 共享内存 共享内存是进程间通信中最简单的方式之一 是效率最高的一种IPC通信机制 它允许多个不相关的进程访问同一个逻辑
阅读全文
摘要:前言 李柱明博客:https://www.cnblogs.com/lizhuming/ 本文链接:https://www.cnblogs.com/lizhuming/p/14208759.html 知识点 消息队列、信号量 和 共享内存 被统称为 system-V IPC 以上都是“持续性”资源,即
阅读全文
摘要:前言 李柱明博客:https://www.cnblogs.com/lizhuming/ 本文链接:https://www.cnblogs.com/lizhuming/p/14204671.html 知识点 消息队列、信号量 和 共享内存 被统称为 system-V IPC 以上都是“持续性”资源,即
阅读全文
摘要:前言 李柱明博客:https://www.cnblogs.com/lizhuming/ 本文链接:https://www.cnblogs.com/lizhuming/p/14203037.html 1. 进程 1.1 概念 程序 程序是存放在存储介质上的一个可执行文件 进程 进程是程序执行的过程,是
阅读全文
摘要:前言 目前不涉及驱动源码 李柱明博客:https://www.cnblogs.com/lizhuming/ 本文链接:https://www.cnblogs.com/lizhuming/p/14063151.html 1. 设备检查命令 1.1 查看I2C驱动 命令:ls /sys/bus/i2c/
阅读全文