
linux
文章平均质量分 57
dingdongkk
在0和1的世界中探索.....
展开
-
1. 冯诺依曼结构和哈佛结构区别--操作系统基础
冯诺依曼(Von Neumann)结构和哈佛(Harvard)结构是计算机体系结构的两种主要架构,它们的主要区别在于。虽然早期的计算机严格采用。,避免两种架构的缺点。原创 2025-03-24 19:55:25 · 999 阅读 · 0 评论 -
12. sizeof和strlen在使用中的注意点
在使用sizeof和strlen时,有一些关键的注意点,特别是在不同的场景下,这些操作符和函数的行为可能会有所不同。原创 2024-08-27 00:53:15 · 915 阅读 · 0 评论 -
11. 关于sizeof 和 strlen的区别
sizeof用于计算数据类型或变量的总内存大小,适用于任何类型(包括数组、指针等)。strlen专门用于计算以'\0'结尾的 C 字符串的长度,只计算字符数,不包括'\0'。原创 2024-08-27 00:51:55 · 573 阅读 · 0 评论 -
10. 指针数组和数组指针详细区别
这里array是一个指针数组,存储 5 个int*类型的指针。内存分布与存储位置这里ptr是一个指向包含 5 个int元素的数组的指针。内存分布与存储位置。原创 2024-08-24 00:18:52 · 2570 阅读 · 0 评论 -
8. 函数指针的定义,解析逻辑
括号的作用是确保正确的优先级解析,fptr被理解为指向一个函数的指针,而不是其他类型。如果没有括号,声明就会表示fptr是一个函数,而不是指向函数的指针,这会导致语义错误。原创 2024-08-23 00:15:29 · 436 阅读 · 0 评论 -
6. type *(0)的神奇之处
表达式type * (0)在 C/C++ 编程中是一个常见的技巧,通常用于内核编程和一些系统编程场景中。这种语法形式的主要作用是获取特定类型指针的虚拟地址0,从而进行类型转换或执行其他计算。接下来我们会深入分析这个表达式的具体含义和应用。原创 2024-08-22 00:45:36 · 945 阅读 · 0 评论 -
3. GDB调试工具怎么用?
GDB(GNU Debugger) 是一个功能强大的调试工具,用于在 Linux 和其他类 Unix 操作系统中调试 C、C++、Fortran 等编程语言编写的程序。GDB允许你在程序执行时监控和修改程序的状态,查找并修复程序中的错误。原创 2024-08-20 00:20:41 · 836 阅读 · 0 评论 -
1. void* 到底有多么好用?
void*是 C 语言中一种特殊的指针类型,称为通用指针(或称为“无类型指针”)。原创 2024-08-17 23:57:33 · 473 阅读 · 0 评论 -
ubuntu18.04 安装软件报错:E: 无法获得锁 /var/lib/dpkg/lock-frontend - open
E: 无法获得锁 /var/lib/dpkg/lock-frontend - open (11: 资源暂时不可用)E: 无法获取 dpkg 前端锁 (/var/lib/dpkg/lock-frontend),是否有其他进程正占用它?原创 2023-07-04 09:13:06 · 1315 阅读 · 0 评论 -
ubuntu 20.04 安装synergy1.14.0报错synergy depends on libqt5core5a (>= 5.12.2)解决办法
ubuntu 20.04 安装synergy1.14.0报错synergy depends on libqt5core5a (>= 5.12.2)解决办法:sudo apt --fix-broken install再去安装synergy即可解决。原创 2023-04-07 10:32:56 · 1820 阅读 · 0 评论 -
解决unable to make backup link of ‘./usr/bin/nvidia-smi‘ before installing new version: Operation not
Unpacking nvidia-utils-525 (525.85.05-0ubuntu0.20.04.1) ...dpkg: error processing archive /var/cache/apt/archives/nvidia-utils-525_525.85.05-0ubuntu0.20.04.1_amd64.deb (--unpack): unable to make backup link of './usr/bin/nvidia-smi' before installing new原创 2023-03-04 13:57:29 · 2417 阅读 · 1 评论 -
ubuntu20.04配置静态ip
1. 查看当前ip:ifconfig2. 查看网关命令:route -n3. 查看dns配置:nmcli dev show4. 编辑网络配置文件:5. 使配置文件生效:原创 2022-06-07 18:44:13 · 2076 阅读 · 1 评论 -
ubuntu 20.04 安装repo找不到包解决方案
mkdir -p ~/.binPATH="${HOME}/.bin:${PATH}"curl https://storage.googleapis.com/git-repo-downloads/repo > ~/.bin/repochmod a+rx ~/.bin/reporeference:https://askubuntu.com/questions/1247103/why-is-the-repo-package-unavailable-in-ubuntu-20-04-how-c.原创 2022-02-23 16:03:19 · 6891 阅读 · 0 评论 -
编译报错:No module named elftools please:pip install pyelftools
1. 报错信息如图:2. 解决办法:sudo apt-get install python-pyelftools python3-pyelftools -y原创 2021-05-29 09:49:05 · 9848 阅读 · 0 评论 -
Linux cp命令使用 拷贝文件 目录等
常用几个:拷贝文件a为文件bcp a b拷贝文件夹a为文件夹b,且文件夹子文件也拷贝cp -r a b //完全对吗?若b文件夹已存在,执行上述则会在b文件夹下创建a文件夹,所以正确命令应该为:cp -rf a/. b或cp -a a/. b另外几个常用的-配置选项参考:a 该选项通常在拷贝目录时使用。它保留链接、文件属性,并递归地拷贝目录,其作用等于dR选项的组合。d 拷贝时保留链接。f 删除已经存在的目标文件而不提示。i 和f选项相反,在原创 2021-02-23 11:47:21 · 1780 阅读 · 0 评论 -
gdb调试qemu报错:(gdb) break mips_fuloong2e_machine_init Function “cpu_mips_irq_init_cpu“ not defined.
报错原因:编译qemu时没有使能debug解决办法:./configure 时加上--enable-debug即可eg:./configure --enable-debug再make编译最后make install后调试即可解决该问题。原创 2020-08-27 20:45:47 · 492 阅读 · 0 评论 -
几个还不错的博客推荐
1. 内核相关:https://www.jianshu.com/u/ea8fca67c664原创 2020-08-04 15:00:11 · 401 阅读 · 0 评论 -
Linux内核之module_param()函数使用说明
1. 概述:主要区别就是用户可否在系统启动或模块装载时为参数指定相应值,在驱动程序里,参数的用法如同全局变量。不使用module_param如只定一个全局变量:#define MY_MAJOR 0x09static int global_val_test = MY_MAJOR;那么编译模块后,insmod加载模块时不能传参数进去,如:[root@bogon hello_world]# insmod first_hello.ko global_val_test=5insmod:原创 2020-05-26 14:34:08 · 8481 阅读 · 0 评论 -
linux内核的一些基础知识: 内核设备编号及udev等
1. Linux内核设备编号分为主设备编号和次设备编号,前者为dev_t的高12位,后者为dev_t的低20位.对于表示设备节点的inode结构,i_rdev字段包含设备编号.下列操作用于从一个inode中获得主设备号和次设备号:unsigned int iminor(struct inode *inode);unsigned int imajor(struct inode *inode);cat /proc/devices可以获知系统中注册的设备.第一列为主设备编号,第二列为设备.原创 2020-05-26 11:02:04 · 697 阅读 · 0 评论 -
Linux驱动开发之编写第一个内核模块--Hello World
在内核目录下新建一个目录如hello_world命令如下:mkdir hello_world编写hello.c文件,源码如下:/* * a simple kernel module: hello * * Copyright (C) 2020 xxx (xxxxx) * * Licensed under GPLv2 or later */#include <linux/init.h>#include <linux/module.h>static in.原创 2020-05-25 11:48:01 · 649 阅读 · 0 评论 -
vim 常用命令之大小写转换gu
vim中大小写转化的命令是:gu或者gU,形象一点的解释就是小u意味着转为小写,大U意味着转为大写。接下来说明对这两个命令的限定(限定操作的行,字母,单词)等等。 1.整篇文章大写转化为小写打开文件后,无须进入命令行模式。键入:ggguG解释一下:ggguG分作三段gg gu Ggg=光标到文件第一个字符gu=把选定范围全部小写G=到文件结束 2.整篇文章小写转化为大写打开文件后,无须进入命令行模式。键入:gggUG解释一下:gggUG分作三段转载 2020-05-22 15:30:01 · 3607 阅读 · 0 评论 -
intel声卡驱动probe分析--hda_intel.c alsa
1. 关键代码及注释:1. intel声卡初始化流程:/sound/pci/hda/hda_intel.c azx_probe(struct pci_dev *pci, const struct pci_device_id *pci_id) { snd_card_new(&pci->dev, index[dev], id[dev], THIS_MODULE, 0, &card); {//创建snd_card的一个实例 card->dev = parent;原创 2020-05-19 21:01:48 · 1516 阅读 · 0 评论 -
vim进阶1.4 常用技巧之高亮显示当前行列
1. 参考效果如下:2. vim几个关键配置如下:set cursorline "高亮当前行set cursorcolumn “高亮当前列highlight CursorLine cterm=NONE ctermbg=gray ctermfg=yellow guibg=NONE guifg=NONEhighlight CursorColumn cterm=NONE ctermbg=gray原创 2020-05-18 18:02:29 · 4559 阅读 · 1 评论 -
编译开源社区内核报错:scripts/extract-cert.c:21:25: fatal error: openssl/bio.h: No such file or directory
原因:libssl-dev 没有安装解决办法:yum install openssl-devel或者sudo apt-get install libssl-dev原创 2020-04-28 17:43:55 · 833 阅读 · 0 评论 -
federa设置打开terminal终端快捷键
鼠标左键点击屏幕左下方System处,选择Control Center。然后找到keyboard Shortcuts并点击:出现如下图,找到Run a terminal行点击选中该行,然后按快捷键:Ctrl+Alt+T,即可将快捷键设置为Ctrl+Alt+T。快去试试吧。...原创 2020-04-21 11:18:24 · 427 阅读 · 0 评论 -
I2c-tools工具使用及调试
1. 下载iic-toolshttps://mirrors.edge.kernel.org/pub/software/utils/i2c-tools/注意:这里我们下载3.1.1版本的。i2c-tools-3.1.1.tar.gz<<i2c-tools-3.1.1.tar.gz>>2. 编译:将下载好的i2c-tools-3.1.1.tar.gz放到An...原创 2020-01-20 18:00:53 · 1814 阅读 · 0 评论 -
gcc在终端编译可执行文件 在设备端运行报错/system/bin/sh: ./a.out: not executable: 64-bit ELF file 已解决
常用gcc编译命令如下:gcc -o testback_ground_run.c编译后生成test的可执行文件,推到Android设备端,添加可执行权限后,执行便会报错:/system/bin/sh: ./a.out: not executable: 64-bit ELF file解决办法:方案一:用静态编译,且用交叉编译工具编译:交叉编译工具链可以自己下载解压后使...原创 2019-10-09 10:34:35 · 15250 阅读 · 2 评论 -
synergy: server refused client with our name
原因分析: 服务器端设置的client名称与客户端屏幕名称不一致导致问题。 解决办法: 分别修改服务器端设置的client名称和client端屏幕名称: 设置服务器端的client名:点击configure server,添加一个screen,并设置名字与client名字一致:eg:dingdongkk。 设置client端...原创 2018-07-16 09:30:56 · 5530 阅读 · 0 评论 -
ISO C90 forbids mixed declarations and code
网上都说是因为变量定义之前任何一条非变量定义的语句(注意:语句是会带分号的)都会引起这个警告! 解决方法:将非变量的定义移到变量定义之后。但是没有例子。也不是特别明白。在这放个有点特殊的例子:void vehicle_flinger_show_nosignal(bool nosignal_tag){ unsigned int x_pos , y_pos ,vir_addr;; in原创 2017-08-18 09:16:58 · 760 阅读 · 0 评论 -
YUV444,YUV420P,YUV420SP,YUV422P,YUV422SP,NV12,NV21,NV16,NV61等格式区分与存储简介
一、基础知识:概述YUV是顏色編碼方式,常用於視頻及圖像處理中。其中的YUV是三個分量。“Y”表示明亮度(Luminance或Luma),也就是灰度值。“U”和“V” 表示的是彩色信息,分別爲色度和濃度(Chrominance和Chroma)。由於相鄰的兩個像素,數據差異不大,所以,丟棄相鄰像素的部分數據對於整體影響不大。同時,丟棄數據,還節省了空間便於存儲。人對亮度比較敏感,而對...原创 2019-09-18 11:39:07 · 13636 阅读 · 1 评论 -
linux 内核kenel优化方案一 -O3编译 Makefile
1. 如写一个test.c test.h2. 内核编译并链接,那么Makefile写法:obj-y += test.o3. 测试发现,运行速度需要优化方案一:修改Makefile,修改为如下:obj-y += test.oCFLAGS_test.o += -O3即可实现优化。实测,deinterlace算法,用默认编译链接的话,cpu处理一帧图像需要60ms,而用...原创 2019-07-26 11:59:18 · 1869 阅读 · 0 评论 -
Source Insight 不显示文件列表
解决办法: 选择project->open project 选择自己没有显示文件列表的那个工程名称双击打开即可。 发现已经解决问题了。原创 2017-08-29 21:00:01 · 11454 阅读 · 0 评论 -
段错误原因分析和查找
转自:http://www.cnblogs.com/panfeng412/archive/2011/11/06/2237857.html最近在Linux环境下做C语言项目,由于是在一个原有项目基础之上进行二次开发,而且项目工程庞大复杂,出现了不少问题,其中遇到最多、花费时间最长的问题就是著名的“段错误”(Segmentation Fault)。借此机会系统学习了一下,这里对Li转载 2017-09-15 10:59:20 · 2075 阅读 · 0 评论 -
#define函数
一直以为#define只能宏定义简单变量和简单函数,虽然也知道宏定义编译过程中就是替换,但是今天才真正明白替换的意义:请看如下代码: 关键:define PARAM_WRITE(x,y) param_vendor_write(x,y)#include<stdio.h>#define PARAM_CONFIG "/home/lkg/test/config" //配置文件路径#define VEN原创 2017-08-23 19:45:00 · 1813 阅读 · 0 评论 -
例程四、c读写文件与文件参数管理
直接上代码,代码简单易懂。#include<stdio.h>#define PARAM_CONFIG "/home/lkg/test/config"typedef struct{ unsigned short int id; int offset;}param_offset;typedef struct { char c; int h; unsigne原创 2017-08-23 17:53:44 · 576 阅读 · 0 评论 -
error: unknown type name ‘bool’
解决办法: 在头文件中包含:#include<stdbool.h> //include bool type原创 2017-08-25 17:16:23 · 1793 阅读 · 2 评论 -
git commit 提交多行message
git commit -m “ didididi” //只能提交一行git commit -m ‘didi>lalallal>lalalalll’ //'输入message,按回车自动换行,继续输入message,按’结束输入,按回车即可commitgit log查看commit结果原创 2017-08-04 12:01:34 · 9490 阅读 · 1 评论 -
bmp转rgb565在framebuffer中显示
需求:在kernel中自定义显示图片 解决办法:在网上找了很多方法,都是去替换的,那样就有了很大的局限性,还比较麻烦,所以经过研究最后找到此方法: 首先:得到一副图片eg:jpeg格式的图片,可以用格式工厂或者其他软件吧jpeg格式转换为bmp格式的图片,再用工具(BmpCvt链接如下:)将bmp格式图片转换为rgb565的c文件数组。 工具使用方法: 双击打开,然后打开一副bmp格式的图片原创 2017-08-17 15:05:54 · 2017 阅读 · 0 评论 -
补丁太旧了,新内核打不上
解决办法:1.进入对应根目录 如kernel patch -p1补丁文件路径如:然后git status.rej的是未打成功的,就需要手动打补丁Vi arch/arm/boot/dts/rk3128-cif-sensor.dtsi.rej看下 arch/arm/boot/dts/rk3128-cif-sensor.dtsi文件改动情况,手动原创 2017-07-25 19:32:42 · 406 阅读 · 0 评论 -
Android系统的开机画面显示过程分析
Android系统的开机画面显示过程分析 提到Android系统的UI,我们最先接触到的便是系统在启动过程中所出现的画面了。Android系统在启动的过程中,最多可以出现三个画面,每一个画面都用来描述一个不同的启动阶段。本文将详细分析这三个开机画面的显示过程,以便可以开启我们对Android系统U转载 2017-08-01 11:42:14 · 699 阅读 · 0 评论