[国嵌攻略][170][摄像头驱动开发]
摄像头系统架构
V4L2 video for linux,专门为Linux系统定制的操作摄像头的规范。给应用程序提供访问摄像头统一的接口。相应的摄像头驱动也需要遵循V4L2规范。这样应用程序可以不根据硬件的不同而改变,提高应用程序的可移植性。
使能和测试摄像头驱动
make menuconfig ARCH=arm
device drivers-><*>multimedia support-><*>video for linux and [*]enable video for linux api 1
device drivers-><*>multimedia support->[*]video capture adapters->[*]v4l usb devices-><*>gspca based webcams-><*>zc3xx usb camera driver
make uImage ARCH=arm CROSS_COMPILE=arm-linux-
编译测试程序
修改dev_name = "/dev/video%d"为对应的设备文件名
arm-linux-gcc camera.c -o camera
还需要配置uboot
setenv bootargs noinitrd console=ttySAC0,115200 init=/linuxrc root=/dev/nfs rw nfsroot=192.168.1.101:.../rootfs,proto=tcp,nfsvers=3 ip=192.168.1.230:192.168.1.101:192.168.1.1:255.255.255.0::eth0:off saveenv
vim board/samsung/mini2440/smdk2410.c
/* configure MPLL */
writel((M_MDIV << 12) + (M_PDIV << 4) + M_SDIV,
&clk_power->mpllcon);
/* some delay between MPLL and UPLL */
pll_delay(4000);
pll_delay(4000);
/* configure UPLL */
writel((U_M_MDIV << 12) + (U_M_PDIV << 4) + U_M_SDIV,
&clk_power->upllcon);
/* some delay between MPLL and UPLL */
pll_delay(8000);
/* set up the I/O ports */
在MPLL和UPLL之间加了一个pll_delay(4000);
还需要配置kernel
[*]Networking support->Networking options->[*]IP: kernel level autoconfiguration and [*]IP: DHCP support and [*]IP:BOOTP support and [*]IP: RARP support
运行程序如果遇到EHCI USB主控器问题,可以修改相关的USB控制器配置。device drivers->[*]usb support-><*>EHCI HCD (usb 2.0) support or <*>OHCI HCD support
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术