首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏LCD驱动IC

    省电液晶驱动LCD驱动芯片VA驱动VK1621 LQFP4448 SSOP48 COB COG FAE支持

    IC; LED驱动IC; 触摸IC; LDO稳压IC; 水位检测IC)LCD驱动、液晶显示IC、LCD显示、液晶显示、显示LCD、段码液晶驱动、LCD液晶显示、段码LCD驱动、LCD显示驱动芯片、LCD 显示驱动IC、LCD驱动、液晶驱动驱动LCD、驱动液晶、LCD驱动控制器、段码LCD驱动、液晶段码驱动、液晶显示驱动芯片、点阵式液晶显示驱动、点阵式液晶显示IC、液晶驱动IC、液晶驱动芯片、LCD 芯片、液晶芯片、液晶驱动控制器、液晶IC、段码驱动显示IC、笔段式液晶驱动、LCD液晶显示驱动、液晶LCD显示驱动、段码驱动IC、段码驱动芯片、段码显IC、LCD显示IC、笔段式LCD驱动、LCD显示芯片 、段码显示IC、段码显示芯片、LCD段码液晶驱动、段码LCD液晶驱动、液晶显示芯片、段式液晶驱动、段码显示IC、LCD液晶驱动、笔段LCD驱动、LCD段码驱动、液晶驱动IC、液晶驱动芯片、液晶段码 LCD驱动、液晶LCD段码驱动、LCD驱动器、液晶驱动电路、LCD驱动IC、断码LCD驱动、LCD驱动IC、点阵式LCD驱动、LCD驱动芯片、点阵段码驱动、点阵液晶驱动、段码液晶驱动芯片、段码驱动

    38850编辑于 2023-09-09
  • 驱动开发:内核PE结构VA与FOA转换

    本章将继续探索内核中解析PE文件的相关内容,PE文件中FOA与VA,RVA之间的转换也是很重要的,所谓的FOA是文件中的地址,VA则是内存装入后的虚拟地址,RVA是内存基址与当前地址的相对偏移,本章还是需要用到 《驱动开发:内核解析PE结构导出表》中所封装的KernelMapFile()映射函数,在映射后对其PE格式进行相应的解析,并实现转换函数。 FOA转换为VA: 首先来实现将FOA地址转换为VA地址,这段代码实现起来很简单,如下所示,此处将dwFOA地址0x84EC00转换为对应内存的虚拟地址。 转换为FOA: 将VA内存地址转换为FOA文件偏移,代码与如上基本保持一致。 的过程其转换结果与VA转FOA一致。

    66130编辑于 2023-06-02
  • 驱动开发:内核PE结构VA与FOA转换

    本章将继续探索内核中解析PE文件的相关内容,PE文件中FOA与VA,RVA之间的转换也是很重要的,所谓的FOA是文件中的地址,VA则是内存装入后的虚拟地址,RVA是内存基址与当前地址的相对偏移,本章还是需要用到 《驱动开发:内核解析PE结构导出表》中所封装的KernelMapFile()映射函数,在映射后对其PE格式进行相应的解析,并实现转换函数。 FOA转换为VA: 首先来实现将FOA地址转换为VA地址,这段代码实现起来很简单,如下所示,此处将dwFOA地址0x84EC00转换为对应内存的虚拟地址。 转换为FOA: 将VA内存地址转换为FOA文件偏移,代码与如上基本保持一致。 的过程其转换结果与VA转FOA一致。

    37940编辑于 2023-10-11
  • 来自专栏SAP Technical

    SD模块的几个增强(VA01-VA03,VA41-VA43)

    VA01-VA03,VA41,VA42,VA43这三个事务代码的增强直接写在他们的程序里面,这里的增强有点特殊要注意首先要让他显示出来,而后才能修改, 程序名:SAPMV45A 增强的点在:include

    1.4K20发布于 2020-11-27
  • 来自专栏米扑专栏

    va_start va_arg va_end 的原理与实例

    #define va_start _crt_va_start//注意下面的替代。 #define va_arg _crt_va_arg #define va_end _crt_va_end #define  _crt_va_start(ap,v)    ( ap = (va_list (t)) ) #define _crt_va_end(ap)        ( ap = (va_list)0 )  va_list argptr; C语言的函数是从右向左压入堆栈的,调用va_start 每次调用va_start() / va_copy()后,必须得有相应的va_end()与之匹配。参数指针可以在参数列表中随意地来回移动,但必须在va_start() … va_end()之内。 version */ type va_arg ( va_list ap, type ); void va_end ( va_list ap ); va_list 是一个字符指针,可以理解为指向当前参数的一个指针

    2.3K30发布于 2019-02-19
  • 来自专栏云深之无迹

    Elink墨水驱动

    然后我就对这个屏幕优点好奇,朋友圈有个ELink的经理就送了我两块屏幕,那这文章就是简单写一下驱动板。 漂亮的待机照片 后面 这个就是Hackday上面的开源方案 因为这些小屏幕都是24pin的TTL并口屏幕 原理图 24Pin 走线 这些是官网上面的一些驱动方案的框图 这个也是 电子纸联盟部分成员 我想插一句,不是使用墨水就护眼了,不用眼睛才是护眼。 驱动板很简单,就是一个简单的匹配,后面是SPI控制,下篇文章会打板和屏幕调试。敬请期待~

    74620编辑于 2023-03-24
  • 来自专栏嵌入式项目开发

    Linux驱动开发-编写OLED显示驱动

    前言 OLED显示在是智能手环,智能手表上用的非常的多,功耗低,不刺眼,优点特别多。 本篇文章就介绍,在Linux系统里如何使用OLED显示,要使用OLED显示,大致分为两步: (1) 针对OLED显示编写一个驱动 (2) 编写应用层程序进行测试。 采用的OLED显示是0.96寸SPI接口显示,分辨率是128*64,比较便宜,淘宝上非常多。 驱动代码 Linux内核提供了标准SPI子系统框架,和前面介绍的IIC子系统框架使用类似,代码分为设备端和驱动端,Linux内核提供子系统的目的就是为了统一驱动编写标准,提高驱动代码的移植性。 帧缓冲驱动注册*/ if(register_framebuffer(&lcd_info)!=0) { printk("提示: lcd驱动安装失败!

    6.7K20编辑于 2022-04-08
  • 来自专栏C++开发

    【C99】#,##,#__VA_ARGS__,##__VA_ARGS__

    #__VA_ARGS__ #__VA_ARGS__ 是 # 和 __VA_ARGS__ 的组合,用于将可变参数列表转换为字符串。这在定义可变参数宏时非常有用,特别是在需要将参数列表作为字符串输出时。 #define LOG(...) printf("Message: " #__VA_ARGS__) int main() { LOG(Hello, world!) ##__VA_ARGS__ ##__VA_ARGS__ 是 ## 和 __VA_ARGS__ 的组合,用于处理可变参数为空的情况。当没有参数传递给宏时,## 会移除多余的逗号,避免语法错误。 #include <iostream> #define LOG(level, ...) printf(level, ##__VA_ARGS__) int main() { LOG("Hello

    37200编辑于 2025-03-30
  • 来自专栏破晓

    【c语法】##__VA_ARGS__与__VA_ARGS__

    引言 在调试过程中,我们经常会自定义打印,比如日志信息的输出,这时就会用VA_ARGS,接下来详细讲解! VA_ARGS __VA_ARGS__是C语言设定的一个预定义宏,用于处理可变参数的参数列表。 __VA_ARGS__表示所有在宏调用中传递的额外参数。 ##VA_ARGS 大家在了解__VA_ARGS__时,一定会看到有些地方在该宏定义前使用 ## 运算符来处理可变参数,如: #define DEBUG_LOG(fmt, ...) \ printf is test __VA_ARGS__ <main.c:main>:this is test __VA_ARGS__:test __VA_ARGS__, 10086 <main.c:main>: 但是如果不加 LOG2();//不传参数,编译报错 LOG2("this is test __VA_ARGS__");//编译报错 LOG2("this is test __VA_ARGS__:%s,

    2.2K10编辑于 2024-08-29
  • 来自专栏嵌入式与Linux那些事

    12.触摸驱动

    触摸子系统是通过input子系统来实现,对应设备节点 /dev/input/eventn,熟悉套路后重点放在硬件程序的编写 一、内核自带触摸驱动S3c2410_ts的简单分析 S3c2410_ts.c (drivers\input\touchscreen) 内核自带三星的触摸驱动 (1)入口函数: /*注册一个平台driver*/ static int __init s3c2410ts_init (4)touch_timer_fire 当事件发生的时候,上报事件 /*上报事件*/ input_report_abs--》input_event 二、参考S3c2410_ts从零写S3C2440触摸驱动 触摸使用流程 a.按下,产生中断 b.在中断处理程序中,启动ADC转换坐标。 到此触摸驱动移植成功。

    1.8K20发布于 2021-05-20
  • 来自专栏防止网络攻击

    LED面板显示驱动芯片

    一、基本概述 TM1638是一种带键盘扫描接口的LED(发光二极管显示器)驱动控制专用IC,内部集成有MCU数字接口、数据锁存器、LED驱动、键盘扫描等电路。本产品质量可靠、稳定性好、抗干扰能力强。

    96910编辑于 2023-11-26
  • 来自专栏linux驱动个人学习

    ft6236 触摸驱动

    define INT_GPIO_CHIP (2) #define INT_GPIO_OFFSET (5) 这些管脚可以在这里《Hi3556AV100 Demo 单板使用指南.pdf》中看到,分别得出触摸的中断和复位管脚 1.1 对触摸进行复位 static int ft_reset(hi_gpio_groupbit_info* pstRstInfo) { pstRstInfo->value = 1; pstRstInfo); msleep(5); pstRstInfo->value = 1; hi_gpio_write_bit(pstRstInfo); return 0; } 对触摸进行复位 ); input_set_abs_params(ft_ts_dev, ABS_MT_TOUCH_MAJOR, 0, 0xff, 0, 0); //相当于单点的 hi_i2c_read(0x0, buf, FT_MAX_BUFUSED_NUM); 在这里,使用了hi_i2c_read,在文件i2cdev.c中,注意i2c_board_info的一般是8位从地址; 一般来说,触摸有固件的

    2.4K20发布于 2019-06-20
  • 来自专栏Linux驱动

    18.Llinux-触摸驱动(详解)

    本节的触摸驱动也是使用之前的输入子系统 1.先来回忆之前第12节分析的输入子系统 其中输入子系统层次如下图所示, 其中事件处理层的函数都是通过input_register_handler()函数注册到 input_handler_list链表中 搜索input_register_handler注册函数,就可以看到都是事件处理层里的函数: 所以最终如下图所示: 右边的驱动事件处理,内核是已经写好了的,所以我们的触摸只需要写具体的驱动设备 , 不编进内核和模块 然后make uImage 编译内核 将新的触摸驱动模块放入nfs文件系统目录中 7.2然后烧写内核,装载触摸驱动模块 如下图, 通过 ls -l /dev/event* 命令可以看到我们的触摸驱动的设备为 、去抖、校准等功能,通常作为触摸驱动的适配层,为上层的应用提供了一个统一的接口。 校验界面 运行测试如下图所示,能随意画图: 最终,触摸驱动测试成功

    4.3K91发布于 2018-01-03
  • 来自专栏Visual Codex

    #、##、__VA_ARGS__的使用

    所谓的子串(token)就是指编译器能够识别的最小语法单元; #define LOG2(x) log##x() // __VA_ARGS__:用于在宏替换部分中,表示可变参数列表; #define LOG printf(__VA_ARGS__); void logA() { printf("log func A \n"); } void logB() { printf("log func // 测试# int score = 96; LOG1(score); LOG1(6); // 测试## LOG2(A); // 测试 __VA_ARGS

    1.3K40发布于 2021-03-15
  • 来自专栏linux驱动个人学习

    android 电容(四):驱动调试之驱动程序分析篇 -- FocalTech

    本人用的触摸IC是FocalTech公司的ft5306,是一款i2c的电容多点触控芯片。对于它的整体驱动官方已经给了,我们就触摸和按键部分的代码做相关说明。说明其中应该注意的地方。 三、触摸驱动流程 i2c中加入平台初始化代码 static struct ft5x0x_platform_data ft5x0x_platform_i2c_data = { .x_max =960, .irq= SABRESD_CHARGE_FLT_1_B, //中断引脚 .reset=SABRESD_DISP0_RST_B, //复位引脚 }; 触摸驱动初始化 从android input的流程分析我们知道,驱动编译完成以后,要使触摸工作,还需要三个文件:触摸配置文件 (idc文件,用来配置触摸的一些属性)、keylayout文件(kl文件,安卓层面的按键映射文件 ,可以用这个命令将发送的事件打印出来,看驱动写的是否正确。

    2.7K20编辑于 2022-05-10
  • 来自专栏嵌入式项目开发

    Linux驱动开发-编写FT5X06触摸驱动

    前言 这篇文章介绍在Linux下如何编写FT5X06系列芯片驱动,完成触摸驱动开发, FT5X06是一个系列,当前使用的具体型号是FT5206,它是一个电容的触摸芯片,内置了8位的单片机(8051 所说起触摸大家都不会陌生,现在手机、手表、家电、很多地方都支持触摸了。最开始的触摸都是电阻,在诺基亚时代的时候,使用的触摸都是电阻,后来Android兴起的时候,手机都向电容发展了。 当前文章介绍的FT5206就是一颗电容驱动芯片,最高支持2点触控,可以通过获取两个坐标点,这个系列的芯片最高支持10点触控。 当前使用的屏幕型号是S702,这个屏幕是友善之臂生产的LCD,S702这款屏幕采用的触摸芯片就是FT5206,引出了IIC接口,支持笔中断,官方的内核里也提供了例子驱动可以参考。 编写触摸驱动 Linux下编写标准的触摸驱动需要使用到输入子系统,当前文章的重点是读取触摸的坐标,所以示例代码里不会加输入子系统的代码,只是在驱动层完成触摸笔中断响应,触摸的坐标点获取并打印。

    3.4K20编辑于 2022-04-08
  • 来自专栏桑榆肖物

    使用.Net驱动Jetson Nano的OLED显示

    比如说:一块I2C的OLED显示,然后通过.Net来驱动它显示一些好玩的东西(软件状态,设备状态,其他关键数据指标等)。 I2C 用.NET驱动显示 驱动这个oled屏幕我们需要用到微软的IoT相关的库 "System.Device.Gpio" ,通过这个库我们可以实现和外接设备的I2C通讯,当然驱动OLED显示器需要用到熟悉其驱动芯片的各种指令 ,这里的驱动芯片是SSD1306,拥有最大128*64像素支持,广泛应用在小尺寸OLED显示驱动中。 这里演示用的图片为下图,我们将其在 OLED 显示上展示。 刚刚到了一个SPI接口的LCD彩色显示,又有新玩具可以玩了。

    1.3K30编辑于 2022-11-18
  • PE格式:VA地址与FOA地址

    首先我们先来演示一下内存VA地址与FOA地址互相转换的方式,通过使用WinHEX打开一个二进制文件,打开后我们只需要关注如下蓝色注释为映像建议装入基址,黄色注释为映像装入后的RVA偏移。 通过上方的已知条件我们就可以计算出程序实际装入内存后的入口地址了,公式如下: VA(实际装入地址) = ImageBase(基址) + RVA(偏移) => 00400000 + 0000158B = 虚拟地址结束位置:text节地址 + 节区尺寸 => 00401000 + 00000B44 = 00401B44 经过计算得知 .text 节所在区间(401000 - 401B44) 你的装入VA 地址0040158B只要在区间里面就证明在本节区中,此处的VA地址是在401000 - 401B44区间内的,则说明它属于.text节。 .text(节首地址) = ImageBase + 节区RVA => 00400000 + 00001000 = 00401000 VA(虚拟地址) = ImageBase + RVA(偏移) =>

    1.6K10编辑于 2022-12-28
  • 来自专栏Base_CDNKevin

    【C语言】va_list(可变参数处理)

    一、va_list的用法 va_list 是一个指向参数列表的指针,它允许函数处理不定数量的参数。 va_list 类型定义如下:  typedef char* va_list;  va_list 类型通常与 va_start、va_arg 和 va_end 一起使用。 下面是这些宏的简要介绍: va_start:初始化 va_list 类型的变量,使其指向参数列表的起始位置。 va_arg:获取参数列表中的下一个参数,并将指针移动到下一个参数。 va_end:清理 va_list 类型的变量。 二、实际应用举例         下面我们通过一个实际的例子来演示 va_list 的使用。假设我们需要编写一个函数,计算可变数量的整数的平均值。 va_start宏用于初始化va_list类型的变量,va_end宏用于清理这个变量。这样做是为了确保在函数结束时释放参数列表所占用的资源,以避免内存泄漏或其他问题。         

    2.5K20编辑于 2024-03-19
  • 来自专栏皮振伟的专栏

    va_start嵌套导致的问题

    va_start嵌套的问题 va_start经常被用来处理可变参数的情况,经过测试发现,在处理"%-*s"这个特定的格式情况下,如果父函数先调用va_start处理,子函数再调用va_start处理,就会出现上述的 因为sprintf函数本身也是使用了va_start,而且tgt封装的函数也使用了va_start,导致了这个问题。 采用了walk around的方式来修复这个问题,避免va_start的嵌套即可。 给maintainer发送了patch,maintainer接受并push到了upstream。

    1.9K20发布于 2019-05-06
领券