linux 驱动开发
驱动笔记
rjszcb
不断学习变成牛
展开
-
linux 开发板以太网通过Ubuntu上外网方法
如果不正确,检查是否将/run/system/resolve/resolv.conf链接到/etc/下,有些可能会导致无法覆盖修改的dns,不起效,可以手动建立链接文件。在开发板嵌入式设备,有一个mgbe网卡,用网线与连接soc的网卡,和外接网卡,将网卡usb接口插入电脑,选择接入到Ubuntu系统。soc设备端,有多个网卡,我是通过mgbe2_0与外部通讯的,设置一下默认网关,数据默认从这个网卡传输,设置dns。如下,Ubuntu识别到一个ens33网卡,设置soc的和Ubuntu的ip在同一个网段,原创 2023-11-21 19:59:52 · 807 阅读 · 0 评论 -
linux制作 ext4镜像image 脚本demo
将需要打包进镜像的文件丢进target的对应文件下,先生成ext4文件进行,然后挂载,cp拷贝到镜像包,最后卸载,这样就做出了一个镜像包,然后将文件替换,和md5 hash值,文件大小替换烧录文件里。记录烧录起始地址,结束地址,md5等等。readme 使用方法。原创 2023-11-21 17:05:05 · 262 阅读 · 0 评论 -
linux md5sum计算hash指令
在soc启动,验证镜像签名时,会计算文件的hash值,确保文件未被修改,md5sum可以计算,有256,512位的的其他指令,如下,计算文件hash值。原创 2023-11-21 16:26:06 · 110 阅读 · 0 评论 -
linux驱动.之 网络udp应用层测试工具demon(一)
绑定vlan,网卡的demon,如果有多个网卡,多个vlan,网卡的ip设置成一致,那就不能只简单绑定ip来创建socket,将两个程序编译成二进制执行程序,放到开发板运行,就行测试。服务端udp_service.c。客户端udp_client.c。原创 2023-11-21 16:05:22 · 717 阅读 · 0 评论 -
linux驱动.之 tty uart应用层测试工具demon(一)
在开发板终端 输入指令, ./tty_uart_test -D /dev/ttyTHS1 -w 0x55 ,输出方波,即可测试uart是否发送数据,用示波器看是否有收到方波。tty_uart_test.c 测试程序。编译成二进制可执行文件后。原创 2023-11-21 15:54:33 · 163 阅读 · 0 评论 -
linux驱动开发.之spi测试工具spidev_test源码(一)
spidev_test.c开源代码。原创 2023-11-21 15:38:30 · 1539 阅读 · 0 评论 -
linux内核,fs,app ,debug调试手段
追加打印消息到控制台。原创 2023-11-02 15:26:42 · 213 阅读 · 0 评论 -
linux 测试存储介质.emmc.nand.ufs.硬盘的读写速度方法
创建一个test.sh脚本。创建一个test.sh脚本。原创 2023-10-18 10:14:42 · 566 阅读 · 0 评论 -
一个写了很多博客的技术博主
一个技术博主,https://www.cnblogs.com/sky-heaven/category/740088.html。原创 2023-10-16 19:28:51 · 60 阅读 · 0 评论 -
Linux MTD系统剖析【转】
https://www.cnblogs.com/sky-heaven/p/13344644.html转载 2023-10-13 19:55:58 · 48 阅读 · 0 评论 -
linux系统篇(二).之Systemd机制
使用如下软链接命令 sudo ln -s /usr/lib/systemd/system/clamd@scan.service /etc/systemd/system/multi-user.target.wants/clamd@scan.service。systemctl脚本存放在:/usr/lib/systemd/,有 系统(system)和用户(user) 之分,像需要 开机不登陆就能运行 的程序,还是存在系 统服务里 吧,即:/usr/lib/systemd/system目录下。原创 2023-10-07 11:38:51 · 288 阅读 · 0 评论 -
linux系统篇(一).之Systemd机制
Systemd默认从目录/etc/systemd/system/读取配置文件,但是里面存放的大部分文件都是符号链接,指向目录/usr/lib/systemd/system,配置文件存放于/usr/lib/systemd/system/,开机启动后会在/etc/systemd/system目录建立软链接文件, 每个Unit的配置文件配置默认后缀名为.service,systemctl enable命令用于在上面两个目录之间,建立符号链接关系。启动计算机的时候,需要启动大量的Unit。二、是启动脚本复杂。转载 2023-09-28 18:51:27 · 564 阅读 · 0 评论 -
linux以太网(三).之netstat命令
netstat命令是一个监控TCP/IP网络的非常有用的工具,它可以显示路由表、实际的网络连接以及每一个网络接口设备的状态信息。原创 2023-09-27 19:58:43 · 140 阅读 · 0 评论 -
i2c驱动应用开发专题(一)之i2c-tools工具使用
0x36为I2C设备的地址, 0x300A为要读的寄存器地址, r3为连续读3Byte, 0x56 0x08 0x41 为读到的寄存器的值。1,上面有UU和和数字显示,UU表示此地址已经加载了驱动,具体有没有设备不一定,显示有数字说明探测到设备了,也可能是系统的,不知是谁的。i2c-tools工具是一个专门调试i2c的,开源,可获取挂载的设备及设备地址,还可以在对应的设备指定寄存器设置值或者获取值等功能。读取i2c4总线上的,设备地址为0x4c的设备,寄存器0x00的值,为0x71。原创 2023-09-26 15:22:46 · 858 阅读 · 0 评论 -
Linux 配置dns覆盖默认127.0.0.53
Linux dns默认127.0.0.53,在/etc/resolve.conf中存在 nameserver 127.0.0.53,手动修改无果,每次重启依旧127.0.0.53,因为这是系统生成的文件,resolvectl命令来查dns的配置。ping www.baidu.com #用ping连接百度验证,成功连接,能够解析域名。如果是自己的dns服务器,就换成公司的,之后查询,已生效。要修改dns,先暂停dns服务,如下操作,#然后重启网络服务器;原创 2023-07-06 10:56:01 · 3194 阅读 · 1 评论 -
linux以太网(一).之ip,静态arp,route路由,gateway网关,iptable防火墙,vlan
linux 配置以太网arp iptable防火墙。原创 2023-07-04 13:53:10 · 1439 阅读 · 0 评论 -
Linux dd 命令使用
dd命令的使用,等下写。原创 2023-06-19 13:47:34 · 89 阅读 · 0 评论 -
Linux挂载的文件系统类型
mount指令,查看当前系统挂载了那些文件系统,proc,sysfs,tmpfs,selinuxfs,pstore,cgroup,debugfs,tracefs,都是伪文件系统。不占用磁盘,只在系统起来后,运行在内存,比如ext3.ext4,jffs2,yaffs2,ubi等等常见的文件系统,是根文件系统,占用磁盘,空间的。mount指令可以看到各个分区的属性,rw,ro,可读可写或只读,在开发阶段,一般设置为可读可写,量产时,将会设置为只读。可以看到,设置分配了很多用户分区,用于存储数据。原创 2023-06-19 13:48:08 · 120 阅读 · 0 评论 -
Linux系统时间date命令
可以直接在终端输入这两个指令,就可以立即更新系统时间,用date命令,可以查看当前是否修改对。如果要每次开机,进行时间同步,将这个指令放到系统启动脚本里,每次开机都执行,原创 2023-06-05 15:04:38 · 435 阅读 · 0 评论 -
linux switch 以及PHY
或反过来将网线传输过来的模拟信号,转换成数字信号,给soc,phy芯片一般有,控制接口(MDC/DMIO,I2C,SPI),数据接口(RGMII / GMII/MII)。个人理解是,是时序逻辑控制器,比如iic,spi,控制发送起始信号,发送数据,停止信号,控制时序的产生。PHY: 单纯的物理层芯片,就是将数字信号转模拟信号,将soc发过来的数字信号,转换成模拟信号,通过网线,发送出去,有些soc只有一个网卡接口,可以接一个Switch,接多个phy,Switch实现转发功能。原创 2023-06-01 11:45:21 · 1098 阅读 · 0 评论 -
问题记录 bug4-linux网卡初始化失败(四)
系统启动后,网卡设备驱动加载失败,这是个隐蔽的问题,外接Switch,phy,未及时上电,导致初始失败。是mcu控制外接网卡芯片供电,导致的问题。原创 2023-05-31 18:40:31 · 124 阅读 · 0 评论 -
问题记录 bug3-linux磁盘分区lsblk与df查看空间大小不一样(三)
问题记录 bug3-linux磁盘分区lsblk与df查看空间大小不一样。原创 2023-05-31 18:39:07 · 811 阅读 · 0 评论 -
问题记录 bug2-linux磁盘分区/格式化/挂载(二)
linux磁盘分区/格式化/挂载,明天写,原创 2023-05-31 18:38:00 · 44 阅读 · 0 评论 -
问题记录 bug1-系统上电挂载异常分区,df与du命令查看文件使用大小显示不一样
我们分配的block0p1,是给根文件系统用的,kernel启动后,会将/root挂载在这个分区,这样,后面kernel挂载完驱动后,就会去启动第一个进程,并使用/etc下的各种配置文件,对系统进行配置,比如配置网卡ip,配置log日志,并启动各种脚本,各种用户程序。根据这个博主说的,确实解决了问题,所以,这里提一下,为啥会出现这种损坏文件,导致磁盘分区异常的呢,有可能是系统关机过程,正在写文件,突然断电了,就会导致这个文件的损坏,所以一般正常的关机,都会去umount 驱动,挂载文件,原创 2023-05-31 18:35:13 · 1197 阅读 · 0 评论 -
shell命令操作gpio
或/sys/class/gpio/gpio44# echo in > direction。或/sys/class/gpio/gpio44# echo 0 > value。原创 2023-04-20 16:08:42 · 466 阅读 · 0 评论 -
linux以太网(二).之ethtool命令
以太网 ethtool命令详解。原创 2023-03-29 11:42:58 · 2582 阅读 · 0 评论 -
spi驱动(一)
首先来看一下SPI 总线,在讲 platform 的时候就说过,platform 是虚拟出来的一条总线,目的是为了实现总线、设备、驱动框架。上面已经说了spi_master了,还剩下还剩下设备和驱动,spi_client就是描述设备信息的,spi_driver描述驱动内容,类似于 platform_driver。SPI设备和驱动的匹配过程是由 SPI总线来完成的,这点和platform、I2C等驱动一样。由于裸机的驱动迎合驱动的分离和分层的思想,分为SPI主机驱动(接口驱动)和SPI设备驱动.转载 2023-02-02 17:46:11 · 655 阅读 · 0 评论 -
iptables基础知识详解
iptables基础知识详解。原创 2023-01-16 18:43:36 · 91 阅读 · 0 评论 -
LCD 时序计算公式
30HZ就是 ccx1k,ccx1k/1000 = fps 即刷新率,fps 就是30帧,也就是屏幕的刷新率是30帧/s,根据实际情况,分配前尖,后尖等时序,如果屏幕图像往左偏,往右偏,往上偏,往下偏,调整四个参数就行。clock-frequency-khz就是时钟频率,74MHZ,ccx1k/1000 = fps 即刷新率。可以看下下面一个配置lcd的时序配置。根据这个公式,就可以计算出各个时序。hactive 就是水平分辨率。vactive 就是垂直分辨率。原创 2023-01-16 16:23:46 · 1354 阅读 · 0 评论 -
mtdparts分区设置(cmdline,uboot,Linux-kernel)
mtdparts分区设置原创 2022-12-09 17:30:26 · 537 阅读 · 0 评论 -
SD卡相关分区内容设置 x210 SD卡烧录方法
注意:有些生成的镜像文件很大,(如LCD显示图片等程序),大于16kb,这时候就必须要进行代码重定位,实现分步加载.BL1仅仅做一些初始化工作,BL2则是真正运行的主程序代码.分步加载的时候还要注意SD卡烧写的扇区个数要达到整个程序的文件大小.第一层启动从SD0(inand)启动, 当iNand启动做校验和时失败才会转为启动SD2。BL1.bin:是复制到SD卡中用SD卡烧录. BL1.bin是bootloader1.bin经过mkv210加工转化增加头文字校验信息得到的专门用于SD卡烧录的镜像文件.原创 2022-11-27 22:48:17 · 415 阅读 · 0 评论 -
linux kernel内核、驱动日志调试方法(一)
对于正在运行的内核,所谓的core文件就是这个内核在内存中的核心映像,即/proc/kcore。proc文件系统是一种无存储的文件系统,当读其中的文件时,其内容由文件关联的读函数动态生成,当写文件时,文件所关联的写函数被调用。printk是打印内核消息的函数,printk通过附加不同日志级别(loglevel)或者说消息优先级,让printk对消息进行分类,这是与printf最大的区别,在编译时,日志级别宏会被展开为一个字符串,然后与消息本文拼接在一起,因此printk中优先级和格式字符串之间没有逗号。原创 2022-11-25 17:33:10 · 5144 阅读 · 1 评论 -
Linux /proc目录和 /sys目录(一)
由于系统的信息,如进程,是动态改变的,所以用户或应用程序读取proc文件时,proc文件系统是动态从系统内核读出所需信息并提交的。该文件指定了可以分配的文件句柄的最大数目。系统中当前运行的每一个进程都有对应的一个目录在/proc下,以进程的 PID号为目录名,它们是读取进程信息的接口。如下,可以看到proc,证明proc是个虚伪文件系统,还有debugfs,sysfs,ext3,等这些熟悉的系统。下面是一部分信息,太多了,启动时显示log图片,设置堆栈,设置文件系统,挂载,注册鼠标,键盘,usb驱动等等,原创 2022-11-25 15:45:52 · 1007 阅读 · 0 评论 -
platform设备驱动全透析(转自宋宝华老师)
注意,所谓的platform_device并不是与字符设备、块设备和网络设备并列的概念,而是Linux系统提供的一种附加手段,例如,在 S3C6410处理器中,把内部集成的I2 C、RTC、SPI、LCD、看门狗等控制器都归纳为platform_device,而它们本身就是字符设备。对platform_device的定义通常在BSP的板文件中实现,在板文件中,将platform_device归纳为一个数组,最终通过 platform_add_devices()函数统一注册。设备所使用各类资源数量。原创 2022-11-20 14:39:43 · 310 阅读 · 0 评论 -
linux中的input设备(转)
linux中的input设备(转)转自:http://blog.csdn.net/lmm670/article/details/6080998用过linux的哥们都知道,linux所有的设备都是以文件的形式实现的,要访问一个设备,我们只需要以open、read、write的形式对设备的进行操作就可以了。在linux系统的/dev目录下,罗列了当前系统支持的所有设备。运行 ls /dev一下,着实吓了一大跳,[root@localhost ~]# ls /devadsp full m原创 2022-11-20 14:37:46 · 1010 阅读 · 0 评论 -
S3C2440上触摸屏驱动实例开发讲解
在"S3C2440上ADC驱动实例开发讲解"中,AD转换的模拟信号是由开发板上的一个电位器产生并通过通道1(AIN0)输入的,而这里的模拟信号则是由点触触摸屏所产生的X坐标和Y坐标两个模拟信号,并分别通过通道7和通道5输入。(2)当ADC转换启动后,触发ADC中断即进入adc_irq,如果这一次转换的次数小于4,则重新启动ADC进行转换,如果4次完毕后,启动1个时间滴答的定时器,停止ADC转换,也就是说在这个时间滴答内,ADC转换是停止的;如果要编译此代码,请严格按照C语言的规范来调整代码的顺序。原创 2022-11-20 14:33:34 · 144 阅读 · 0 评论 -
基于s3c2440的12864液晶驱动
通过class_create和device_create生成并注册一个逻辑设备,通过此工作,可以在/dev/下面看到设备名;以上主要工作是:通过register_chrdev_region静态分配设备号devno,如果分配失败,则通过系统alloc_chrdev_region动态分配;因为公司结构方面的需要,要将液晶倒转显示,所以此处做了两个不同的方案,如果定义了NORMAL,则正常显示,否则倒转显示;引脚定义:D0-D7,RS,RES,RD,WR,CS,BL;以上则是液晶屏的驱动程序,很简单吧?原创 2022-11-20 14:32:18 · 226 阅读 · 0 评论 -
inux 2.6中断下半部机制分析
inux 2.6中断下半部机制分析Posted on 2013-03-12 23:46 feisky 阅读(369) 评论(0) 编辑 收藏Linux 2.6中断下半部机制分析作者:流星摘要 本文主要从使用者的角度对Linux 2.6内核的下半部机制softirq、tasklet和workqueue进行分析,对于这三种机制在内核中的具体实现并未进行深入分析,倘若读者有兴趣了解,可以直接阅读Linux内核源代码的相关部分。说明 本文档由流星自网上收集整理,按照自由软件开放源代码的精神发布,原创 2022-11-20 14:30:26 · 97 阅读 · 0 评论 -
/proc/device 和/dev下设备的区别联系,为啥老接口驱动注册后,还要mknode手动创建设备节点,目的是啥?
/proc/device 和/dev下设备的区别联系,为啥老接口驱动注册后,还要mknode手动创建设备节点,目的是啥?这个问题学驱动的时候,没搞明白,现在好像明白了表象,在把驱动编译入内核后,系统上电启动加载内核,或者是编译成驱动模块,手动insmode安装驱动。最后会将设备添加到/proc/devices目录下,通个这个应用层就可以和内核交互信息,查看信息,但是加载完内核驱动后,应用层想要open这个设备,是需要将驱动添加到/dev,才能使用驱动的,为啥需要在这个目录,我不太清楚,大概是文件系统提供的原创 2022-11-15 11:22:48 · 585 阅读 · 1 评论 -
HI3559AV100 GPIO配置和操作(二)
HI3559AV100 GPIO配置和操作,有个坑,记录一下,我使用的gpio1_6端口,接一个led灯,按前篇文档一介绍的方法,测试,始终没设置为输出模式,控制led。gpio默认都是gpio,输入模式,查看此引脚,没有复用,所以没有复用它,直接操作,控制输入高,低。坑啊最好上电使用时,对它复用配置,按文档一,配置它,在sdk里,代码里也设置了一下,坑,不知道这里也会设置gpio属性,搜索这个复用寄存器0x1F000018,在自己的启动脚本load3559av100_multicore,这个不知道是h原创 2022-07-04 19:24:51 · 357 阅读 · 0 评论