随笔分类 - linux 内核
摘要:延时函数的两种常用名称是sleep和delay。一般在上位机多见sleep,单片机常用delay。那么sleep和delay的意义有何区别? sleep意为睡眠,即线程挂起,由定时器重新唤醒线程。sleep作用期间,该线程不占用CPU资源。 delay意为延迟,即线程等待,由线程自身进行循环查询,在
阅读全文
摘要:static DEVICE_ATTR_RW(test); #define DEVICE_ATTR_RW(_name) \ struct device_attribute dev_attr_##_name = __ATTR_RW(_name) struct device_attribute dev_a
阅读全文
摘要:一、coresight coresight是ARM公司提出的,用于对复杂的SOC,实现debug和trace的架构。该架构,包含了多个coresight组件。众多的coresight组件,构成了一个coresight系统。我们也可以根据coresight架构,实现自己的coresight组件。每个c
阅读全文
摘要:一、基础理论概述1. 有三种 preemption model 和适用场景非强占式内核(服务器)强占式内核(低延迟桌面)voluntary kernel preemption(桌面)2. 动态功耗 = C * Freq * Voltage^2 其中Freq 是CPU运行频率,Voltage是CPU核
阅读全文
摘要:kernel部分: 如需宏控制kernel这部分代码时,参考以下步骤新增kernel config. 1.请在您的driver code所在目录中的Kconfig文件增加您的宏定义 具体怎么写可以参考Kconfig中的其他宏定义 举个例子: config MTK_FB bool “MediaTek
阅读全文
摘要:原子位操作 操作函数的参数是一个指针和一个位号 原子位操作定义在文件中。令人感到奇怪的是位操作函数是对普通的内存地址进行操作的。原子位操作在多数情况下是对一个字长的内存访问,因而位号该位于0-31之间(在64位机器上是0-63之间),但是对位号的范围没有限制。 原子操作中的位操作部分函数如下:voi
阅读全文
摘要:做底层驱动免不了gpio打交道,所以对其操作和调试进行了一下简单的梳理一、gpio的调试方法 在Linux下,通过sysfs,获取gpio状态,也可以操作gpio。1、获取gpio状态 cd /sys/kernel/debug/ cat gpio2、操作gpio(以gpio99为例) cd /sys
阅读全文