
Linux
文章平均质量分 64
풍殇い^κ
这个作者很懒,什么都没留下…
展开
-
stm32mp135d u-boot 引导流程
env_check 的作用是在引导过程中检查环境变量是否被修改,并在需要时将其保存到持久存储中,以确保修改的环境变量在下次引导时仍然有效。能力一般,水平有限,知识浅薄,如果能帮到您,那我感到很荣幸。1.当前使用的emmc,执行bootcmd_mmc1。-q: 静默模式,即不显示不必要的信息。-d: 显示默认环境变量的名称和值。-p: 显示环境变量的名称和值。原创 2024-04-30 13:32:40 · 1152 阅读 · 0 评论 -
stm32mp135d bringup
关于 stm32mp135d的移植 一共分为4个部分文件系统编译后面再说,使用 buildroot 或者 yocto我的板子型号为:代码正点原子为基础在这之前,bringup,可以先从。原创 2024-04-26 17:22:53 · 714 阅读 · 0 评论 -
Stm32CubeMX 生成设备树
使用STM32CubeMX配置Stm32设备树。原创 2024-04-26 16:54:38 · 1518 阅读 · 0 评论 -
内网穿透工具(zerotier, tailscale)
关于内网穿透,我使用过几种,这里展示其中两种(Zerotier和Tailscale),我用的还可以。个人感觉更好用linux下安装使用。原创 2024-04-23 21:39:25 · 2464 阅读 · 0 评论 -
ohmyzsh 配置
系统环境:使用过kali系统后,感觉zsh用着还是挺舒服的,换了系统也想换上,所以就写了这篇博文。原创 2024-04-19 14:51:49 · 984 阅读 · 0 评论 -
进程管理工具
系统环境:以下是一些图形化进程管理工具,原创 2024-04-15 18:24:06 · 365 阅读 · 0 评论 -
linux 进程管理
netstat:用于显示各种网络相关信息,如网络连接,路由表,接口状态losf:(列出打开文件lists openfiles)能看到pid和用户(有权限控制,只能看到本用户),可以找到哪个进程占用了这个端口ps: 查看某一瞬间所有进程状态(静态)top: 实时所有进程状态(动态)原创 2024-04-15 18:19:31 · 903 阅读 · 0 评论 -
byobu
系统环境: 是包装过的创建窗口: + 关闭当前标签(只有):查看各窗口: + 查看所有命令: + 在当前窗口上下分屏: + 在当前窗口左右分屏: + 上下左右分屏切换: + 方向键还有一些终端多路复用器: 等等使用方式和快捷键大同小异tmux 使用默认作为控制键screen默认是四、ssh + byobu 远程协作ssh使用其他用户通过 ssh 连接到同一主机上,使用命令进入将会进入同一个终端环境,这样就可以协同了原创 2024-04-15 17:59:31 · 792 阅读 · 0 评论 -
ssh 使用
(没有此文件就创建一个)原创 2024-04-15 17:49:59 · 1972 阅读 · 1 评论 -
docker 简单使用
进入容器查看,里面已经有了我们复制进来的test.log并且预先安装了软件包:至此,docker简单使用已完成能力一般,水平有限,希望能帮到您。原创 2024-04-12 15:49:31 · 824 阅读 · 0 评论 -
VxWorks和Linux内核实时性
通用的分时操作系统面向多用户的不同任务,意在追求系统整体运行的效率和资源的均衡利用,软件的执行在时间上要求并不严格。实时操作系统不同于分时操作系统,它主要是对任务进行实时的处理,要求任务的运行具有可确定性和可预测性,提供即时响应和高可靠性。由此导致通用分时系统和实时操作系统的内核在任务调度机制方面的不同。下面主要以内核架构,系统的实时性,以及对系统的实时性改进三点为核心简要分析VxWorks和Linux内核实时性并予以对比。一、内核架构1.1 Linux宏内核架构Linux采用宏内核架构。宏内核原创 2022-02-10 21:29:22 · 2505 阅读 · 0 评论 -
Linux库概念及相关编程
一、Linux库Linux共享库、静态库、动态库详解Linux库二、静动态库的特点a) 静态库静态函数库,是在程序执行前(编译)就加入到目标程序中去了 ;优点: 运行快 发布程序无需提供静态库,因为已经在app中,移植方便缺点:大b) 动态库动态函数库,是在程序执行时动态(临时)由目标程序去调用缺点: 运行慢优点: 小三、两种库的制作1.静态库的制作:格式xxxx.a1.生成xxx.o文件 gcc demoFunc.c -c2. xxx.o文件生成xxx.a静态库文件 ar r原创 2021-09-03 20:12:44 · 193 阅读 · 0 评论 -
Shell脚本拓展学习(2)
Shell脚本拓展学习(2)一、sed命令1.一次替换2.指定最多次替换3.指定替换次数4.指定行替换5.打印替换的行6.删除(1)删除指定行(2)删除末行(3)删除指定行到末行(4)删除指含目标字段的行二、date命令三、nohup命令四、Crontab定时器1.查看使用2.删除任务3.查看crontab执行日志4.查看cron服务状态5.启动cron服务五、字符串操作1.(1).获取长度:(2).字符串截取(3).取尾部的指定个数的字符(4).大小写转换2.数组操作(1)赋值(2)查看(3)获取数组的长原创 2021-04-09 17:52:04 · 418 阅读 · 0 评论 -
Shell脚本拓展学习(1)
Shell脚本拓展学习一、标准输入输出及其重定向二、grep命令1.目标文件查找某字段2.使用gerp查找某字段并计数3.当前目录下查找某字段4.当前目录下查找含某字段的文件5.在子目录下查找某字段6.当前目录下查找并只显示此字段7.当前目录下查找并只显示此行及行数8.在当前目录下查找并显示字段外其他内容9.目标文件下查找显示某字段开头的行10.在目标文件下查找显示某字段结尾的行11.在目标文件下查找显示多目标字段的行12.限制查找显示个数三、awk命令1.直接打印2.打印目标字段行3.打印目标字段列4.使原创 2021-04-09 16:39:45 · 350 阅读 · 0 评论 -
Shell脚本简单语法
Shell脚本简单语法1.基本判断语法2.基本判断语法测试3.管道4.if条件语句5.case条件语句6.for条件语句7.while条件语句8.函数1.基本判断语法2.基本判断语法测试可以用[ ],亦可以用test[ $x -eq $y ] || echo "x!=y"test $x -eq $y || echo "x!=y"#!/bin/bashread -p "input x:" xread -p "input y:" y[ $x -eq $y ] || echo "x!原创 2021-03-27 21:53:10 · 264 阅读 · 2 评论 -
Shell脚本学习
Shell脚本简单总结1.变量基本使用规则1.定义变量2.使用变量1.变量基本使用规则1.定义变量variable=valuevalue是一串无空格的字符串,否则只打印第一段字符variable=‘value’variable=“value”单引号和双引号功能基本相同,但是若value是一个变量且有值,必须使用双引号才能取值,使用单引号,会将value作为字符串直接输出2.使用变量$variable${variable}使用大括号可以将命令的结果赋值给变量variable='comm原创 2021-03-27 14:33:01 · 205 阅读 · 1 评论 -
树莓派简单驱动编写
自己写驱动实现IO口高低电平1.准备工作1.统一版本2.安装交叉编译工具2.编写代码1.驱动代码2.测试代码3.测试代码1.进入自己安装的系统版本文件夹下2.配置Makefile3.模块编译1.模块编译2.测试代码编译4.树莓派下操作1.加入驱动2.将设备打开权限设置为都可打开3.测试并调试1.准备工作1.统一版本我是用虚拟机乌班图,编写的驱动是否可以写进内核,取决于乌班图Linux版本和树莓派的是否兼容,若不兼容,请参考内核编译进行内核编译,再实现此代码2.安装交叉编译工具此外还需要安装交叉编原创 2021-01-10 18:55:23 · 2010 阅读 · 0 评论 -
树莓派3B设置 mjpg-streame
树莓派3B设置摄像头1.主要设备2.设置步骤1.下载基本工具2.下载mjpg-streamer3.编译并安装4.修改启动脚本5.打开摄像头查看影像6.关于可能出现的问题1.主要设备树莓派3B + Pi摄像头+mjpg-streamer下图为摄像头2.设置步骤1.下载基本工具sudo apt-get update #更新软件列表sudo apt-get upgrade #更新软件sudo apt-get install subversion #Subversion是一个自由开源的原创 2021-01-02 12:17:08 · 723 阅读 · 0 评论 -
Linux学习—TCP三次握手四次挥手
TCP三次握手四次挥手1.TCP连接三次握手第一次握手第二次握手第三次握手2.TCP四次挥手第一次挥手第二次挥手第三次挥手第四次挥手3.常见面试题1.为什么连接的时候是三次握手,关闭的时候却是四次握手?2.如果已经建立了连接,但是客户端突然出现故障了怎么办?1.TCP连接三次握手用于TCP连接时:第一次握手建立连接时,客户端发送SYN包(SYN=j)到服务器,并进入SYN_SENT状态,等待服务器确认;SYN:同步序列编号(Synchronize Sequence Numbers)。第二次握手原创 2021-01-01 21:45:12 · 308 阅读 · 1 评论 -
网络OSI模型的简单总结
网络OSI模型的简单总结1.什么是OSI?2.七层模型1.物理层2.数据链路层(Data Link Layer)3.网络层(Network Layer)4.传输层(Transport Layer)5.会话层(Session Layer)6.表示层(Presentation Layer)7.应用层1.什么是OSI?Open System Interconnection开放式系统互联:把网络通信的工作分为7层,(从下到上)分别是物理层,数据链路层,网络层,传输层,会话层,表示层和应用层。这种框架性的设计原创 2021-01-01 21:07:43 · 447 阅读 · 1 评论 -
树莓派串口简单测试语音识别模块
1.使用语音模块:LDV7 语音识别模块模块参数:型号:YS-LDV7名称:一体化语音识别模块规格:43*29.7MM供电电压:5V (内部工作电压 3.3V)待机电流:30MA识别时电流:45MAIO 口输出:高电平为 3.3V通信方式:串口通信(5V TTL 电平,不可直接接 RS232、RS485)2.简单使用模块实际原理为 1 片 STC11 单片机+1 片 LD3320 组合形成的一款语音识别模块,语音识别部分已写好驱动程序,用于只需要对 STC 单片机进行编程加入自己的原创 2020-12-30 17:01:06 · 1264 阅读 · 3 评论 -
树莓派控制继电器
树莓派控制继电器1.需要用到wiringPi库,故包含下面头文件2.使用前确保接口正常初始化3.配置引脚4.让对一个已配置为输出模式的引脚输出指定的电平信号5.例子1.需要用到wiringPi库,故包含下面头文件# include<wiringPi.h>2.使用前确保接口正常初始化int wiringPiSetup (void) 3.配置引脚返回:执行状态,-1表示失败 当使用这个函数初始化树莓派引脚时,程序使用的是wiringPi 引脚编号表。void pinMode (i原创 2020-12-27 19:32:14 · 482 阅读 · 0 评论 -
Linux—gdb调试简单实现
1.GDB简述GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具,GDB主要可帮助工程师完成下面4个方面的功能:(1)启动程序,可以按照工程师自定义的要求随心所欲的运行程序。(2)让被调试的程序在工程师指定的断点处停住,断点可以是条件表达式。 (3)当程序被停住时,可以检查此时程序中所发生的事,并追索上文。 (4)动态地改变程序的执行环境。不管是调试Linux内核空间的驱动还是调试用户空间的应用程序,掌握gdb的用法都是必须。2.安装gdb增强工具gdb工具时系统自带的,但是为原创 2020-12-24 12:50:59 · 433 阅读 · 0 评论 -
Linux学习—strtok函数的基本实现
1.简述分解字符串为一组字符串。s为要分解的字符,delim为分隔符字符(如果传入字符串,则传入的字符串中每个字符均为分割符)。首次调用时,s指向要分解的字符串,之后再次调用要把s设成NULL。头文件#include<string.h>原型char *strtok(char s[], const char *delim);使用NULL才可以获取后面的字符,应该为第一次分割后str已经被破坏 char *p; char str[128] = {"hello world原创 2020-12-24 11:44:22 · 372 阅读 · 1 评论 -
Linux嵌入式学习—信号通讯
信号基本概念信号(signal)是linux进程通讯中唯一的异步通讯方式。信号从软件层次上看是对中断机制的一种模拟。一个进程收到信号时的处理方式与CPU收到中断请求时的处理方式一样。收到信号的进程会跳入信号处理函数,执行完后再跳回原来的位置继续执行。信号来源:有一类信号是已经被定义好的,如数据异常、指令异常、定时器、abort等。他们都有自己特殊的用法,如:发生异常时会触发异常信号。头文件#include <signal.h>函数原型ypedef void (*sighandle原创 2020-12-03 12:56:32 · 253 阅读 · 1 评论 -
基于链表实现的学生成绩管理系统
C语言学习成果,主要是加强对链表的熟练操作。。。#include<stdio.h>#include<stdlib.h>//学生结构体struct Student { int ID; int Chinese; int Math; int English; struct Student *next;};//班级结构体struct Class{ int Classnum; struct Student *stuHead; struct Class *n原创 2020-12-24 09:56:14 · 1389 阅读 · 1 评论 -
ftp云盘—服务端server
题目ftp云盘,代码编写分为客户端,服务端,配置文件通过TCP协议,利用套接字socket具体实现。实现功能分为客户端(lls,lpwd,lcd),服务端(ls,cd,pwd,)以及双方文件交互功能(get,put)此为ftp云盘服务端#include <sys/types.h>#include <sys/socket.h>#include <stdio.h>#include <stdlib.h>#include <netinet/in.原创 2020-12-24 09:44:06 · 682 阅读 · 0 评论 -
ftp云盘—客户端client
题目ftp云盘,代码编写分为客户端,服务端,配置文件通过TCP协议,利用套接字socket具体实现。实现功能分为客户端(lls,lpwd,lcd),服务端(ls,cd,pwd,)以及双方文件交互功能(get,put)此为ftp云盘客户端//包含头文件#include <sys/types.h>#include <sys/socket.h>#include <stdio.h>#include <stdlib.h>#include <net原创 2020-12-24 09:33:59 · 531 阅读 · 0 评论 -
ftp云盘—配置文件
#define LLS 1#define LPWD 2#define LCD 3#define CD 4#define LS 5#define PWD 6#define PUT 7#define GET 8#define QUIT 9struct Msg{ char data[128]; char dataBuf[128];};原创 2020-12-24 09:33:06 · 267 阅读 · 0 评论 -
Linux 交叉编译
交叉编译是什么,为什么要交叉编译交叉编译是什么?交叉编译 是在一个平台上生成另一个平台上的可执行代码。我们再windows上面编写C51代码,并编译成可执行代码,如xx.hex,是在c51上面运行,不是在windows上面运行 我们在ubuntu上面编写树莓派的代码,并编译成可执行代码,如a.out, 是在树莓派上面运行,不是在ubuntu linux上面运行 编译:是在一个平台上生成在该平台上的可执行代码 C51 交叉编译的发生在keil(集成环境上面) stm32 ..原创 2020-12-21 21:03:57 · 671 阅读 · 1 评论 -
Linux 文件系统
1. 什么是文件系统? 常规认知: 根目录 文件系统是操作系统用于明确存储设备组织文件的方法。 以上说的方法:就是文件管理系统(程序),简称文件系统 2. 文件系统(文件管理系统的方法)的种类有哪些? FAT VFAT NTFS EXT1/2/3/4 HFS .... 树莓派查看文件系统的命令: df -T vfat : boot(bootloader, kernel) (基于磁盘) ext4 : 根目录 (基于磁盘) tmpfs : 内存文件系统3. 什么是分区?win原创 2020-12-19 21:19:04 · 197 阅读 · 2 评论 -
Linux内核配置
树莓派高阶开发课程ubuntu18.04版本安装环境自行搭建,包括一些基本安装,vi,ifconfig等,自行百度关键字操作。树莓派等芯片带操作系统的启动过程 C51,STM32(裸机)》》》》》》C直接操控底层寄存器实现相关业务。 业务流程型的裸机代码 遥控灯: while(1) 垃圾桶:WemosD1 LOOP 恩智浦智能车: stm32 X86,Intel windows 启动过程: 电源 -》 BIOS -》windows内核-》C原创 2020-12-19 12:07:15 · 668 阅读 · 0 评论 -
树莓派开发—基础配置
1.树莓派刷机插入读卡器,打开文件,会自动识别到内存卡,点击写入即可,而后将内存卡插入树莓派。2.树莓派登录2.1HDMI视频线 连接到显示器2.2串口 2.2.1设备破解 默认情况,树莓派的串口和蓝牙连接。 想办法断开蓝牙连接,把串口用来数据通信 https://blog.youkuaiyun.com/syjsxxjy/article/details/80774262 修改系统配置,启用串口登录树莓派1.打开SD卡根目录的"config.txt"文件,将以下内容添加在最后并且保原创 2020-12-13 18:45:01 · 639 阅读 · 0 评论 -
(Linux下)基于Nucrses的贪吃蛇小游戏
代码核心是基于链表的使用要运行此代码,需要安装Nucrses库#include<curses.h>#include<stdio.h>#include<stdlib.h>#include <pthread.h>//使用绝对值确保方向#define UP 1#define DOWN -1#define LEFT 2#define RIGHT -2struct Snack{ int row; int原创 2020-12-12 19:55:53 · 497 阅读 · 1 评论 -
Linux嵌入式学习—网络编程
1.socket概念Linux中的网络编程是通过socket接口来进行的。socket是一种特殊的I/O接口,它也是一种文件描述符。它是一种常用的进程之间通信机制,通过它不仅能实现本地机器上的进程之间的通信,而且通过网络能够在不同机器上的进程之间进行通信,socket也有一个类似于打开文件的函数调用,该函数返回一个整型的socket描述符,随后的连接建立、数据传输等操作都是通过socket来实现的;2.socket类型1)流式socket(SOCK_STREAM) à用于TCP通信流式套接字提供可原创 2020-12-12 18:02:13 · 612 阅读 · 1 评论 -
Linux嵌入式学习—多线程
(1)线程概述进程是程序执行时的一个实例,即它是程序已经执行到何种程度的数据结构的汇集。从内核的观点看,进程的目的就是担当分配系统资源(CPU时间、内存等)的基本单位。线程是进程的一个执行流,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。一个进程由几个线程组成(拥有很多相对独立的执行流的用户程序共享应用程序的大部分数据结构),线程与同属一个进程的其他的线程共享进程所拥有的全部资源。(2)使用线程的理由使用多线程的理由之一是和进程相比,它是一种非常"节俭"的多任务操作方式。我们知原创 2020-12-03 13:14:36 · 1446 阅读 · 1 评论 -
Linux嵌入式学习—共享内存
简介:共享内存具有最高的效率共享内存是进程间通信中最简单的方式之一。共享内存允许两个或更多进程访问同一块内存,就如同 malloc() 函数向不同进程返回了指向同一个物理内存区域的指针。当一个进程改变了这块地址中的内容的时候,其它进程都会察觉到这个更改。实现步骤:1.创建共享内存头文件:#include <sys/ipc.h>#include <sys/shm.h>原型:int shmget(key_t key, size_t size, int shmflg);原创 2020-12-01 12:13:50 · 366 阅读 · 1 评论 -
Linux嵌入式学习—消息队列
消息队列:msgrcv, msgsnd - message operationsThe msgsnd() and msgrcv() system calls are used, respec‐tively, to send messages to, and receive messages from,a message queue. The calling process must have write permission on the message queue in order to sen原创 2020-12-01 11:58:48 · 471 阅读 · 1 评论 -
Linux基础学习—命名管道
原型#include <sys/stat.h>int mknod(const char* path, mode_t mod, dev_t dev);int mkfifo(const char* path, mode_t mod);特点为了使任意两个进程之间能够通信,就提出了命名管道(named pipe 或 FIFO)。1、与管道的区别:提供了一个路径名与之关联,以FIFO文件的形式存储于文件系统中,能够实现任何两个进程之间通信。而匿名管道对于文件系统是不可见的,它原创 2020-12-01 11:37:09 · 268 阅读 · 1 评论 -
Linux基础学习—匿名管道
进程可以通过调用函数pipe()创建一个管道。函数pipe()的原型如下:int pipe(int fildes[2]);从本质上来说,pipe()函数的功能就是创建一个内存文件,但与创建普通文件的函数不同,函数pipe()将在参数fildes中为进程返回这个文件的两个文件描述符fildes[0]和fildes[1]。其中,fildes[0]是一个具有“只读”属性的文件描述符,fildes[1]是一个具有“只写”属性的文件描述符,即进程通过fildes[0]只能进行文件的读操作,而通过fildes原创 2020-12-01 10:39:11 · 339 阅读 · 1 评论