- 博客(170)
- 资源 (43)
- 收藏
- 关注
原创 linux中sysfs创建设备节点的方法和DEVICE_ATTR
使用DEVICE_ATTR宏,可以定义一个struct device_attribute设备属性,使用函数sysfs_create_group或sysfs_create_file便可以在设备目录下创建具有show和store方法的节点。能方便的进行调试。
2024-05-23 20:03:37 468
原创 设备树 — platform_device和platform_driver如何让匹配
可以发先追溯到底,是利用"compatible"来匹配的,即设备树加载之后,内核会自动把设备树节点转换成 platform_device这种格式,同时把名字放到of_node这个地方。id_tabel是根据id_table表中的每一个和设备名字进行匹配,这样一个驱动可以支持多个名称的设备。1.ti的omap8250驱动可以支持好多个型号的芯片,其它芯片只要这个的驱动基础上做很小的改动就可通用。当然除了第一个之外,其它的只要没匹配到,后面的几个匹配还会继续执行的。主要是在匹配函数里面的支持设备树。
2024-05-23 20:00:40 405
原创 C 语言printf打印各种数据类型的方法(u8/s8/u16/s16.../u64/double/float)
long long/unsigned long long ----->十六进制 %0llx。long long/unsigned long long ----->八进制 %0llo。unsigned long/long---->十六进制 %0lx。unsigned int/int------>十六进制 %0x。unsigned long/long---->八进制 %0lo。unsigned int/int------>八进制 %0o。数据类型 打印格式。
2024-05-23 10:08:14 294
原创 交叉编译Ubuntu Debian内核 for raspiberry 4B && 另一种开机自动连接wifi的方法
接着插卡,开机,就启动不了了。然后我在百度、谷歌、搜狗搜索了两天,了解了内核发展史上,使用过的各种压缩解压算法,比如lz4,gzip等等等。而用 debian/rules编译内核时,跳过了配置这一步(用了debian/rules的配置方法,当然其配置文件也存放在某个目录下,但不在源码根目录下)。而如何用debian/rules的方式编译外部模块,又找不到太多的相关资料,只知道个m-a(module-assistant,https://wiki.debian.org/ModuleAssistant)命令。
2024-05-22 22:12:30 345
原创 驱动编译错误 /bin/sh: scripts/mod/modpost
出现这样的错误,说明scripts下没有生成相应的文件,cd到kernel所在目录,执行: make scripts。然后 make ,就没有这样的错误了.
2024-05-22 17:37:06 68
原创 【UEFI实战】Linux下如何解析ACPI表
上述的iasl工具获取ACPI表需要从特定目录去拿,比较复杂,这里还可以用一个简单的工具acpidump来获取。版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。iasl是一个编译和解析ACPI的工具,在编译UEFI的时候也是必不可少的。之后就可以通过iasl命令来解析ACPI文件了。本文介绍如何在Linux下查看ACPI表示。以上就是对APCI表在Linux下解析的一些说明。所以需要借助额外的工具来查看。
2024-05-22 14:24:19 283
原创 交叉编译错误:cc1: error: unrecognized command line option “-mlittle-endian“
目前使用的cc为 aarch64-linux-gnu-gcc。存在于位置/usr/bin目录下.。百度多次,说是交叉编译工具导致.。直接修改makefile文件。
2024-05-22 13:05:12 167
原创 解决linux kernel 编译的错误问题
祖爷爷级别的Makefile 给你规定了 -Werror=incompatible-pointer-types。linux 这么大的工程,当你的模块和别人的模块公用一个框架比如DRM。这个时候你又不想用它怎么办呢。就是在你的代码里加上。
2024-05-22 00:42:41 150
原创 教你如何装黑客之遍历文件夹
我是十六帧录制的效果有点差 实际效果很好 而且可以开多个cmd窗体 假装自己是黑客。win+r键打开cmd窗体。输入命令dir /s。
2024-01-05 17:38:51 356
原创 简单的Makefile编写
CC = gcctarget = udp_simple_serverobj = udp_server.oDIR = ($shell pwd)QUIET_CC = @printf ' %b %b\n' CC $@ 1>&2;QUIET_LD = @printf ' %b %b\n' LD $@ 1>&2;%.o: %.c $(QUIET_CC)$(CC) -c $< -o $@$(target): $(obj) $(QUIET_LD).
2022-02-20 12:19:21 1050
原创 linux内核numa简单的bitmap操作
nodemask_t存放的是有关节点的配置信息。定义如下typedef struct { DECLARE_BITMAP(bits, MAX_NUMNODES); } nodemask_t;DECLARE_BITMAP定义如下#define DECLARE_BITMAP(name,bits) \ unsigned long name[BITS_TO_LONGS(bits)]-----------------------------------------------------...
2021-11-25 16:57:51 551
原创 Linux启动时的页表映射
内核启动时进行内存映射,map_mem()->create_mapping()内核支持4级映射(PGD->PUD->PMD->PTE) ,支持的level由宏CONFIG_PGTABLE_LEVELS定义,目前为3级映射,也即PGD->PMD->PTE从下图可以知道,每级页表分别使用虚拟地址的9位作为索引,也即每级页表大小为512. 虚拟地址最后12bit作为页内索引.从而表示一个具体的物理地址页表,虚拟地址,物理地址关系一、前..
2021-10-20 17:32:42 619
原创 C语言编程插入、删除数组元素
1.删除操作#include <stdio.h>int main(){ int arr[5]={1,3,5,7,9}; int arr_new[sizeof(arr)/sizeof(int) -1 ]; int index=2; for(int i=0;i<5;i++) { if(i< index) { arr_new[i] = arr
2021-10-20 14:07:18 1825
原创 centos8忘记密码解决方法(非救援模式)
1.重启centos8,在这个界面按上下键选中第一行2.按’e’键,进入如下界面,移动向下方向键至“linux16”开头的行。然后按向右的方向键移动,找到“ro”并将其修改为“rw init=/sysroot/bin/bash”。(rw后边有空格,\是系统自己添加的)------------------------------------------------------------------------------------------------------------------
2021-10-20 12:08:13 672 1
原创 深入理解linux内存管理之 页表管理
页表是内存管理系统中的数据结构,用于向每个进程提供一致的虚拟地址空间,每个页表项保存的是虚拟地址到物理地址的映射以及一些管理标志。应用进程只能访问虚拟地址,内核必须借助页表和硬件把虚拟地址翻译为对物理地址的访问。页表作用在使用虚拟地址空间的linux操作系统上,每一个进程都工作在一个4G的地址空间上,其中0~3G是应用进程可以访问的user地址空间,是这个进程独有的,其他进程看不到也无法操作这个地址空间;3G~4G是kernel地址空间,所有进程共享这部分地址空间。由于每个进程都有3G的私有进程
2021-10-19 16:56:08 1103
原创 内存管理源码分析-内核页表的创建以及索引方式(基于ARM64以及4级页表)
页表的主要作用是完成虚拟地址到物理地址的转换,更详细的介绍可以参考这个优秀的博客,很好地介绍了页表的理论。Linux如何实现这个页表理论呢?以及如何进行寻址呢?本文将会结合代码,从代码出发,基于ARM64的架构,分析Linux从源码上如何实现页表理论。从一个页的地址说起对于ARM64的架构,一个虚拟地址的大小是64bit。但是实际上并不是全部64bit都是用来寻址的,其中一部分bit会基于架构的不同有一样的作用,但是一个最基本的应用是区分当前地址是用户态和内核态的地址。内核可以通过宏CONFIG_A
2021-10-19 16:51:15 572
原创 build centos 8.2 kernel and download some packages
http://rpmfind.net/linux/centos/8-stream/PowerTools/aarch64/os/Packages/dwarves-1.19-1.el8.aarch64.rpmhttps://vault.centos.org/8.2.2004/BaseOS/Source/SPackages/elfutils-0.178-7.el8.src.rpmhttps://vault.centos.org/8.2.2004/BaseOS/Source/SPackages/libbpf-0
2021-01-23 16:04:38 314
原创 build open vn for docker
当前环境,全新的Centos7.4系统,配置好yum源1、安装docker 1 2 3 4 5 yum install yum-utils device-mapper-persistent-data lvm2 wget -O /etc/yum.repos.d/docker-ce.repo https://downlo...
2021-01-23 16:03:35 371 1
原创 CentOS SRPMS link
https://vault.centos.org/8.2.2004/AppStream/Source/SPackages/
2021-01-18 19:16:12 100
原创 服务器登录出现Host key verification failed
ssh [email protected]@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY...
2021-01-18 19:15:13 133
原创 CentOS 8.2 Ererything aarcch64 开机启动后图形界面显示不正常(花屏)
安装时候注意要配置好网络,提供第三台机器登录到这台服务器root登录后,vi vim编辑软件编辑 /etc/gdm/custom.conf找到 #WaylandEnable=false 改为WaylandEnable=false 保存重启即可# GDM configuration storage[daemon]# Uncoment the line below to force the login screen to use XorgWaylandEnable=fal...
2021-01-18 19:12:56 779 1
原创 DevExpress chartControl 控件 缩放设置
DevExpress chartControl 控件 缩放设置 diagram.ZoomingOptions.UseMouseWheel = true; diagram.ZoomingOptions.ZoomInMouseAction.ModifierKeys = ChartModifierKeys.None; diagram.EnableAxisXZooming = true; .
2021-01-06 16:08:20 1989
原创 Linux内核编译及CentOS系统安装
1、程序包的编译安装命令:./configure, make, make install(1)./configure:检查编译环境的依赖关系,并设置编译参数;(2)make:编译过程,make不是编译工具,而是项目构建工具,其调用各所需的编译工具执行编译操作;(3)make install:把编译好的文件(文件包括:二进制文件、库文件、帮助文档、配置文件)复制到编译时指定目录下。前提:准备好开发环境(开发工具,开发库),安装后的头文件放置在/usr/include。开源软件提供的是软件的源代码
2021-01-05 19:01:17 210
原创 arm编译器__packed 与gcc packed
#include <stdio.h>#include <linux/tcp.h>#include <linux/ip.h>#include <linux/ipv6.h>#include <linux/if_ether.h>/* ipv4 test vector */static struct { struct ethhdr eth; struct iphdr iph; struct t.
2021-01-03 19:30:59 595
转载 build your own linux os kernel
https://wiki.centos.org/zh/HowTos/BuildingKernelModules 本教学文档以 CentOS-5 作为样例操作系统。在某些情况下你也许会需要更改或创建一个新的内核模块。也许你要加入某个功能,或者只是做一个修正。在这件教学文档内,我们会尝试将一个错误修正加进现有的模块内,然后安装它。这里假设你已经安装了整个内核的源代码。如果你是按照「我需要内核的源代码」的第 2 部份,它会位於 ~/rpmbuild/BUILD/kernel-3.10.0/li..
2021-01-03 19:22:10 1097
原创 RPM包rpmbuild SPEC文件深度说明
RPM包rpmbuild SPEC文件深度说明 关键字spec脚本包括很多关键字,主要有:引用Name: 软件包的名称,后面可使用%{name}的方式引用Summary: 软件包的内容概要Version: 软件的实际版本号,例如:1.0.1等,后面可使用%{version}引用Release: 发布序列号,例如:1linuxing等,标明第几次打包,后面可使用%{release}引用Group: 软件分组,建议使用标准分组License: 软件授权方式,通常就是GPLSour.
2021-01-03 17:23:00 2479
原创 Linux——SRPM的使用:rpmbuild
Linux——SRPM的使用:rpmbuild1、利用默认值安装SRPM文件(--rebuild/--recompile)关于rpmbuild选项与参数--rebuild 这个选项会将后面的 SRPM 进行『编译』与『打包』的动作,最后会产生 RPM 的文件,但是产生的 RPM 文件并没有安装到系统上。当你使用 --rebuild 的时候,最后通常会发现一行字体: Wrote: /root/rpmbuild/RPMS/x86_64/pkgname.x86_64.rpm.
2021-01-03 17:04:58 320
原创 rpmbuild 错误:发现已安装(但未打包的)文件
rpmbuild 错误:发现已安装(但未打包的)文件:首先就是正面解决,把未打包的文件给打包了如果确实不需要打包,那么就可以按照如下方式修改。修改spec文件在%install下面添加%define _unpackaged_files_terminate_build 0...
2021-01-03 16:57:39 2733
原创 git日常操作
1.拉取远程分之git clone http://xxxxxx.git2.删除远程分之在开发过程中,大家在远程创建了许多分支,有些是无用的,该如何删除呢,可以参考下面的方法。如果不再需要某个远程分支了,比如搞定了某个特性并把它合并进了远程的 master 分支(或任何其他存放稳定代码的地方),可以用这个非常无厘头的语法来删除它:git push[远程名] :[分支名]。如果想在服务器上删除 serverfix 分支,运行下面的命令: git push origi...
2020-09-20 14:53:32 77
原创 ubuntu or ubuntu like to solve error: QtQml/QQmlApplicationEngine: No such file or directory
error: QtQml/QQmlApplicationEngine: No such file or directoryon ubuntuapt install -y qtdeclarative5-dev
2020-09-12 22:33:57 573
原创 CMake中添加Qt模块的合理方法
用CMake来组织的工程中要用Qt首先要设置、找到Qt相关模块。主要是通过find_package这个CMake命令。但网上很多教程都过时了,或者不够清晰灵活。因为这部分很常用,所以特别用一篇文章把我们目前在生产环境中使用的方法给大家介绍下。设置Qt库路径Qt版本很多,我们的开发机上一般也装有多个不同版本的Qt。个人尝试性的项目一般用最新版的Qt,而真正发布的产品一般用的是LTS版本Qt(LTS:Long Term Support,长期支持版本,目前最新的LTS是5.9)。我们的方法是在系统中添
2020-09-10 23:47:59 12979 1
原创 kylin(ubuntu like) 桥接模式连接网络
sudo apt install brctl-utilssudo /etc/init.d/networing stopbrctl addbr br0vim /etc/networkinterfaceauto br0iface br0 inet staticaddress 192.168.32.46netmask 255.255.255.0gateway 192.168.32.1brctl_ports enps0 #您的网卡名bridge_stp onbr...
2020-09-08 18:07:06 420
原创 使用 psql 列出 PostgreSQL 数据库和表
修改PostgreSQL数据库默认用户postgres的密码PostgreSQL数据库创建一个postgres用户作为数据库的管理员,密码随机,所以需要修改密码,方式如下:步骤一:登录PostgreSQL 1 sudo-u postgres psql 步骤二:修改登录PostgreSQL密码 1 ALTER USER postgres WITH PASSWORD'postgres'; postgre查询所有用..
2020-09-01 12:55:26 8662
原创 linux find 查找删除文件
find./-name *.log |xargsrm-rf删除在当前目录下及子目录中找到的所有log日志删除find搜索到的文件Linux find 命令在指定目录下查找文件。删除目录下所有通配符搜索到的文件find . -name 'zui-副本.*' -type f -print -exec rm -rf {} \;' . ' : 从当前目录及改目录下所有子目录;' -type f ' : 搜索文件类型为文件;如-type-d 表示目录类型;' -print...
2020-08-28 11:43:44 1063
原创 批量转换libosinfo ubuntu db xml为ubuntukylin db xml
#!/bin/bashfor xml in ./*.xml.indo echo rename $xml to ubuntukylin-${xml##*-} mv $xml ubuntukylin-${xml##*-}done#!/bin/bashfor xml in ./*.xml.indo echo $xml sed -i '9s/Canonical Ltd/kylinos Ltd/' $xml sed -i 's/ubuntu/ubuntuky.
2020-08-23 13:18:57 109
原创 解决“警告:检测到时钟错误。您的创建可能是不完整的”问题的一种办法
1.使用touch命令在编译时会看到和make: Warning: File `shttpd/include/shttpd.h' has modification time 3e+07 s in the future类似的警告,直接执行touch 文件名来修正文件时间,尝试过后确实有用,但是只适用于报错文件不多的情况下,报错文件一多工作量就太大了;而且有时还会出现找不到这个报错文件的情况。看到还有一种更新整个项目时间的方法,运行:touch *但是尝试过后好像并没有作用2..
2020-08-11 16:19:44 1524
原创 批量反编译dtb文件
#!/bin/shfor dtbfiles in ./*.dtbdo echo $dtbfiles to convert ${dtbfiles%.*}.dts sudo dtc -I dtb -o ${dtbfiles%.*}.dts $dtbfilesdone
2020-08-08 10:43:31 228
原创 Linux统计代码行数
wc -l *.c *.h 就可以知道当前目录下的所有c 和 h 文件的行数的详细信息。很不错如果要递归,可以配合其他命令一起使用当前目录及子目录:find . -name *.c |xargs wc -lfind . -name *.cpp | xargs wc -lfind . -name *.h |xargs wc -l想一下子 ,或许简单的可以 使用重定向技术 使用find -name "*.c">/tmp/file.list ;find -name "*.h" >
2020-07-16 15:13:04 3275
censtos kernel source
2021-01-05
alsa-to-use-guide
2019-04-06
libenchant
2018-08-16
看门狗模式 watch dog
2017-11-27
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人