- 博客(424)
- 资源 (13)
- 收藏
- 关注
原创 使用 gzexe 压缩和执行 shell 脚本
gzexe 是一个可以压缩 shell 脚本的工具。它通过使用 gzip 将脚本压缩成一个更小的文件,同时保留脚本的可执行性。压缩后的脚本在执行时,会自动解压缩并运行原始脚本内容。
2024-07-23 23:23:35
723
原创 pstore 存储内核崩溃日志
pstore(Persistent Storage)是 Linux 内核提供的一种机制,最初是用于系统发生oops 或 panic 时,自动保存内核 log buffer 中的日志。不过在当前内核版本中,其已经支持了更多的功能,如保存 console 日志、ftrace 消息和用户空间日志。同时,它还支持将这些消息保存在不同的存储设备中,如内存、块设备或 mtd 设备。
2024-07-11 08:45:00
544
原创 使用 /proc/sysrq-trigger 进行系统调试和故障排除
/proc/sysrq-trigger 是 Linux 内核提供的一个接口,它允许用户通过写入特定命令来触发系统请求(SysRq)功能。
2024-07-03 22:41:56
1055
原创 /proc/config.gz
有时候,我们想知道一个运行着的内核都打开了哪些编译选项,当然,查看编译环境的 .config 文件是一个不错的选择,除此之外,还有没有别的办法呢?当然有,那就是 /proc/config.gz。
2024-07-01 23:04:59
291
原创 CUDA
CUDA 允许开发人员利用 NVIDIA GPU 的并行计算能力来加速应用程序的执行。CUDA 使开发人员能够使用类似 C 语言的编程语言来写代码,并通过 CUDA 编译器将其编译成可以在 GPU 上运行的代码。
2024-06-27 08:15:00
381
原创 您的计算机时间有误
SSL 证书具有一定的有效期限,一旦证书过期,它就不再被认为是可信的。所以,如果计算机的时间和服务器的时间不同步,可能会导致认为证书已过期,从而拒绝提供服务。
2024-06-11 21:45:00
296
原创 netplan
netplan 是 ubuntu 17.10 版本中引入的一种全新的命令行网络配置程序,用于在ubuntu系统中轻松管理和配置网络设置。
2024-05-27 01:02:28
799
原创 ASAN
ASAN 是 Address Sanitizer 的简称,是 GCC 自带的内存问题检查工具,比较轻量级,非常适合单元测试时检查内存问题。使用也比较简单,只需要在编译时加上 `-fsanitize=address` 选项即可。
2024-04-25 22:15:00
853
原创 性能优化——避免使用除法
ARM 硬件上不支持除法指令。编译器是通过调用 C 库函数来实现除法运算的,要花费 20~100 个周期。如果不能避免除法运算,那么就尽量使除数和被除数是无符号的整数。
2024-03-31 19:54:15
447
原创 字符设备驱动编写
每一个主设备号(major) 对应 /proc/devices 下的一个设备,使用 register_chrdev() 创建。每一个次设备号(minor) 对应 /dev/ 下的一个设备文件,使用 mknod 或 device_create() 创建。
2024-03-15 21:45:00
950
原创 内核打印应用程序出错信息,DEBUG_USER
当用户程序由于异常而崩溃时,内核可以打印一条简短的消息来说明问题所在。这有时对调试很有帮助,但对生产系统没有任何作用。大多数人应该在这里说 N。此外,你需要在内核命令行上传递 user_debug=N 来启用此特性。
2024-02-29 22:32:54
820
原创 ASLR 和 PIE
ASLR 不负责代码段以及数据段的随机化工作,这项工作由 PIE 负责。但是只有在开启 ASLR 之后,PIE 才会生效。无论是 ASLR 还是 PIE,由于颗粒度问题,被随机化的都只是某个对象的起始地址,而在该对象的内部依然保持原来的结构,也就是说相对偏移是不会变的。
2024-02-26 21:43:45
742
原创 PAGE_OFFSET
PAGE_OFFSET 的值支持通过 Kconfig 配置,其默认的值是 0xC0000000,即用户空间 3GB,内核空间 1GB。当然这个可以由我们动态配置,可以配置 PAGE_OFFSET 为 0x80000000,即用户空间和内核空间均为 2GB。
2024-01-31 23:15:00
357
原创 ARM 寄存器
Cortex A 系列的 ARM 处理器共有 40 个 32 位寄存器,其中 33 个为通用寄存器,7 个为状态寄存器。用户模式和系统模式共用同一组寄存器。
2024-01-11 21:37:25
1463
1
原创 USB2.0 Spec
A device that has multiple interfaces controlled independently of each other is referred to as a composite device.
2023-12-18 22:45:00
971
原创 USB2.0 Spec 中文篇
一个设备可能有一个或多个接口。(复合设备具有多个接口,驱动中,是只认接口,不认设备的,一个驱动程序对应一个接口。一个包含两个接口的复合设备,如电子琴,包含键盘接口和扬声器接口,那么就会有两个驱动与该设备对应,即键盘驱动和扬声器驱动)
2023-12-14 22:15:00
1931
原创 DHCP Host Name
udhcpc 命令使用 -x hostname:xxx 选项,可以在 DHCP Discover 报文中添加 option 12 选项,即 Host Name。
2023-12-05 23:37:16
1147
原创 genimage 打包镜像
用户准备好待打包的原料:uboot.bin、zImage、rootfs 等,然后编写一个配置文件 genimage.cfg,描述如何进行打包,然后运行 genimage -c genimage.cfg 就可以打包好一个镜像。
2023-11-29 23:15:00
805
原创 /dev/root
/dev/root 曾经是 /dev/mmcblk0p2 的软链接,在使用这个软链接将该设备挂载到根目录后,又将该软链接删除了。
2023-11-27 01:42:38
925
原创 uboot 和 内存地址
在 uboot 的 .config 和 Makefile 文件中,使用 CONFIG_SYS_TEXT_BASE 宏来指定代码的入口地址
2023-11-09 23:12:20
1308
原创 GCC 优化等级(O0、O1、O2、O3)对程序性能的影响
O3 直接将内层循环给优化掉了,10 次循环展开成 10 次指令,也是牛逼。这样一来,少了内层循环的边界判断。更重要的是,少一层跳转,就减少一次分支预测判断,这对指令执行的效率有显著提升。
2023-10-09 22:05:40
3186
原创 ARM Linux DIY(十四)摄像头捕获画面显示到屏幕
摄像头对应 /dev/video0,屏幕对应 /dev/fb0,所以我们只要写一个应用程序,读取 video0 写入到 fb0 就可以了。
2023-09-29 06:30:00
459
自己动手写一个操作系统-MBR(5)
2023-01-27
linux_cmd_test.exe
2021-01-10
MDIO之STM32源码
2020-05-08
Linux device driver中文版.pdf
2020-04-04
FX_serial_asst.rar
2020-01-10
OPCUA服务端客户端QT源码
2019-06-17
Android TCP_Client
2018-09-01
ioremap() 的逆函数是什么?
2023-08-01
无源晶振的振荡原理是什么?
2023-05-30
TA创建的收藏夹 TA关注的收藏夹
TA关注的人