![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
学习笔记
文章平均质量分 82
Auv开心
这个作者很懒,什么都没留下…
展开
-
flash申请内存失败,导致老化问题解决
正确的分配完内存,可顺利打开相机拍照。FlashRegisterRead申请的内存池组的flag,有概率被异步的TFE修改会导致分配内存失败。可以通过添加标志位bNeedDedicatedBuffers=TRUE,来设置专属内存组。原创 2024-06-27 18:37:15 · 300 阅读 · 1 评论 -
谷歌浏览器好用的插件-保护眼睛和广告拦截器AdGuard
经常对着电脑看网页的朋友们,https://github.com/chitosai/eye_protectorgithub上没提供下载,只能从chrome商店下https://chrome-extension-downloader.com/这个网址挺好用的 下载 插件 的crx 文件 只需要知道 插件id...原创 2021-05-30 16:19:25 · 1147 阅读 · 1 评论 -
linux内核等待队列机制编程框架—内核进程随时随地唤醒休眠
等待队列机制:让用户进程在内核空间随时随地休眠,随时随地被唤醒的一种机制#define init_waitqueue_head(q) \ do { \ static struct lock_class_key __key; \ \ __init_waitqueue_head((q), #q, &__key); \ } while (0)...原创 2020-09-06 17:39:18 · 336 阅读 · 0 评论 -
高通可穿戴设备平台 SDW4100 简介
文章目录背景SDW4100 简介组成架构和性能功耗和情景模式背景2016 年 2 月的时候,高通发布了面向可穿戴设备的骁龙 Wear 2100 平台(简称SDW2100) , 两年之后的 2018 年 09 月 11 日,高通才正式发布 SDW2100 平台的升级版SDW3100。这两款芯片都是基于 28 纳米制造工艺的 Cortex A7 CPU 架构,是 2013 年的智能手机技术。 2020 年 6 月 30 号,高通推出升级版芯片 SDW4100, 基于 12 纳米制造工艺的Cortex原创 2020-08-26 23:57:38 · 3370 阅读 · 1 评论 -
Wear OS 简介
文章目录概述与 Android 区别Wear OS 设备开发申请流程Wear OS 常用模式介绍概述Wear OS 是基于 Android 模块化的轻量级的穿戴设备平台, 本质是 Android 的一个分支版本,专为智能手表可穿戴智能设备设计,首个预览版公布于 2014 年 3 月,支持数字助理、传感器等功能,众多芯片和设备合作伙伴,包括华硕、华为、三星、 Intel索尼 LG、摩托罗拉、 HTC、联发科、博通、高通、 MIPS 等手表产品超过 50 款。与 Android 区别首先, Wea原创 2020-08-26 23:46:08 · 5310 阅读 · 0 评论 -
高通安卓平台BOARD-ID和MSM-ID
目录:kernel/msm4.14/Documentation/devicetree/bindings/arm/msm/board-id.txt 翻译如下传统格式The qcom,board-id entry specifies the MSM platform and subtype revision.It can optionally be an array of these to indicate multiple hardware that usethe same device t原创 2020-08-18 23:31:31 · 6346 阅读 · 1 评论 -
git repo入门操作学习笔记
这里写自定义目录标题git initgit init原创 2020-07-29 10:04:25 · 242 阅读 · 1 评论 -
linux内核同步机制编程框架
文章目录linux系统中出现并发与竞态相关概念:四种情形:linux内核解决竞态引起的异常的方法:即同步方法中断屏蔽概念特点中断屏蔽的编程步骤中断屏蔽相关宏函数应用实例自旋锁概念特点利用自旋锁同步的编程步骤信号量原子操作linux系统中出现并发与竞态相关概念:并发:多个执行单元(进程和中断)同时发生竞态:多个执行单元对共享资源的同时访问所形成的竞争的状态须具备以下三个条件:1. 必须有多个执行单元2. 必须有共享资源3. 必须同时访问共享资源:比如软件上的原创 2020-07-20 20:51:44 · 393 阅读 · 1 评论 -
优化与内存屏蔽
当使用优化的编译器时,千万不要认为指令会严格按照它们在源代码中出现的顺序执行。例如,编译器可能重新安排汇编语言指令让寄存器以最优的方式使用。此外,现代CPU通常并行地执行若干条指令,且可能重新安排内存访问。这种重新排序可以极大地加速程序的执行。然而,当处理同步时,必须避免指令重新排序。如果放在同步原语之后的一条指令在同步原语本身之前被执行,事情很快就会变得失控。事实上,所有的同步原语起到优化和内存屏蔽的作用。优化屏障(optimization barrier)原语保证编译程序不会混淆在原语操作之前的汇原创 2020-07-19 00:14:59 · 563 阅读 · 0 评论 -
linux内核软件定时器编程框架
文章目录linux 内核软件定时器简介:描述软件定时器的结构体timer_list软件定时器相关的配套函数linux 内核软件定时器简介:定时器是一种软件功能:即允许在将来的某个时刻,函数在给定的时间间隔用完时被调用。内核软件定时器特点:可以指定一个超时时间,一旦超时时间到期,内核就会调用定会器的超时处理函数,切记: linux 内核软件定时器基于软中断实现,所以其超时处理函数不能进行休眠操作。内核和进程广泛使用定时器。大多数设备驱动程序利用定时器检测反常情况,例如,软盘驱动程序使用定时器在原创 2020-07-17 20:49:59 · 475 阅读 · 1 评论 -
【跟着韦东山学习linux设备树】内核中device_node转换为platform_device的函数调用分析
内核中device_node转换为platform_device的函数调用分析of_platform_default_populate_init 函数调用过程1. start_kernel() 函数定义在init/main.c2. rest_init()函数定义在init/main.c3. kernel_init()4. kernel_init_freeable()5. do_basic_setup()6. do_initcalls()of_platform_default_populate_init函数生原创 2020-07-08 16:52:38 · 1000 阅读 · 1 评论 -
linux内核I2C驱动编程框架简析(一)
文章目录linux内核I2C驱动编程机制struct i2c_client定义如下struct i2c_board_infostruct i2c_driverI2C驱动跟前面介绍的linux内核驱动的platform机制一样,也是总线-设备-驱动模型。同样是使用内核的bus_type结构体定义了一个虚拟总线i2c_bus_type。bus_type结构体定义如下/** * struct bus_type - The bus type of the device * * @name: The na原创 2020-07-07 17:37:06 · 316 阅读 · 0 评论 -
系统管理总线(SMBus)介绍
SMBus介绍系统管理总线协议概要系统管理总线 关键标记表SMBus接口函数1. SMBus Quick Command2. SMBus接收字节函数:i2c_smbus_read_byte()3. SMBus发送字节函数:i2c_smbus_write_byte()4. SMBus读取字节函数:i2c_smbus_read_byte_data()5. SMBus读取字(两字节)函数:i2c_smbus_read_word_data()6. SMBus写字节函数:i2c_smbus_write_byte_原创 2020-07-07 00:20:34 · 14896 阅读 · 3 评论 -
【跟着韦东山学习linux设备树】dtb转换为device_node(unflatten)树状结构
跟着韦东山学习linux设备树—dtb转换为device_node树状结构引子函数调用过程1. start_kernel() 函数定义在init/main.c2. setup_arch()函数定义在arch/arm/kernel/setup.c3. arm_memblock_init()函数定义在arch/arm/mm/init.c3.1. 函数early_init_fdt_reserve_self();定义在drivers/of/fdt.c3.2. 函数early_init_dt_reserve_memo原创 2020-07-01 22:57:27 · 660 阅读 · 1 评论 -
linux设备树的平台信息认证之匹配过程简析
linux设备树的平台信息认证之匹配过程简析1. start_kernel() 函数定义在init/main.c2. setup_arch()函数定义在arch/arm/kernel/setup.c3. setup_machine_fdt()函数定义在arch/arm/kernel/devtree.c4. of_flat_dt_match_machine();//定义在drivers/of/ftd.c当使用compatible属性跟machine_desc中的dt_compat比较时,按照上述的优先级进行原创 2020-07-01 00:11:53 · 559 阅读 · 1 评论 -
【入门级别】linux内核驱动三种写法之——platform分离机制
【入门级别】linux内核驱动三种写法之——platform分离机制前言框架图实例代码遇到问题前言关于想追本溯源理清楚linux驱动的写法,前面已经写了三篇链接如下1.【入门级别】linux驱动的三种写法之前言——裸机程序2.【入门级别】linux驱动三种写法之——软硬件信息未分离(以字符设备驱动程序为例)3.字符设备驱动的简化版混杂设备驱动今天我们来学习下linux内核驱动的platform分离机制,关于这部分的理论知识,我在如下这一篇博文中有详细介绍,就不再赘述。linux platfor原创 2020-06-26 11:48:27 · 696 阅读 · 0 评论 -
字符设备驱动的简化版混杂设备驱动
我们在上一篇文章中聊的字符设备驱动的写法,参见linux驱动三种写法之——软硬件信息未分离(以字符设备驱动程序为例)混杂设备的说明如标题,内核提供了一种简化字符设备驱动的写法,是将主设备号固定为10,然后可以设置内核自动分配次设备号来区分设备个体,本质上还是字符设备,就是将上述链接中的字符设备驱动框架中的【设备号处理工作】和【字符设备对象的处理工作】打包在【混杂设备对象的处理工作】中了。字符设备驱动框架 与 混杂设备驱动框架 对比图看一下【字符设备驱动框架】和【混杂设备驱动框架】的差异就明白了原创 2020-06-24 01:15:11 · 296 阅读 · 1 评论 -
【入门级别】linux驱动三种写法之——软硬件信息未分离(以字符设备驱动程序为例)
上篇提到裸机程序,本文使用的硬件平台相同。详情见linux驱动的三种写法之前言——裸机程序前言今天我们来聊聊linux驱动程序应该是比较原始的写法,就是硬件驱动程序中的软件和硬件信息是写在同一个文件中的,虽然这样的写法看上去简单相对来说好理解,但是很不符合软件程序“低内聚,高耦合”的要求,特别是当硬件信息有变动的时候,比如硬件信息更改或者将驱动程序移植到其他平台上,就会发现工作量非常之大。最要命的是,即使更改一点硬件信息,都需要重新编译。基本上,我在工作上没有见过这样的驱动程序,应该是学习linux驱动原创 2020-06-23 03:33:32 · 450 阅读 · 0 评论 -
linux库函数strtoul简介
首先我们通过man 3 strtoul命令在linux系统终端查看下该函数的原型如下#include <stdlib.h>unsigned long int strtoul(const char *nptr, char **endptr, int base);1.strtoul()函数的功能:是将一个字符串最开始的部分根据base所指定的进制类型,转换成一个无符号长整型(unsigned long)或无符号长长整型(unsigned long long)数字。注:unsigned l原创 2020-06-19 02:08:11 · 1342 阅读 · 1 评论 -
【入门级别】linux驱动的三种写法之前言——裸机程序
linux驱动的三种写法之前言——裸机程序引子软硬件平台裸板编程编程准备编程思路编译烧录及运行遇到问题及其解决引子最近想要系统地学习下linux 驱动程序的设备树的知识。韦东山老师提到驱动有如下三种写法:驱动写法优缺点1.将硬件信息写在驱动程序中简单,不易扩展,有硬件信息改动需要重新编译2.使用platform总线设备驱动模型将驱动程序软硬件信息分离稍复杂,易扩展,有冗余代码,有硬件信息改动需要重新编译3.使用设备树文件,驱动程序解析设备树文件,读取相关硬件信息稍原创 2020-06-17 03:51:00 · 991 阅读 · 1 评论 -
linux platform分离机制是如何运作的呢
/** * struct bus_type - The bus type of the device * * @name: The name of the bus. * @dev_name: Used for subsystems to enumerate devices like ("foo%u", dev->id). * @dev_root: Default device to use as the parent. * @dev_attrs: Default attributes of原创 2020-06-11 00:57:08 · 359 阅读 · 1 评论