自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(56)
  • 收藏
  • 关注

原创 Linux - 笔记 进程间通信(IPC)

IPC 概述IPC(Inter-Process Communication,进程间通信)是操作系统中用于实现进程之间数据交换和同步的机制。主要的 IPC 方法包括管道、消息队列、信号量、共享内存等。IPC 方法管道:单向通信管道,适合具有亲缘关系的进程间通信。消息队列:消息按照一定顺序发送和接收,可以用于不同进程间通信。信号量:用于进程间同步和互斥控制,可以防止竞态条件。共享内存:进程共享同一块物理内存区域,效率高但需要同步机制保证数据一致性。每种 IPC 方法的特点和适用场景管道。

2024-06-30 18:40:41 823

原创 笔记 - shell脚本

前言Shell脚本是一种用来执行命令行命令的脚本文件。它是由一系列Shell命令组成的程序,通常用于自动化任务、系统管理、数据处理等。Shell脚本可以运行在各种Unix和Linux系统上,也可以在Windows上的一些兼容环境(如Cygwin、WSL)中运行。组成部分1、解释器声明:脚本文件的第一行通常是#!(称为shebang),后跟解释器路径,用于指定脚本运行时使用的解释器。2、命令:Shell脚本由一系列Shell命令组成,每个命令在脚本中独立执行。3、变量:可以定义和使用变量来存储数据。

2024-06-27 23:11:45 715

原创 Linux-笔记 udev机制介绍

前言由于之前利用udev机制实现了一个自动配置某功能的项目,所以这里做一下笔记总结,什么是udev?怎么用?概念udev其实是linux系统中一个设备管理机制,负责在设备连接与断开的时候动态去创建与删除设备节点,并管理设备的命名和权限。当有设备插入或移除的时候,内核会产生“uevent”消息,这些消息会通过 “netlink”套接字发送给用户空间的udev,具体会有一个udevd来监听,它是udev的守护进程。规则文件。

2024-06-27 20:41:21 232

原创 Linux-笔记 嵌入式gdb远程调试

gdb调试器是基于命令行的GNU项目调试器,通过gdb工具我们可以实现许多调试手段,同时gdb支持多种语言,兼容性很强。在桌面 Linux 系统(如 Ubuntu、CentOS 等)上,我们通常可以直接运行 gdb 来调试程序。然而,在嵌入式系统中,由于芯片性能较弱,直接运行 gdb 不太现实(除非是性能较强的嵌入式芯片)。因此,我们通常在 PC 端运行 gdb 工具,源码也在 PC 端,而对应的可执行文件则放在开发板上运行。

2024-06-27 18:06:56 839

原创 Linux-笔记 使用SCP命令传输文件报错 :IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!

使用scp命令向开发板传输文件发生报错,报错见下图;

2024-06-27 15:58:35 170

原创 Linux-笔记 全志平台休眠功能初探

全志平台支持的休眠功能主要包括两种模式:休眠模式和待机模式。这两种模式用于降低设备的功耗,并在需要时快速恢复工作状态。由于平台为T113,所以可以很方便的使用RTC来做唤醒源。唤醒源指的是能够让系统从休眠状态恢复到工作状态的信号或事件。系统在进入休眠前会配置这些唤醒源。休眠过程中,这些唤醒源(如按键、RTC等)可以触发系统唤醒。实现1、内核配置//RTC//电源与唤醒支持2、唤醒源配置在设备树RTC节点下添加“wakeup‑source”属性设置RTC为唤醒源。3、修改设备树使能RTC节点。

2024-06-26 22:09:13 245

原创 Linux-笔记 OverlayFS文件系统小应用 恢复功能

通过另一章节OverlayFS文件系统入门中已经大致了解了原理,这里来实现一个小应用。

2024-06-26 19:49:22 408

原创 Linux-笔记 OverlayFS文件系统入门

OverlayFS 是一种联合文件系统,主要用于将多个文件系统的内容合并呈现给用户。在 Linux 系统中,它经常用于容器技术,比如 Docker 和 Kubernetes,以实现文件系统的层叠。OverlayFS 通过将一个文件系统层“覆盖”在另一个文件系统层之上,使得两个文件系统看起来像是一个统一的文件系统。通过以上的讨论以及验证方法,明白了所有操作仅影响上层目录,而不会修改下层目录,这种机制确保了下层目录的只读性和数据完整性。

2024-06-26 18:58:21 1147

原创 Linux-笔记 全志T113移植正点4.3寸RGB屏幕笔记

由于手头有一块4.3寸的RGB屏幕(触摸IC为GT1151),正好开发板上也有40Pin的RGB接口,就想着给移植一下,前期准备工作主要是整理好线序,然后用转接板与杜邦线连接验证好后期再画转接板也是可以的。SDK使用的tina5.0。

2024-06-25 23:07:47 1020

原创 Linux-笔记 高级I/O操作

I/O(Input/Output,输入/输出)是计算机系统中的一个重要组成部分,它是指计算机与 外部世界之间的信息交流过程。I/O 操作是计算机系统中的一种基本操作,用于向外部设备(如 硬盘、键盘、鼠标、网络等)读取数据或向外部设备写入数据。常见的I/O操作方式:1)同步 I/O(Synchronous I/O):在进行 I/O 操作时,程序会一直等待操作完成后再 继续执行后面的代码。如果 I/O 操作阻塞,程序会一直等待,直到操作完成或超时。

2024-06-25 21:48:36 1109

原创 Linux-笔记 线程同步机制

线程同步是为了对共享资源的访问进行保护,确保数据的一致性,由于进程中会有多个线程的存在,每个线程对共享资源的并发访问就会出现数据的一致性问题。

2024-06-23 23:23:03 728

原创 Linux-笔记 g++: internal compiler error: Killed (program cc1plus)报错

编译buildroot的时候报错了,通过查阅资料发现问题可能是编译器进程cc1plus被系统终止了。这种情况通常发生在编译过程中消耗了大量的系统资源,特别是内存,而系统为了释放资源而终止了该进程,如系统的物理内存(RAM)或者交换空间不足以支持编译过程中的内存需求,系统可能会终止cc1plus进程以防止系统崩溃或变得不响应。怀疑是交换分区不够导致编译不过,通过命令free -h查看发现交换分区真的不够了,所以可以通过扩充交换分区大小来解决问题。

2024-06-16 23:10:00 354

原创 Linux-笔记 samba实现映射网络驱动器到Win 10

之前通过网上的方法成功映射后,现如今在自己电脑想实现映射服务器共享文件夹到Win 10端发现对之前的方法没有总结导致细节出问题,特此写下笔记。

2024-06-15 23:57:06 416

原创 Linux-笔记 全志平台OTG虚拟 串口、网口、U盘笔记

此文章方法适用于全志通用平台,并且三种虚拟功能同一时间只能使用一个,原因是此3种功能都是内核USB Gadget precomposed configurations的其中一个选项,只能单选,不能多选,而且不能通过修改配置文件去实现功能。

2024-06-12 17:56:23 306

原创 Linux-笔记 全志平台镜像中添加git提交号

git提交号是在/kernel/linux-5.4/scriptsscripts/setlocalversion中获取的,由顶层makefile调用,生成内核版本号,我们可以利用源码脚本来实现我们的目的,该函数会判断是否使用git进行版本控制,如果是会输出提交号,反之为空,我们主要关注脚本内的scm_version()函数即可。通过在镜像中某个位置添加git提交号,可以方便排查与追溯是哪个提交编译出来的。1、修改设备树,添加提交号, 并引入提交号重定向文件。3、从uboot启动版本号查看提交号。

2024-06-11 22:35:46 528

原创 Linux-笔记 设备树插件

设备树插件(Device Tree Blob Overlay,简称 DTBO)是Linux内核和嵌入式系统中用于动态修改或扩展系统运行时的设备树配置的一种机制。它是对传统设备(Device Tree Source,简称 DTS)的补充,允许在不重新编译整个内核的情况下,对硬件配置进行更改。本质也是个设备树文件。

2024-06-11 20:02:05 1515

原创 Linux-笔记 应用编程函数总结

之前一直没做总结,这里总结一下。

2024-05-21 20:56:58 839

原创 Linux-笔记 man手册命令

这部分包含了操作系统提供的底层功能,通常是C语言的函数原型,由程序或库调用。:设备驱动程序和特殊文件。这部分包含了设备驱动程序的说明和与特殊文件(如。这些是用户可以直接在shell中执行的命令,例如。这部分包括了其他类别不包含的杂项,如宏包、规范等。这部分包含了需要管理员权限才能运行的命令,例如。这部分描述了内核的内部例程和数据结构。这部分描述了特定的文件格式和文件系统。这部分文档描述了C语言库中的函数,比如。这部分包含了关于游戏的帮助信息。

2024-05-14 16:37:49 275

原创 编译ARM开发板上运行的bin文件

arm-linux-gnueabihf-gcc -g -c led.s -o led.oarm-linux-gnueabihf-ld -Ttext 0X87800000 led.o -o led.elfarm-linux-gnueabihf-objcopy -O binary -S -g led.elf led.binarm-linux-gnueabihf-objdump -D led.elf > led.dis

2024-05-12 23:19:18 96

原创 Linux-笔记 开发板Uboot命令使用

uboot 支持 ext2 和 ext4 这两种格式的文件系统的操作命令,一般的命令有 ext2load、ext2ls、ext4load、ext4ls 和 ext4write。这些命令的含义和使用与 fatload、fatls 和 fatwrite 一样,只是 ext2 和 ext4 都是针对 ext 文件系统的,使用 ext4ls 就可以查询 EMMC 的分区 2 中的文件和目录。常用的跟 boot 有关的命令有:bootz、bootm 和 boot。1、mmc info :输出当前选择的mmc设备。

2024-05-12 22:14:59 751 1

原创 Linux-笔记 Makefile简单入门

使用make编译Makefile文件,make 命令会在当前目录下查找是否存在“Makefile”这个文件,如果存在的 话就会按照 Makefile 里面定义的编译方式进行编译,make 命令会为 Makefile 中的每个以TAB 开始的命令创建一个 Shell 进程去执行。1 main是目标,冒号后面这些是依赖项,生成main需要依赖这些.o文件,同时,如果要更新目标 main,就必须先更新它的所有依赖文件,如果依赖文件中的任何一个有更新,那么目标也必须更新,“更新”就是执行一遍规则中的命令列表。

2024-05-09 21:50:51 348

原创 Linux-笔记 GCC编译流程

GCC 编译器的编译流程是:预处理、编译、汇编和链接。预处理就是展开所有的头文件、 替换程序中的宏、解析条件编译并添加到文件中。编译是将经过预编译处理的代码编译成汇编 代码,也就是我们常说的程序编译。汇编就是将汇编语言文件编译成二进制目标文件。链接就 是将汇编出来的多个二进制目标文件链接在一起,形成最终的可执行文件,链接的时候还会涉 及到静态库和动态库等问题。

2024-05-09 19:57:31 260

原创 Linux-笔记 常用命令

find [路径] [参数] [文件名] : find / -name test*grep [参数] 关键字 路径:grep -ir "test" /opt。4.2 格式化mkfs:mkfs –t vfat /dev/sdb1。4.1 分区fdisk。

2024-05-08 23:27:00 861

原创 Linux-笔记 i2c-tools

1、i2c-tools介绍1、在日常linux开发中,有时候需要确认i2c硬件是否正常连接,设备是否正常工作,设备的地址是多少等等,这里我们就需要使用一个用于测试I2C的工具——i2c-tools,i2c-tools原理是通过操作/dev 路径 i2c-n设备文件完成,因此kernel必须开启了 CONFIG_I2C_CHARDEV 配置,否者会报找不到节点。在设备上也可以通过目标板终端输入:ls /sys/bus/i2c/devices查看i2c设备节点信息。

2024-05-08 20:28:11 633

原创 Linux-笔记 集成更新PDA

进入路径 buildroot-201611/target/user_rootfs_extra/usr/local,有一个qt5.9.sh脚本文件,在该脚本文件末尾添加如下两行。进入路径 /buildroot-201611/target/user_rootfs_extra/etc/init.d,修改该路径下的rc_daemon.S的启动文件。进入路径 “buildroot-201611/target/user_rootfs_extra/usr/lib”,执行以下命令,主要是重新建立软连接文件。

2024-05-06 21:12:49 208 2

原创 Linux-笔记 uboot修改设备树

扁平设备树(Flattened Device Tree,FDT),也叫平坦设备树,是设备树的一种二进制表示形式,提高了在嵌入式系统中的传输和解析效率;

2024-05-06 20:52:39 471

原创 Linux-笔记 修改开发板默认时区

进入到 ”/usr/share/zoneinfo/“ 查看各种时区文件 ,记下想要的时区文件。使用命令date -R查看当前的默认时区,date - R命令会自动解析/etc/localtime 文件,而该文件又是指向“ /usr/share/zoneinfo/$主时区/$次时区 ”,当需要更改到指定的时区只要将/etc/localtime 文件软链接到 ”/usr/share/zoneinfo/$主时区/$次时区 ” 文件即可。

2024-05-06 20:32:26 361

原创 Linux-笔记 开发板修改用户相关信息

【代码】Linux-笔记 开发板修改用户相关信息。

2024-05-06 20:10:00 268

原创 ubuntu安装界面太小点不到按钮解决办法

1、按住win+左键调整窗口。2、按住F7+Alt键调整。

2024-03-04 15:09:54 322

原创 知识笔记 -杂记

堆是大家共有的空间,分全局堆和局部堆。全局堆就是所有没有分配的空间,局部堆就是用户分配的空间。堆在操作系统对进程 初始化的时候分配,运行过程中也可以向系统要额外的堆,但是记得用完了要还给操作系统,要不然就是内存泄漏。什么是栈:栈是线程独有的,保存其运行状态和局部自动变量的。栈在线程开始的时候初始化,每个线程的栈互相独立。每个函数都有自己的栈,栈被用来在函数之间传递参数。操作系统在切换线程的时候会自动的切换栈,就是切换SS/ESP寄存器。栈空间不需要在高级语言里面显式的分配和释放。

2023-12-13 15:50:45 400

原创 Linux-笔记 LCD驱动框架

3、Framebuffer简称fb,是一种通过将系统所有的与显存有关的软硬件结合起来虚拟成一个fb设备,并最终会生成一个名为/dev/fbX(X=0~n)的设备,应用程序直接访问这个设备来操作显存完成特定工作。4、Linux内核将所有的Framebuffer抽象成一个名为fb_info的结构体,该结构体包含了Framebuffer设备的所有属性和操作集,每一个Framebuffer都必须有一个fb_info结构体。1、Linux应用程序是通过操作显存来操作LCD的,比如在上面显示文字、图像等等。

2023-12-01 17:02:04 430

原创 Linux-笔记 内核input子系统

1、input子系统是用于管理输入的子系统,是linux内核为了处理某一类设备的一种框架,这一类设备就是输入设备。2、由于输入设备的种类有许许多多,不同的输入设备对应的输入信息不同,应用层中的处理方法也会有所不同,写驱动的时候只需要按要求上报输入事件。3、input子系统可以分为input驱动层、input核心层、input事件处理层,还要提供给用户空间访问的设备节点。

2023-11-28 16:25:38 1068

原创 Linux-笔记 内核MISC驱动

3、编写MISC驱动的核心就是初始化miscdevice结构体变量,使用misc_register函数向内核注册,卸载使用函数misc_deregister来卸载。2、MISC设备的主设备号固定为10,并且会自动创建cdev,MISC驱动是基于platform驱动框架的。1、MISC驱动属于字符驱动的一种,当某设备上的外设比较杂无法分类的时候可以使用MISC驱动进行开发。4、如果miscdevice中的minor设置为255就表示内核自动分配次设备号。

2023-11-24 20:22:43 425

原创 Linux-笔记 platform设备驱动

1、分离思想就是将linux驱动与设备分离开来。在现实开发过程中,一般的主机控制器驱动都由相应的半导体厂家编写,设备驱动也一般由设备器件厂家编写,我们开发只需要提供设备信息即可,这样就是将设备信息从设备驱动中分离出来,驱动使用标准方法去获取设备信息(可能从设备树),根据获取到设备信息去初始化设备,一般采用驱动-总线-设备的模式来实现驱动分离的模式。2、分层的思想类似于网络中的七层模型,不同的层负责不同的工作,驱动的分层也类似于此,借助分层的模型可以极大简化驱动编写。

2023-11-20 22:34:56 56

原创 Linux-笔记 Linux异步通知心得

1、软件层次上的中断,也叫软中断信号,软件层次上对中断机制的一种模拟。异步通知的核心就是信号,驱动程序向应用程序发送不同的信号来实现不同的功能。应用程序想要使用信号就要在应用程序中定义信号处理函数,就像使用中断一样。2、在应用程序中使用函数signal函数设置信号处理函数,原型为:sighandler_t signal(int signum,sighandler_t handler);3、信号处理函数为typedef void (*sighandler_t)(int);

2023-11-19 21:28:25 28

原创 Linux-笔记 Linux阻塞与非阻塞IO心得

1、阻塞:当需要的资源不可用的时候或不满足运行状态的时候就会挂起等待。2、非阻塞:当运行所需资源不可用的时候,轮询查询等待,也可能因为等待超时而放弃。3、非阻塞打开文件需要加上O_NONBLOCK。4、设备驱动文件默认读取方式是阻塞的。

2023-11-16 22:07:49 33

原创 Linux-笔记 Linux内核中断心得

1、先获取要使用中断对应的中断号。2、使用request_irq申请中断,此函数会激活中断,不用了就用free_irq。3、注册中断处理函数irqreturn_t (*irq_handler_t)(int, void*)。4、使能、禁止。

2023-11-13 20:16:21 51 1

原创 Linux-笔记 Linux内核定时器心得

3)del_timer函数:不管定时器激活否,都删除一个指定的定时器,但是要注意在多处理器系统,一个定时器可能会在其他处理器上运行,删除的时候需要等待其他处理器运行结束。4) del_timer_sync函数:同步版的del_timer,会等待其他处理器用完定时器再删除定时器,但是该函数不能用在中断上下文中。5、Linux内核定时器采用系统时钟来实现,提供超时时间(定时值)与定时处理函数就行,超时以后就会跳转到定时处理函数去执行,但需要注意的是超时后需要在处理函数中重新打开定时器。

2023-11-08 11:00:38 55 1

原创 Linux-笔记 Linux并发与竞争心得

1、并发:同一时间间隔内有多个 “用户” 对同一个共享资源进行访问,或可以理解为同一个实体在同一时间间隔内发生多个事件。2、竞争:并发的同时就会引起竞争。比如两个人同时对打印机发起打印请求,就会同时竞争“打印机”这个资源。3、Linux是个多任务操作系统,主要有多任务、中断、抢占、多核这些并发与竞争事件,竞争资源,所以要保护共享资源,防止并发访问共享资源。

2023-11-05 22:08:37 41

原创 Linux-笔记 嵌入式Linux pinctrl子系统与gpio子系统

1、主要功能:1)获取设备树中pin的信息2)根据获取到的pin信息设置pin的复用功3)根据获取到的pin信息设置电气特性。只需要在设备树中设置好某个pin的相关属性,其他工作由pinctrl子系统完成。2、如何配置。

2023-11-03 10:59:52 50

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除