linux驱动
酸菜鱼的鱼
Linux rtos 驱动应用开发 本博客主要用于工作学习的总结和备份,欢迎大家留言评论交流,谢谢
展开
-
Linux中的稳像和光流部分的代码梳理(dsp和videocamera驱动的调用执行流程)
在Linux的应用程序中app/video/opt_eis/vision_service.cpp ,有如下代码。打开了设备节点dsp和video5。并在此文件中操作这两个设备。944 dsp_fd = open(PATH_DSP, O_RDWR); 512 /*--------------------- cam initial -----------------...原创 2018-10-13 16:50:49 · 389 阅读 · 0 评论 -
linux中的设备树的理解
Linux中的设备树的作用是代替Linux3.10之前的arch/arm/xxx-mash/下面的大量的板级源文件。设备树文件是以dts,dtsi结尾的文件。dts中可以包含dtsi文件,设备树文件是描述板子硬件的,和内核无关。可以通过dtc(device tree compiler)编译成dtb文件,可以连接到Linux内核中的img文件后,也可以通过boot加载到ddr中,当内核启...原创 2018-11-11 11:44:49 · 4211 阅读 · 0 评论 -
在Linux 中的应用层操作gpio的方法
背景: 由于在调试WiFi驱动模块的时候需要增加一个功能:就是用户按下一个按键就可以,将WiFi的ssid和psk恢复到出场模式。所以这里就需要开辟一个线程去检测按键的状态。第一步首先是用户按下按键后应用层能够检测到相应的gpio的电平的变化。 gpio的状态应该是mpu中最基本的操作,所以在厂家提供的SDK中应该已经有相应的驱动了,所以用户层可以直接使用,通过上网...原创 2018-09-01 14:10:30 · 24797 阅读 · 6 评论 -
基于rv1108的以太网PHY层芯片LAN8720A的使用简介
lan8720a的系统框图 :以下是lan8720a的芯片的内部架构框图:lan8720a的芯片引脚的描述:实际项目中硬件的连接:rv1108部分的原理图:lan8720部分的原理图:从原理图上来看,lan8720a的引脚LED1/REGOFF是处于悬空状态,使用了lan8720a芯片内部集成的1.2V稳压器。引脚RXER/PHYAD0直接接到芯片的...原创 2019-02-19 19:30:40 · 5800 阅读 · 0 评论 -
rv1108 MAC 接口的简介
MAC以太网控制器提供了一个从处理器到RMII 的完整的以太网接口。这个芯片上的MAC 包含了一个DMA控制器。主要的特性:支持和RMII的10M/100Mbps的传输速率。支持全双工和半双工的操作。MDIO 主设备接口用于对PHY设备 的配置和管理。模块的框图: RMII:RMII是为了减少以太网phy芯片和mac相连接的引脚的数量。因为MII包含了16个引脚,包...原创 2019-02-26 17:52:24 · 447 阅读 · 0 评论 -
linux内核中的以太网phy芯片的驱动介绍:以lan8720和ip101作为对比
背景:由于公司开发的新项目中设备需要联网,使用了MZ391的4G模块,并通过rmii接口和phy芯片ip101gr链接。主控平台rv1108通过rmii接口和phy芯片lan8720相连接。ip101gr和lan8720通过类似于以太网的双绞线:tx+,tx-,rx+,rx-,相连接。之所以mac和phy要分开,是因为mac属于数字电路部分,主要处理的信号是属于数字信号,将上层ip层等...原创 2019-03-09 16:15:44 · 15249 阅读 · 0 评论 -
arm cotex-a9裸机led实践-以exynos4412为例
具體的源代碼存放與:https://download.csdn.net/download/u010299133/11244210文件列表说明:├── led.lds --链接脚本├── led.S --led主程序├── makefile --编程步骤控制Mafile└── sd_fuse --这个文件夹中的内容是用于制作BL2的工具源码 ├── M...原创 2019-06-16 22:29:30 · 520 阅读 · 0 评论 -
Linux开发平台搭建中的U-boot 命令相关说明
设置 u-boot 环境变量进入 u-boot 命令行模式,输入如下命令:TINY4412 # setenv ipaddr 192.168.1.101TINY4412 # setenv gatewayip 192.168.1TINY4412 # setenv netmask 255.255.255.0TINY4412 # setenv serverip 192.168.1.20 //pc...原创 2019-06-16 17:09:56 · 327 阅读 · 0 评论 -
以busybox制作Linux根文件系统,以及nfs设置和uboot设置--嵌入式开发平台的搭建
主要分为3个部分rootfs相关文件创建及配置虚拟机网络地址及 nfs 服务配置开发板网络和环境变量配置1.rootfs相关文件创建及配置在安装好相应的交叉工具链后,下载busybox源码并解压。进入busybox的源码目录执行#make menuconfig需要配置的总体选项如下:Symbol: BUILD_LIBBUSYBOX [=y]//编译为共享库CRO...原创 2019-06-16 16:59:41 · 1458 阅读 · 0 评论 -
arm-Linux-gcc 交叉编译工具链的安装和系统环境变量修改方法总结
获取交叉编译工具链:1.从芯片供应商中的SDK中复制交叉编译工具链源码到一个Linux目录。2.解压文件到根目录/添加交叉编译工具链到系统的环境变量中:方法1:1. 打开文件~/.bashrc[root@localhost work]# vim ~/.bashrc2. 在其最后面添加如下语句:export PATH=/opt/FriendlyARM/toolschain/...原创 2019-06-12 22:41:18 · 3129 阅读 · 0 评论 -
rv1108 sdk中的isp和sensor启动流程
Isp init and sensor check idcif_isp11_v4l2_drv_probe->cif_isp11_create -> cif_isp11_pltfrm_dev_init -> cif_isp11_pltfrm_soc_init -> cif_isp11_img_srcs_init ->cif_i...原创 2019-05-11 18:02:15 · 2074 阅读 · 3 评论 -
Linux 的camera sensor 驱动代码分析:基于rv1108
rv1108的sdk中关于camera isp的文件目录:rv1108_cvr: kernel arch/arm/boot/dts //dts配置文件 drivers/media platform/rk-isp11 //isp host drivers ...原创 2019-05-11 16:47:46 · 4712 阅读 · 1 评论 -
Linux驱动基础
编写 Linux驱动程序,是为了尽可能发挥硬件的作用以提高性能,但其难点不是在于对硬件的具体操作,而是需要了解清楚现有驱动程序的框架,并在这个框架中找到修改的位置,加入与设计相关的硬件。用户进程是通过设备文件来与实际的硬件打交道。每个设备文件都都有其文件属性(c/b),表示是字符设备还是块设备。另外每个文件都有两个设备号,第一个是主设备号,标识驱动程序,第二个是次设备号,标识使用同一个设备驱动程序...原创 2019-05-11 15:12:00 · 198 阅读 · 0 评论 -
应用层系统调用read,write 执行不到Linux内核驱动中file_operations中的read,write所指向的函数
open系统调用中的open(‘’/dev/dev_node”, RD_ONLY)第二个参数,如果指定为RD_ONLY,那么即使在应用层调用了write接口,也不能执行内核中write的驱动函数,同理如果指定为WR_ONLY,即使在应用层调用了read接口,也无法执行内核中的read函数。...原创 2019-05-11 14:32:26 · 918 阅读 · 0 评论 -
Linux驱动编程API(原子操作,自旋锁,等待队列,延时,定时器,tasklet)
同一资源的并发访问:1.原子操作void atomic_set(atomic_t *v, int i);void atomic_add(int i, atomic_t *v);void atomic_sub(int i, atomic_t *v);void atomic_inc(atomic_t *v);int atomic_inc_and_test(atomic_t *...原创 2019-05-14 22:05:16 · 507 阅读 · 0 评论 -
linux内核中模块间相互依赖的自动连接程序:modprobe外部程序和request_module()函数的分析
以下内容总结自《understanding the linux kernel》在Linux系统中一个包括但不限于驱动模块,可能需要一个或者多个其他的模块,这些模块又可能需要其他的模块。为了内核能够自动链接模块,内核需要创建一个内核线程来执行modprobe程序,该线程要考虑由于模块依赖所引起的所有可能因素。modprobe外部程序和insmod类似,链接在命令行中指定的一个模块。然而,mo...原创 2019-05-01 19:55:47 · 1286 阅读 · 0 评论 -
linux内核使用pinctrl子系统实现操作gpio输出高低电平的实现
硬件平台:rv1108参考博客:https://blog.csdn.net/chenliang0224/article/details/78777995在内核中实现使用pinctrl子系统控制gpio主要实在两个方面:dts文件的节点的添加和驱动代码的编写。1.dts文件的修改dts的文件添加相应的dts节点信息主要是参考dts pinctrl的相关例子。毕竟每个平台的dts的具体...原创 2019-03-18 18:25:04 · 4151 阅读 · 2 评论 -
v4l2驱动框架分析-对底层寄存器的操作分析
对v4l2的基本知识的理解可以参考以下的博客:http://blog.sina.com.cn/s/blog_65a4a5910101dkat.htmlhttps://blog.csdn.net/hktkfly6/article/details/38072935https://blog.csdn.net/LinuxArmbiggod/article/details/80310445...原创 2019-03-16 17:34:48 · 785 阅读 · 2 评论 -
OV4689 和IMX179的dts中节点的区别,以及dts节点的注释说明,基于rv1108平台
文件路径:/kernel/arch/arm/boot/dts/rv1108-camb-v12.dtsi根据实际的硬件连接、 sensor 要求,的各项信息,尤其注意 i2c 地址、 pinctrl、 DVDD 配置、 pd、 reset 引脚及其有效电平。使用的硬件平台:rv1108.同一个mipi接口,dts文件中camera节点的区别和差异dts节点的注释:camer...原创 2019-03-16 16:41:54 · 3650 阅读 · 1 评论 -
shared libraries libxxx.so.4 cannot open shared object file No such file or directory
先找到相应的动态库文件的存放路径。1.将存放路径放在etc/enviment文件下的PATH中,并用“:”号隔开。执行source etc/envirment是修改立即生效。通过echo $PATH查看添加的环境变量是否已存在,继续编译内核镜像,如果还是提示这个错误,继续下一步。2.在命令行执行export LD_LIBRARY_PATH=pathname:$LD_LIBRARY_...原创 2018-08-18 12:08:35 · 1254 阅读 · 0 评论