
Linux开发
华中久
让驱动入门门槛更低!
展开
-
rk3588内核添加特殊分辨率
如果我们需要往HDMI的驱动添加特殊分辨率(即不在原来支持列表:static const struct drm_display_mode dw_hdmi_default_modes[]结构体中的分辨率),比如要添加700x1020@20,此时需要找到对应特殊分辨率的LCD屏参,根据你的屏参来配置对应的行、场参数。rk平台内核本身默认支持一些常规的分辨率,如1920x1080@30,1280x720@60,但是往往不能满足需求,如有的客户需要你添加1020x700@35的分辨率,这时候就要自己加上去了。原创 2024-03-25 16:23:47 · 2370 阅读 · 4 评论 -
Android设备中直接通过shell操作GPIO或者上层c服务直接操作GPIO
我们在Android设备或者linux设备开发的时候,涉及到最基本的操作就是对GPIO的操作,通过标准的linux的GPIO操作函数,我们可以拉高或者拉低GPIO的电平实现控制,例如上电使能,控制LED亮灭等操作。而且我们一般的做法是写一个单独驱动程序,网上大多数的例子都是这样的。其实linux下面有一个通用的GPIO操作接口,那就是下面要介绍的 “/sys/class/gpio” 方式。首先,...原创 2019-05-19 01:16:50 · 3309 阅读 · 1 评论 -
ubuntu16.04设置串口开机直接自动登录
在串口界面,开机直接登陆root用户,无需输入密码验证,即设置串口自动登录。原创 2022-11-23 11:43:55 · 2222 阅读 · 1 评论 -
linux离线预置安装一些应用
ubuntu预装一些应用工具原创 2022-06-16 11:40:20 · 876 阅读 · 1 评论 -
ubuntu离线安装应用工具-离线安装fio工具
在一个能联网的设备中,下载fio工具:apt-get download fio1、查看有哪些依赖apt-cache depends fio@driver:~$ apt-cache depends fiofioDepends: libaio1Depends: libc6Depends: libibverbs1Depends: librados2Depends: librbd1Depends: librdmacm1Depends: zlib1gDepends: pythonSugge原创 2022-05-06 19:34:00 · 3236 阅读 · 0 评论 -
ubuntu18.04设置开机自启动的脚本
ubuntu18.04开机自启动服务原创 2022-03-11 15:33:11 · 3410 阅读 · 0 评论 -
sed命令的使用
[root@www ~]# sed [-nefr] [动作]选项与参数:-n :使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN 的数据一般都会被列出到终端上。但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来。-e :直接在命令列模式上进行 sed 的动作编辑;-f :直接将 sed 的动作写在一个文件内, -f filename 则可以运行 filename 内的 sed 动作;-r :sed 的动作支持的是延伸型正规表示法的语法。原创 2022-01-13 14:47:09 · 449 阅读 · 0 评论 -
创建ubuntu根文件系统
1.安装qemu在Linux PC主机上安装模拟器:sudo apt-get install qemu-user-static2.下载和解压 ubuntu-coreubuntu根文件系统是基于Ubuntu base 16.04来创建的。用户可以到 http://cdimage.ubuntu.com/ubuntu-base/releases/16.04/release/ 下载,选择下载ubuntu-base-16.04.6-base-arm64.tar.gz 。下载完之后,创建临时文件夹并解压根文件原创 2021-09-03 15:58:55 · 2767 阅读 · 0 评论 -
linux实现设备在uboot状态下利用TFTP和NFS加载内核镜像和根文件系统
需求:实现设备在uboot状态下利用TFTP和NFS加载内核镜像和根文件系统总体步骤框架:1、搭建tftp服务器;参考:https://blog.youkuaiyun.com/zengxiaohua123/article/details/80614950步骤如下: 打开ubuntu终端,首先输入命令:“sudo apt-get install xinetd” 安装xinetd,安装完成xinetd后,接下来安装tftp和tftpd,输入命令:“sudo apt-get install tftp tftpd”.原创 2021-08-27 17:04:27 · 580 阅读 · 0 评论 -
ubuntu通过iptables设置某一个ip网段禁用所有端口
iptables其实不是真正的防火墙,我们可以把它理解成一个客户端代理,用户通过iptables这个代理,将用户的安全设定执行到对应的”安全框架”中,这个”安全框架”才是真正的防火墙,这个框架的名字叫netfilter。netfilter才是防火墙真正的安全框架(framework),netfilter位于内核空间。iptables其实是一个命令行工具,位于用户空间,我们用这个工具操作真正的框架。1、安装iptables应用sudo apt-get install iptables2、执行iptab原创 2021-08-25 18:22:51 · 2340 阅读 · 0 评论 -
ubuntu下执行umount无法卸载目录
问题点:如下所示,在执行umount卸载自己挂载的目录的时候,提示target is busy,无法解挂,此时怎么弄?root@driver:/home/caizd/Marvell_A72_old/linux-4.4.52-armada-17.10.0# umount /home/caizd/xfsumount: /home/cai/xfs: target is busy (In some cases useful info about processes that原创 2021-07-19 16:33:53 · 852 阅读 · 0 评论 -
Ubuntu Linux更新的几种命令
1、sudo apt-get update 更新源,从服务器下载软件列表,同步服务器的软件包数据;2、sudo apt-get upgrade 安装可用更新;3、sudo apt-cache search package_name 查询软件包;4、sudo apt-get install package_name 安装一个软件包;5、sudo apt-get remove package 删除一个软件包;6、sudo apt-get help 查看apt-get 命令帮助;...原创 2021-07-15 10:13:48 · 5078 阅读 · 0 评论 -
ubuntu搭建简单http服务器
1、首先安装apache2工具sudo apt-get updatesudo apt-get install apache2apache2安装成功后,我们可以在/var/www/html/目录下看到一个index.html文件,我们只需要重启apache2服务,使用同一局域网的设备登录ubuntu的ip地址就能访问到此页面了。caizd@ubuntu:/home/share$ ls -l /var/www/html/index.html -rw-r--r-- 1 root root 11510原创 2021-07-08 15:16:20 · 6461 阅读 · 5 评论 -
ubuntu执行configure配置代码出现unable to guess system type报错
今天在arm机器中编译一个工具bison-2.7时,使用./configue配置代码的时候,提示识别不了我的系统类型,我的板卡设备型号是aarch64,也就是arm处理器,在这里我只需要指定系统类型即可配置。1、报错如下:checking build system type... ./config.guess: unable to guess system type2、解决方案./configure --host=arm-linux --prefix=/usr --build=arm-linu原创 2021-07-06 18:48:13 · 3819 阅读 · 2 评论 -
ubuntu系统无法连接识别到adb设备和fastboot设备解决方法
最近在使用adb连接安卓设备(mtk安卓设备)的时候出现一个问题:问题一:adb无法识别到设备。这种情况首先需要确认下你的安卓设备的usb口是不是配置成了OTG模式(看代码确认,一般在dts配置),OTG功能就是可以根据你接入的设备,本机自动切换成为host设备或者device设备,host设备通常是作为主机来用,比如你接入u盘的时候,我可以去读取你的u盘,你把usb口接入电脑的usb的时候,我可以成为device,也就是从设备,这时候你可以读取我设备的信息,或者操作我的设备等。我这里usb OTG口原创 2021-06-16 10:56:56 · 6077 阅读 · 4 评论 -
ubuntu下搭建tftp服务器并且验证功能
1.安装tftp工具sudo apt-get install tftpd-hpa //tftp-serversudo apt-get install tftp-hpa //如果不需要客户端可以不安装tftp-hpa是客户端tftpd-hpa是服务器端2.配置TFTP服务器sudo vim /etc/default/tftpd-hpa将原来的内容改为:TFTP_USERNAME=”tftp”TFTP_ADDRESS=”0.0.0.0:69″TFTP_DIRECTORY=”tftp原创 2021-06-07 16:17:49 · 1435 阅读 · 0 评论 -
一个网卡设备配置两个不同网段的IP地址
最近在调试板子的时候,有一个板子它的ip地址是192.168.1.250,而我的电脑主机的ip地址是192.168.11.119,所以我直接去ping这个板子的ip是ping不通的,但是这个时候我又需要去通过ssh来登录这个板子进行操作,怎么整?其实我们可以通过添加一个同网段的ip地址来解决,具体实现如下:1、首先点击设置,找到以太网–>更改适配器选项2、然后点击更改适配器选项,右键选择3、然后选择Internet 协议版本4(TCP/IPv4)4、然后设置固定你当前主机的ip地址原创 2021-04-15 20:03:16 · 17511 阅读 · 2 评论 -
linux v4l2进行视频采集编程介绍
使用V4L2进行视频采集,一般有下面的五个主要步骤:1.打开设备(一般是/dev/video),进行初始化参数设置,包括分辨率,像素格式等;2.申请图像帧缓冲,并进行内存映射mmap;3.把帧缓冲进行入队操作,开始视频流进行采集;4.进行出队,然后对数据进行处理,然后入队,如此循环往复;5.释放资源,停止采集工作。...原创 2021-04-07 19:58:16 · 2337 阅读 · 0 评论 -
同一个路由器下的不同网段如何实现ping通
不同网段的访问,比如要实现1网段和2网段之间能互通,有台服务器IP是192.168.1.2,不能给2网段(192.168.2.3)ping通可以给这个192.168.1.2服务器,附加一个2网段的ip地址,然后2网段的就能ping通它了比如我这里:ip地址是192.168.1.250的设备ping不通192.168.11.119,所以给它附加一个11网段的设备ip地址,比如192.168.11.12就可以ping通了。通过执行ifconfig eth0:11 192.168.11.12来添加附加的ip原创 2021-03-01 15:06:51 · 14073 阅读 · 1 评论 -
linux远程控制桌面
1、linux(ubuntu)的机器执行sudo apt-get install xrdp安装这个,可以使用windows自带的远程工具远程。2、在windows运行里输入“mstsc”然后点确定,可以打开远程工具,然后在输入ip,用户名和密码即可登录远程桌面。...原创 2021-02-22 19:33:07 · 836 阅读 · 0 评论 -
ubuntu系统使用命令行播放MP3歌曲
无论是在linux系统还是在windows系统,我们一般都是习惯于使用界面来播放MP3音乐,下面介绍一种使用命令行的形式来播放音乐,这个软件的名字叫SOX。我们需要先安装一下软件,然后通过命令行来使用这个软件播放音乐,这个软件支持很多格式的音频文件,如 WAV,MP3,MPG,OGG,FLAC 等等1、安装软件,在安装的时候询问你是否继续的时候输入 Y 来确认继续安装。sudo apt-get install soxcaizd@ubuntu:~$ sudo apt-get install sox[s原创 2021-02-22 16:14:45 · 6065 阅读 · 2 评论 -
wget下载命令使用说明
我们可以使用wget从服务器下载文件wget http,ftp下载使用密码用户账户:czd用户密码:666666服务器ip地址:192.168.32.250ftp下载wget ftp://caizd:123456@192.168.32.250/xxx.tgz断点续传和指定下载到的路径:wget -c ftp://czd:123456@192.168.32.250/home/czd/xxx.tgz -P /注:-c是continue简称,-P是path,也就是路径。http下载$wge原创 2021-02-04 16:14:10 · 541 阅读 · 0 评论 -
linux系统的磁盘挂载情况
Linux系统里一般都有这三个文件:/etc/fstab,/etc/mtab,/proc/mounts。/etc/fstab/etc/fstab 是只读不写的,它提供的是系统上挂载设备的静态信息,比如 mount -a 就会挂载 /etc/fstab 里面指定的文件系统。etc/fstab文件的作用是记录计算机上硬盘分区的相关信息,启动 Linux 的时候,检查分区的 fsck 命令,和挂载分区的 mount 命令,都需要 fstab 中的信息,来正确的检查和挂载硬盘。/etc/mtab/e原创 2021-01-21 17:20:19 · 556 阅读 · 3 评论 -
linux查找符合条件的文件并删除
找到根目录下所有的以hello开头的文件并把查找结果当做参数传给rm -rf命令进行删除:1、find / -name “hello*” |xargs rm -rf2、rm -rf $(find / -name “hello”)如果想指定递归深度,可以这样:1、find / -maxdepth 5 -name “hello*” |xargs rm -rf2、rm -rf $(find / -maxdepth 5 -name “hello”)这样只会查找5层目录中符合条件的文件并删除掉!...原创 2021-01-07 13:52:18 · 952 阅读 · 0 评论 -
Linux查看当前系统的版本信息
当我们给Linux升级之后,如何查看它的版本号?包括位数、版本信息以及内核信息、文件系统版本等等。1、# uname -a (Linux查看版本当前操作系统内核信息)[root@vclustersBMC-ls2k ~]# uname -aLinux vclustersBMC-ls2k 3.10.0+ #9 SMP PREEMPT Mon Dec 7 09:56:32 CST 2020 mips64 mips64 mips64 GNU/Linux2、# cat /proc/version (Li原创 2021-01-05 10:26:52 · 3639 阅读 · 0 评论 -
shell命令执行操作仍需点击y确认问题的处理
问题现象:我们在执行cp拷贝的时候,强制覆盖拷贝命令时,每一个文件都需要认为的键入“Y”进行确认,难道要我一个一个点击直到完成吗,这个也太费劲了?问题说明:为了防止不正当的使用cp命令,设置了cp的同名alias cp=‘cp -i’所以在每次执行cp命令是都会按照这个设置进行一一人为的确认(-i参数的含义)。问题处理:1.临时处理方法:取消同名cp的定义,命令如下unalias cp2.永久处理方法:找到设置该同名的的地方,去掉相应的设置。如果您说找不到那位可爱同事设置的地方,也不要紧原创 2020-12-31 16:30:51 · 2935 阅读 · 0 评论 -
linux fdisk的分区和格式化和挂载相关操作说明
首先执行fdisk /dev/sdb 进入该设备分区模式。此时出现:Command (m for help):查看帮助信息:输入m,看到如下信息Command actiona toggle a bootable flagb edit bsd disklabelc toggle the dos compatibility flagd delete a partition 注:这是删除一个分区的动作;l list known partition types 注:l是列出分原创 2020-12-04 17:04:24 · 1841 阅读 · 0 评论 -
龙芯rtc时间关机重启后不能保存问题分析
rtc时间不能保存,首先检查下硬件是否接得有问题,如果不会查看,请硬件佬帮忙,并且测量下rtc电池电压,一般是3v就是正常的。查看log如下:[root@vclustersBMC-ls2k ~]# dmesg | grep rtc[ 2.195835] rtc rtc0: 1fe07800.rtc: dev (254:0)[ 2.195854] ls-rtc 1fe07800.rtc: rtc core: registered 1fe07800.rtc as rtc0[ 2.85原创 2020-11-17 11:12:04 · 1145 阅读 · 0 评论 -
Linux创建内核线程kthread_create的用法介绍
内核线程是工作在内核空间的,不属于任何一个进程,可以发生睡眠。可以用内核线程来进行一些循环的动作,比如通过循环拉高拉低gpio设置成方波输出的信号,比如循环控制led的闪灯效果等等都可以使用到内核线程kthread_create接口函数。内核线程的相关代码目录:include/linux/kthread.h kernel/kthread.c1、创建并启动一个内核线程struct task_struct *kthread_create(int (*threadfn)(void *data),原创 2020-11-14 00:51:20 · 11942 阅读 · 1 评论 -
调试裕泰微yt8521s的phy芯片流程记录
1、获取phy芯片相关资料,包括datasheet等相关资料;2、硬件上确认跟主控接的是什么接口,RGMII或者SGMII等,这个一般根据原理图接的来确认;3、根据datesheet获取PHY id和PHY id的掩码(掩码一般是0xfffffff0)等,phy id也可以从代码中读出来,具体可见phy.c源码;4、初始化phy寄存器的配置,可以参考资料说明或者FAE协助(一般是先设置寄存器page,然后再去读写对应page区的寄存器值),当然了,不同的芯片可能读写方式不同,具体问题具体分析;5、在原创 2020-11-05 21:06:59 · 36008 阅读 · 10 评论 -
Linux系统中设置静态ip地址
1、在终端中输入:vi /etc/sysconfig/network-scripts/ifcfg-enp1s0 //eth0是你的网卡设备名称,一般可以通过ifconfig -a查看到[root@vclustersBMC-ls2k ~]# ifconfig -aenp1s0f0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.1.155 netmask 255.255.255.0 b原创 2020-11-05 18:03:00 · 1394 阅读 · 1 评论 -
ethtool工具设置网口配置
ethtool工具可以用来查看网卡以及修改网卡配置ethtool 命令详解ifconfig -a //查看一下有几个网卡设备,一般是ethX,X=0,1,2,…ifconfig ethX up //打开网卡设备ifconfig ethX down //关闭网卡设备使用概要:ethtool ethx //查询ethx网口基本设置,其中 x 是对应网卡的编号,如eth0、eth1等等ethtool –h //显示ethtool的命令帮助(help)e原创 2020-10-30 10:17:44 · 3426 阅读 · 2 评论 -
Linux的Sysfs文件系统简要说明
一、Sysfs文件系统内核设备模型主要的模块和用户之间能看到的相关部分就是sysfs文件系统了。内核在启动的时候会注册sysfs文件系统,并且在启动系统的初期。通过mount命令挂载sysfs文件系统到/sys挂载点。Mount -t sysfs sysfs /sys那么sysfs文件系统的作用是什么呢。概括的说有三点: 1)、建立系统中总线、驱动、设备三者之间的桥梁 2)、像用户空间展示内核中各种设备的拓扑图原创 2020-07-16 10:23:25 · 515 阅读 · 0 评论 -
在串口输入input keyevent发送按键值给机器
1.adb shell进入android设备或者DEBUG串口中,执行命令input keyevent keycode即可。例如:input keyevent 66为KEYCODE_ENTERKEYCODE和对应的数值在android源码中定义如下:/** Key code constant: Unknown key code. */ public static final int KEYCODE_UNKNOWN = 0; /** Key code constant:原创 2020-07-14 11:00:38 · 3014 阅读 · 0 评论 -
Linux的i2c通讯协议
I2C通信,一条数据线,一条时钟线。 I2C 总线在传送数据过程中共有三种类型信号:开始信号、结束信号和应答信号。开始信号:SCL 为高电平时, SDA 由高电平向低电平跳变,开始传送数据。结束信号:SCL 为高电平时, SDA 由低电平向高电平跳变,结束传送数据。应答信号:接收数据的 IC 在接收到 8bit 数据后,向发送数据的 IC 发出特定的低电平脉冲,表示已收到数据。I2C写数据时序首先主机(即树莓派,后面统称为主机)会发送一个开始信号,然后将其 I2C 的 7 位地址与写操作位组合原创 2020-07-14 10:19:17 · 558 阅读 · 1 评论 -
linux创建线程pthread_create函数
函数简介 pthread_create是UNIX环境创建线程函数头文件 #include<pthread.h>函数声明 int pthread_create(pthread_t *restrict tidp,const pthread_attr_t restrict_attr,void(start_rtn)(void),void *restrict arg);返回值 若成功则返回0,否则返回出错编号。参数第一个参数为指向线程标识符的指针。 第二个参数用来设置线程属性原创 2020-06-12 20:03:47 · 1092 阅读 · 0 评论 -
Linux给驱动模块传参数(module_param()用法)
它被称为debug调试驱动必备之良器;在用户态下编程可以通过main()来传递命令行参数,而编写一个内核模块则通过module_param()来传递参数调试驱动;module_param宏是Linux 2.6内核中新增的,该宏被定义在include/linux/moduleparam.h文件中,具体定义如下#define module_param(name, type, perm) module_param_named(name, name, type, perm)其中使用了 3 个参数:原创 2020-06-04 15:40:34 · 1026 阅读 · 0 评论 -
Linux的c编程getopt(分析命令行参数)
函数使用说明:头文件 #include<unistd.h>定义函数 int getopt(int argc,char * const argv[ ],const char * optstring);optstring中的指定的内容的意义(例如getopt(argc, argv, “ab:c????????:”);)1.单个字符,表示选项(如下例中的abcde各为一个选项)。2.单个字符后接一个冒号:表示该选项后必须跟一个参数。参数紧跟在选项后或者以空格隔开。该参数的指针赋给optarg原创 2020-05-26 11:17:03 · 373 阅读 · 0 评论 -
Linux-shell编程_xargs命令详解
xargs是给命令传递参数的一个过滤器,也是组合多个命令的一个工具。它把一个数据流分割为一些足够小的块,以方便过滤器和命令进行处理。通常情况下,xargs从管道或者stdin中读取数据,但是它也能够从文件的输出中读取数据。xargs的默认命令是echo,这意味着通过管道传递给xargs的输入将会包含换行和空白,不过通过xargs的处理,换行和空白将被空格取代。xargs是一个强有力的命令,它能够捕获一个命令的输出,然后传递给另外一个命令,下面是一些如何有效使用xargs 的实用例子。1. 当你尝试用rm原创 2020-05-22 18:36:40 · 858 阅读 · 0 评论 -
Linux的c编程-文件节点的打开与读写操作
1、open(打开文件)相关函数read,write,fcntl,close,link,stat,umask,unlink,fopen表头文件#include<sys/types.h>#include<sys/stat.h>#include<fcntl.h>定义函数int open( const char * pathname, int flags);int open( const char * pathname,int flags, mode_t mo原创 2020-05-12 16:52:24 · 3749 阅读 · 0 评论