- 博客(9)
- 收藏
- 关注
原创 in sensor zoom 片上数码变焦简介
in sensor zoom的实现过程是seamless switch到sensor的full crop setting(full size的setting直接在sensor端进行了crop)达到画质约等于同等倍率的光学变焦镜头的效果。对于高分辨率传感器,如5000万像素的传感器,理想的数码变焦应该基于全像素裁剪,而不是低分辨率(binning)模式的裁剪。in sensor zoom是一种在图像传感器级别实现的数码变焦技术,它通过直接在传感器上裁切和处理像素数据,而不是在后期的图像信号处理阶段进行。
2024-12-31 11:35:11
2703
原创 MIPI CSI-2 协议
EoT、LPS和SoT设计是为了在不需要高速传输时节约能耗,通过切换到低功耗状态来实现节能。但是,对于需要快速连续传输的场景,频繁的状态切换会导致高延迟,影响整体性能。所以提出EPD,EPD的设计目标是在这些情况下通过减少不必要的状态切换来降低延迟,从而提高数据传输效率。EPD的一个主要优势就是避免了从高速到低功耗再回到高速的切换。在原来的基础上把EoT、LPS、SoT三合一为EPD,并且PHY物理层生成的EPD元素被称为PDQ,可以快速处理包之间的间隔。这种变化的优点和缺点很明显,
2024-10-11 11:22:48
3534
2
原创 I2C通信协议
I2C(Inter-Integrated Circuit)由飞利浦公司在20世纪80年代初开发,是一种用于集成电路间通信的串行总线。它支持多主从、双向、半双工通信,广泛应用于嵌入式系统中,如传感器接口、显示控制等。
2024-09-30 16:58:05
462
原创 什么是GPIO控制器
7.echo 18 > /sys/class/gpio/unexport //取消导出引脚,取消选中在内核空间用GPIO子系统来控制引脚:(platform平台)1.echo 18 > /sys/class/gpio/export //导出一个GPIO引脚(假设引脚编号为18),选中。2.echo out > /sys/class/gpio/gpio18/direction //设置为输出。5.echo 0 > /sys/class/gpio/gpio18/value //设置为低电平。
2024-08-02 09:14:52
1913
原创 什么是设备树,匹配驱动的方法
设备树文件(.dts),是一个单独的文件,用于保存硬件信息,还有.dtsi文件是.dts文件所包含的头文件,因为可能存在一个soc被用到多种电路板上,大部分的公共部分信息被存在dtsi文件中,特殊的一些信息保存在dts文件中。static struct platform_driver demo_led_driver = {//定义了平台驱动结构,包括probe和remove函数,以及驱动的名称和设备树匹配表。可以看出,使用设备树之后的硬件信息是独立在内核之外的,这就解决了上述问题。
2024-07-29 17:31:44
624
原创 Linux驱动开发流程—probe函数
在这个函数中,通过向设备的某个寄存器写入配置数据来完成设备的初始化。当内核检测到一个设备时,它会调用驱动程序的probe函数,以便驱动程序可以初始化设备、分配资源、设置寄存器等。当内核检测到一个设备时,它会尝试找到合适的驱动程序,并调用该驱动程序的probe函数来初始化设备。在总线匹配设备和驱动的时候,会调用probe函数然后再调用驱动自己的probe函数,又发现,probe又是调用的my_device_init()函数来初始化。__devinit: 标记设备初始化函数,主要用于特定设备的初始化。
2024-07-26 16:18:35
3198
原创 Linux设备驱动模型 流程和原理
* shutdown函数指针,在系统关机或重启时调用,通常用于执行设备的安全关闭操作 *//* 资源使用的GPIO配置,引用“gpio1”控制器的第10号引脚 *//* 资源使用的GPIO配置,引用“gpio1”控制器的第11号引脚 *//* 定义设备节点,名字为“xiaolaoshu”,地址为“666666” *//* GPIO配置,引用下文定义的“gpio1”控制器,使用其第10号引脚 *//* 兼容性字符串,用于描述这个设备树的类型,驱动程序可以通过它来匹配设备树 */
2024-07-26 09:04:21
1947
原创 什么是Linux字符设备
有人这样写: void cdev_init(struct cdev *cdev, struct file_operations *fops);//struct cdev *p - 被注册的cdev对象。有人这样写: cdev_add(struct cdev *dev, dev_t num, unsigned int count);3.向内核里添加一个驱动 int cdev_add(struct cdev *p, dev_t dev, unsigned count);
2024-07-24 14:20:14
464
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人