- 博客(36)
- 收藏
- 关注
原创 【Linux-2】字符设备编写不同模板
设备驱动的分离,包含总线(bus)、驱动(driver)和设备(device)模型,比如 I2C、SPI、USB 等总线。但是soc有些外设没有总线的概念,但是又要使用总线、驱动和设备模型,为此 Linux 提出了 platform 这个虚拟总线,相应 的就有 platform_driver 和 platform_device。
2025-09-30 12:05:33
664
原创 【Linux-驱动】2-字符设备驱动
字符设备驱动是Linux内核中最基础也是最重要的驱动类型之一,它提供了一种面向字节流的设备访问方式。字符设备驱动可以通过两种方式加载到Linux内核中::将驱动直接编译进内核镜像:将驱动编译为内核模块(.ko文件),使用insmod或modprobe加载。
2025-09-25 10:50:25
347
原创 【】Makefile
修改只是头文件,make不会编译。因为依赖文件没有头文件。所以需要先删除,再编译。在工程目录下输入make,会找到当前目录下的makefile,Makefile。可以根据文件修改的时间决定是否加入新的编译中。makefile 是工程管理工具。要生成的文件:所依赖的文件。则需要写一个删除的目标文件。生成目标文件对应的命令。
2025-09-24 10:39:55
123
原创 【Linux-驱动】1-环境搭建
操作系统可以被看做是一种软件,它控制计算机硬件资源,提供程序运行环境。我们通常将这种软件称 为内核。内核的接口被称为系统调用。公用的函数库构建在系统调用接口之上,应用程序可以使用公用 函数库,也可以使用系统调用。shell是一种特殊的应用程序,为运行其他应用提供了一个接口。
2025-09-22 15:58:54
1997
原创 Linux IO操作
特性标准IO文件IO缓冲有缓冲(全缓冲/行缓冲/无缓冲)无缓冲接口类型库函数系统调用操作单位流(FILE*)文件描述符(int)效率较高(减少系统调用次数)较低(每次都是系统调用)实时性较差(缓冲延迟)较好(立即生效)适用场景普通文件操作设备文件、进程通信可移植性较好(跨平台)较差(Linux特有)功能提供丰富的高级接口提供基础底层接口错误处理通过返回值/ferror通过errno全局变量。
2025-09-05 16:01:25
993
原创 【C语言】章节练习+注意点
文章系统介绍了C语言核心编程知识,包括数据类型验证、混合运算、指针、结构体、内存管理等。重点内容:1. 数据类型与运算符:验证基本类型大小、混合运算规则及优先级;2. 内存管理:malloc/free使用及内存泄漏检测;3. 指针与结构体:地址传递、函数指针、结构体嵌套应用;4. 调试技巧:GDB调试步骤和Valgrind内存检测方法;5. 位运算:位操作宏定义及典型应用场景。通过典型代码示例演示各类编程技巧,并标注常见错误点,如指针初始化、数组越界等。附有Linux环境下的测试结果,强调安全编程实践。
2025-09-04 18:09:38
1065
原创 【日常错误】鼠标无反应
插拔鼠标线时若虚拟机开启,可能导致鼠标无反应且设备管理器报错。解决方法为关闭虚拟机后重新插拔鼠标线,待系统重新识别即可。此问题多因虚拟机占用USB资源,引发物理机与虚拟机的USB控制权冲突所致。
2025-09-04 17:29:01
311
原创 Linux-Ubuntu18.0.4设置、查看环境变量
,以免因为操作不当导致系统严重错误。~/.profile : 在登录时用到的第三个文件 是.profile文件,每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!/etc/profile : 在登录时,操作系统定制用户环境时使用的第一个文件 ,此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行。/etc /environment : 在登录时操作系统使用的第二个文件, 系统在读取你自己的profile前,设置环境文件的环境变量。
2023-11-23 16:10:38
538
原创 嵌入式Linux系统移植
gcc是X86架构的C语言编译器,arm-linux-gcc是跨平台的C语言编译器,编译出来的程序在 目标机上执行。启动加载器的工作是为内核准备好合适的工作环境并加载内核,我们使用德国DENX小组开发的u-boot。start_armboot函数在lib_arm/board.c中定义,是第二阶段代码的入口。u-boot启动流程是指从上电开机执行到u-boot,到u-boot加载操作系统的过程。u-boot入口代码的对应源文件cpu/arm920t/start.S中。2.1.3 u-boot编译过程分析。
2023-11-22 16:54:04
2650
原创 linux环境高级编程-进程间通信IPC
管道是UNIX系统IPC的最古老形式,所有UNIX系统都提供此种通信机制,管道有以下两种局限性。历史上,它们是半双工的(即数据只能在一个方向上流动),现在,某些系统提供全双工管道。管道只能在具有公共祖先的两个进程之间使用。通常,一个管道由一个进程创建,在进程调用fork之后,这个管道就能在父进程和子进程之间使用了。尽管有这两种局限性,半双工管道仍是最常用的IPC形式。
2023-10-25 15:24:39
685
原创 linux环境高级编程-高级IO
IO复用模型核心思路:系统给我们提供一类函数(select、poll、epoll函数),它们可以。,任何一个返回内核数据就绪,应用进程再发起recvfrom系统调用。IO多路转接也称为IO多路复用。为了大量的描述符IO事件就绪监控。代码示例1----对标准输入进行监听。上面的代码不会出现盲等现象。本节对应第十四章高级IO。1.4 IO多路转接模型。
2023-10-17 16:07:44
125
原创 【Linux】之安装完整的 man page
使用man -k pthread或apropos pthread可以查找到当前manpages中关于pthread的手册。
2023-10-11 17:03:13
274
原创 Linux环境高级编程-线程
但是,当一个线程可以修改的变量,其他线程也可以读取或者修改的时候,我们就需要对这些线程进行同步,确保它们在访问变量的存储内容时不会访问到无效的值。如果释放互斥量时有一个以上的线程阻塞,那么所有该锁上的阻塞线程都会变成可运行状态,第一个变为运行的线程就可以对互斥量加锁,其他线程就会看到互斥量依然是锁着的,只能回去再次等待它重新变为可用。如果允许其中的某个线程在没有得到锁的情况下也可以访问共享资源,那么即使其他的线程在使用共享资源前都申请锁,也还是会出现数据不一致的问题。条件变量是线程可用的另一种同步机制。
2023-10-10 17:21:33
179
1
原创 Linux环境高级编程-信号
因此,在设备打开失败的时候,需要判断是因为open自身引发的错误,还是因为信号打断而没有打开,对于前者,以以往的方式处理错误,而对于后者应该尝试再次打开设备,而不是报错后退出程序。以open为例,进程调用open时,进入阻塞态,等待IO设备打开,如果IO设备打开时间过长,此时有一个信号到来,就会打断open调用,使其打开设备失败。,会打断阻塞(唤醒进程),让进程进入就绪态,获得时间片进入运行态,此时进程还没阻塞到1s,就进入了就绪态,即信号会打断阻塞的系统调用。中,信号名都被定义为正整数常量(信号编号)。
2023-09-28 16:44:31
135
1
原创 【linux】建立共享文件夹
1.在Windows桌面下创建文件夹share。8.选择windows桌面下创建的share。Windows: 桌面/share。5.选择"共享文件夹"6.点击"总是启用"
2023-09-13 18:27:29
344
原创 【八大排序算法】冒泡排序
所谓交换排序就是就是根据序列中两个记录键值的比较结果来对换这两个记录在序列中的位置,交换排序的特点是:将键值较大的记录向序列的尾部移动,键值较小的记录向序列的前部移动。n 个数,那么就需要冒泡 n−1 趟,将数据冒到结尾,在每趟冒泡排序中,比较相邻两个元素,如果满足条件,则交换。优化代码(如果一趟冒泡排序中,没有发生交换,说明有序,那么。
2023-09-11 17:33:58
90
原创 【linux】gdb调试器
print 表达式:简记为 p ,其中“表达式”可以是任何当前正在被测试程序的有效表达式,比如当前正在调试C语言的程序,那么“表达式”可以是任何C语言的有效表达式,包括数字,变量甚至是函数调用。总的来说在Linux下开发程序gdb/cgdb是必须学会使用的,他的强大之处远不止于此,在程序的调试中用它会提高的我们的调试效率,当然gdb的功能与使用技巧还不止于此,多多探索,多多学习使用。如: watch a。call 函数(参数):调用程序中可见的函数,并传递“参数”,如:call gdb_test(55);
2023-09-08 14:51:04
217
1
原创 【linux】vim编辑器
vim 是一个功能非常强大的全屏幕文本编辑器,在 Linux 中,vim 编辑器被广泛使用。因为其功能丰富,尤其受程序员喜爱。vim 也是一个类似于 vi 的著名的功能强大、高度可定制的 文本编辑器,在 vi 的基础上改进和增加了很多特性。vim 和 vi 一样,是多模式编辑器,不同的是 vim 是 vi 的升级版本,它不仅兼容 vi 的所有指令,并且糅合了一些新的特性在 vim 中。例如语法高亮、可视化操作,这些不仅可以在终端运行,也可以也可以运行于 x window、 mac os、windows。
2023-09-07 15:51:08
121
原创 【linux】安装搜狗输入法
在弹出弹框中,选择“+”号,取消勾选“Only Show Current Language”, 然后搜索“so”, 可以看到sogoupinyin选项,选择确认即可。安装搜狗输入法以后,重启Ubuntu.直接在“键盘输入法系统中,选择“可以看到,搜狗输入法已成功安装。到此,fcitx安装配置完成。2.安装fcitx输入法框架。1.下载搜狗输入法的安装包。4.重启Ubuntu。
2023-09-07 15:32:16
4254
原创 【Linux】基础——常用命令
一说到命令行,我们真正指的是 shell。shell 就是一个程序,它接受从键盘输入的命令,然后把命令传递给操作系统去执行。几乎所有的 Linux 发行版都提供一个名为 bash 的来自 GNU 项目的 shell 程序。“bash”是“Bourne Again SHell”的首字母缩写,所指的是这样一个事实, bash 是最初 Unix 上由 Steve Bourne 写成 shell 程序 sh 的增强版。
2023-09-04 15:37:47
207
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅