- 博客(32)
- 资源 (3)
- 收藏
- 关注
原创 Linux内核学习之中断处理
文本基于x86架构讲解Linux中对中断的处理,因此本文假定你已经阅读了x86架构学习之中断,了解了x86硬件中断的结构和行为。
2024-08-26 15:40:55
1185
原创 src/udev-event.c:233: undefined reference to `major‘(udev编译)
centos 9 上编译 udev-182。
2024-08-26 15:27:45
161
原创 源码安装Python3.11排雷记录
不解决如果直接make install,运行python会报错。不解决如果直接make install,运行python会报错。之后还是会报错,单未影响我的使用,暂未解决。
2024-04-09 11:54:27
459
原创 module: x86/modules: Skipping invalid relocation target, existing value is nonzero for type 1
写了个简单的模块demoMakefile内容编译然后报错 invalid format,查看内核消息查看具体报错。
2023-12-05 10:29:19
1505
原创 (standard input): No keywords in input file!(udev编译)
在 centos 9 上编译 udev-182 源码。
2023-12-03 19:34:42
623
1
原创 centos stream 9 安装 libc-static静态库
尝试安装c静态库,报错。查阅官方原始镜像站能够找到 glibc-static 的镜像,那么为什么安装找不到。
2023-12-03 15:57:50
1157
原创 c++学习之多重继承指针强转父类
当子类实例指针被强转为父类指针时,指针的值会发生变化,根据c++标准对象的概念,以该父类指针调用同名成员函数,调用的是子类的函数。为了做到这点,在强转时,),以使其指向该父类的虚表。
2023-11-06 20:14:40
358
原创 x86架构学习之中断
外部中断,一般是由CPU的外部引脚电信号触发,这些引脚留给硬件厂商去定义中断,例如主板厂商可以将USB中断挂载70号中断引脚上,MCU厂商可以将片上外设(SPI、I2C等)的中断挂载在指定中断线上。中断描述符主要用于说明该中断的入口地址,中断描述符表则是将中断描述符一项一项管理在一个数组中,每一项中断描述符占用8个字节(64位模式下,占用16字节),其。简称中断,后文如果没特别说明,中断都指外部中断,由外部IO事件触发,由于时钟源来自CPU外部,与CPU时钟不同源,因此是异步事件。
2023-11-06 19:06:25
1003
原创 gcc整数溢出检测 __mulvsi3 __addvdi3
ftrapv 参数会让GCC在生成代码时,对算数运算结果做溢出检测,如果检测到溢出,则自动abort退出程序。在编译时加上 -ftrapv 参数 , 运行时检测到溢出后 , 会产生SIGABRT , 进程终止。,4611686018427387904是个第63位为1的64位数。core调用栈有__mulvsi3 或 __addvdi3。
2023-11-03 16:07:11
379
原创 Linux内核学习之内存寻址
本文是以x86为例,讲解Linux中的寻址方法,在读本文前,建议先了解x86硬件分段、分页的实现,详情可以参考我另一篇文章x86架构学习之操作模式、内存寻址、特权级。
2023-11-01 14:52:29
163
原创 C++优化相关的关键字学习
即汇编内联展开,仅作用于函数定义gcc 8.1.0c标准c++标准c89标准中不支持inline关键字c99标准、c11标准中g++inline: 开优化则内联,否则独立代码。
2023-10-26 11:51:16
55
原创 gdb调试技巧分享
如果你要指定多个路径,UNIX下你可以使用“:”,Windows下你可以使用“;一个程序可能链接多个动态库,这些库中可能使用了同名变量,这时打印出来的值很可能出乎你意料,解决办法,利用工具修改库中的同名符号(未验证)GDB提供了可以让你指定源文件的路径的命令,以便GDB进行搜索。有时候程序中存在同名变量,打印出来的值很可能不是你想要的,这时可以首先通过gdb打印变量的格式来判断下是否打的是其他同名变量。当进程崩溃时,通过系统dump出来的core文件来排查程序崩溃原因,如果不确定是否开启,可以通过。
2023-10-26 11:40:04
285
原创 Linux内核学习之进程管理
在Linux中,最初是只有进程的概念的,而没有线程的概念,后来为了兼容POSIX标准的线程概念,引入了轻量级进程(light weight process,LWP)的概念,也就是线程,没错,也就是说,线程在Linux中原型也是进程。进程是地址空间上隔离的程序,而线程是共享地址空间的。看下,例如如下例程:编译:g++ -g -pthread -o main main.cpp。
2023-10-25 15:18:31
292
原创 x86架构学习之操作模式、内存寻址、特权级
本文以x86架构为例,讲解Linux的寻址技术,在讲解Linux前,先要理解清楚硬件层面的寻址原理。1~7节重点讲解硬件,与Linux没有关系,更多的是讲解x86硬件架构的寻址技术,也就是x86的MMU(memory manager unit)原理,8-9节则Linux如何使用硬件寻址单元。
2023-10-12 16:18:47
744
原创 Linux内核开发之hook系统调用
本文将讨论如何hook Linux系统调用,教你如何获取系统调用表的地址以及如何利用它来实现几乎所有你想做的事情。
2023-09-21 19:27:32
1030
1
原创 Linux平台如何将调试符号与ELF分离
如果一切准备妥当,当你用gdb运行elf执行文件时,会看到如下gdb输出的提示信息。当然,也可以通过GDB手动指定符号文件路径。
2023-09-19 14:38:09
260
原创 STM32CUBE生成KEIL工程,使用工程自带DSP库(非keil自带)
_FPU_PRESENT是在stm32f405xx.h里定义的,但是在DSP源码(包含文件中)中没有定义,如果直接在魔术棒定义全局__FPU_PRESENT宏,会导致原来的包含stm32f405xx.h的代码报错重定义,如果直接在DSP源码文件中加入该宏定义,当次编码可以通过,但是,但通过STM32CUBE重新生成后,DSP源码会被覆盖还原(STM32CUBE中选择了拷贝所有用到的库,之所以选择这个,是想生成独立的工程目录)。
2023-09-10 13:20:26
623
原创 关于linux特殊符号$学习的一些疑惑和个人理解
在linux中写bash脚本,最常用到的判断符号有中括号 [ ] 。看了鸟哥基本篇学习了一下,有一些疑惑,最后通过自己做些代码测试,得出了一些可能的解释,作为学习记录,还在学习中,解释可能不全面甚至错误。书中有个例子:name="VBird Tsai"[ $name == "VBird" ]直接运行会报错bash:[: too many arguments鸟哥的解释是当$name没有...
2019-09-01 17:34:13
270
原创 LWIP个人移植心得,平台STM32F4,HAL库,CMSIS_OS系统封装
LWIP个人移植心得,平台STM32F4,HAL库,CMSIS_OS系统封装1、先在官网下载LWIP源码及例程文件,以1.4.1版本为例分别是lwip-1.4.1和contrib-1.4.1,将lwip-1.4.1的src文件夹全都拷贝到自己工程中,同时先在这个src下新建一个空文件夹命名arch。2、然后将contrib-1.4.1\ports\win32\include\arch下的bps...
2018-10-27 22:32:30
4880
FRFT算法C代码实现(256点)
2018-03-29
蓝牙串口助手(Android Studio源码)
2018-03-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人