linux app(3)
基础编程规范命令行参数处理下面这行代码通常在程序的“帮助信息”或“用法提示”中出现,用于告诉用户如何正确运行程序。
1printf("Usage: %s <file>\n", argv[0]);
参数占位符规范:
< > 表示必填参数(如 <file> 需替换为实际文件路径)
[ ] 表示可选参数(如 [options])
示例执行流程:
12./program /path/to/file # 正确用法./program # 错误:缺少必要参数
系统手册(man)手册章节结构man(manual 的缩写)是 Linux/Unix 系统中用于查看命令、函数、配置文件等手册页的核心工具。
章节
内容类型
示例命令
典型内容
1
用户命令
man 1 ls
文件列表操作
2
系统调用
man 2 fork
进程创建机制
3
库函数
man 3 printf
格式化输出函数
4
设备文件
man 4 tty
终端设备接口
5
配置文件格式
man 5 pas ...
linux app(2)
linux与windows最大的区别:目录的区别,linux是树状的文件结构,并且linux的磁盘是通过挂载在某个目录下的。比如boot、home、root分别挂载了不同的分区
ubuntu根目录下的目录:
/bin
存放内容:系统的基本命令(二进制可执行文件)。
说明:包含所有用户都可以使用的命令,如 ls、cp、mkdir 等。
示例文件:/bin/ls、/bin/cp。
/boot
存放内容:启动引导程序相关的文件。
说明:包含内核文件(vmlinuz)、初始化内存盘(initrd)和引导加载程序(如 GRUB)的配置文件。
示例文件:/boot/vmlinuz、/boot/grub/grub.cfg。
/dev
存放内容:设备文件。
说明:Linux 将所有硬件设备抽象为文件,存放在此目录下。例如,硬盘设备文件为 /dev/sda,终端设备文件为 /dev/tty。
示例文件:/dev/sda、/dev/tty1。
/etc
存放内容:系统配置文件。
说明:包含系统和应用程序的配置文件。例如,网络配置文件 /etc/network/interfac ...
c++笔记(2)
C++特点1. 面向对象编程(OOP)C++ 支持面向对象编程,提供了以下核心特性:
类(Class):用于定义对象的属性和行为。
封装(Encapsulation):通过访问控制(如 public、private、protected)隐藏实现细节。
继承(Inheritance):支持代码重用和层次化设计。
多态(Polymorphism):允许通过基类指针调用派生类的函数。多态是指同一个接口可以表现出不同的行为。在 C++ 中,多态主要通过 虚函数(Virtual Function) 和 函数重载(Function Overloading) 来实现。
编译时多态:通过函数重载和运算符重载实现。
运行时多态:通过虚函数和继承实现。
允许子类重写父类的虚函数,实现不同的行为
2. 高效性
C++ 继承了 C 语言的底层操作能力,可以直接操作内存和硬件。
支持手动内存管理(如 new 和 delete),但也提供了智能指针(如 std::unique_ptr 和 std::shared_ptr)来简化内存管理。
性能接近 C 语言,适合开发高性能应用(如游戏引擎、操作系统 ...
linux app(1)
本笔记基于MX6ULL为板载核心,使用正点原子alpha板。
eMMCeMMC(embedded MultiMediaCard)是一种嵌入式存储解决方案,广泛应用于智能手机、平板电脑、物联网设备、车载系统等嵌入式设备中。它结合了 NAND Flash 存储芯片 和 控制器,并通过标准接口与主机(如处理器或 SoC)通信。成本低,但通信速率低于UFS,更低于SSD,主要应用在低端设备。
eMMC 的基本组成eMMC 并不是单纯的存储芯片,而是一个完整的存储模块,主要由以下部分组成:
NAND Flash 存储芯片:用于实际数据存储。
Flash 控制器:管理 NAND Flash 的读写、坏块管理、磨损均衡(wear leveling)、错误校验(ECC)等。
标准接口(MMC 接口):采用 JEDEC eMMC 标准,兼容性强,简化了主控设计。
使用方式和作用
烧录方法:可通过 SD 卡、USB 工具
Linux 系统和应用程序通常会被烧录到 eMMC 存储中,并通过配置启动模式(如 eMMC 启动)来运行系统。
本质:eMMC = NAND Flash(存储) + ...
FreeRTOS 基础
FreeRTOS 一定会有一个空闲任务(Idle Task)。空闲任务是 FreeRTOS 自动创建的任务,具有最低优先级(优先级为 0),并且是系统运行时的“默认任务”。
调度器操作系统(如 FreeRTOS)的核心组件之一,负责管理任务的执行顺序和资源分配。它的主要作用是决定在任意时刻哪个任务可以运行,并确保系统的资源被高效、公平地使用。
调度器的主要职责包括:
任务切换:在多个任务之间切换执行,确保每个任务都能获得 CPU 时间。
优先级管理:根据任务的优先级决定执行顺序,高优先级任务优先执行。
资源分配:管理任务对 CPU、内存等系统资源的使用。
状态管理:跟踪任务的状态(如运行、就绪、阻塞等),并根据状态决定任务的调度。
任务的状态在 FreeRTOS 中,任务可以处于以下几种状态:
运行(Running):任务正在占用 CPU 执行。
就绪(Ready):任务已准备好运行,但尚未获得 CPU 时间。
阻塞(Blocked):任务正在等待某个事件(如信号量、队列、延时等),暂时无法运行。
挂起(Suspended):任务被显式挂起,不会被调度器调度。
删除(Deleted ...
Interrupt 机制
中断允许 CPU 在执行程序的过程中,暂停当前任务,转而去处理更高优先级的任务(称为中断服务程序,ISR),处理完成后再返回原来的任务继续执行。
为什么需要中断?中断的主要作用包括:
提高 CPU 效率:
在没有中断的情况下,CPU 需要通过轮询(Polling)的方式不断检查设备状态,这会浪费大量的 CPU 资源。中断机制允许 CPU 在设备需要处理时才响应,从而提高效率。
实时响应:
中断可以确保关键事件(如按键按下、定时器溢出等)得到及时处理,满足实时性要求。
多任务处理:
中断机制使得 CPU 可以在多个任务之间快速切换,实现多任务处理。
硬件事件处理:
硬件设备(如键盘、鼠标、定时器等)通过中断通知 CPU 有事件发生,CPU 可以及时处理这些事件。
如何实现中断?中断的实现通常包括以下几个步骤:
(1) 硬件支持
中断源:能够触发中断的事件或设备(如定时器、外部按键、串口接收数据等)。
中断控制器:负责管理多个中断源,并根据优先级决定哪个中断先被处理(如 ARM Cortex-M 中的 NVIC)。
中断向量表:存储中断服务程序(ISR)入口地址的表格, ...
Computer_Network2
计算机网络TCP
__源端口号__(Source Port,16位)表示发送方的端口号,用于标识发送数据的应用程序。
__目的端口号__(Destination Port,16位)表示接收方的端口号,用于标识接收数据的应用程序。
__序列号__(Sequence Number,32位)序列号用于标识该 TCP 报文段中第一个字节在整个字节流中的相对位置。
http和https的区别:
HTTP 和 HTTPS 是两种常见的网络通信协议,它们的主要区别在于 安全性 和 数据传输方式。以下是它们的详细对比:
1. 基本概念
HTTP(HyperText Transfer Protocol):
一种用于传输超文本(如网页)的应用层协议。
数据以明文形式传输,容易被窃听或篡改。
默认端口:80。
HTTPS(HyperText Transfer Protocol Secure):
是 HTTP 的安全版本,基于 SSL/TLS 协议对数据进行加密。
数据传输过程中加密,防止窃听和篡改。
默认端口:443。
HTTPS 的加密机制非对称加密,可以简单理解为服务端既有公钥又 ...
Makefile 基础
Makefile 是一个用于自动化构建和管理项目的工具,通常用于编译源代码、链接目标文件以及生成最终的可执行文件或库。它基于 Make 工具,通过定义规则和依赖关系来高效地管理构建过程。
.s 和 .o 文件是两种常见的中间文件,它们分别代表 汇编代码文件 和 目标文件
对于庞大的项目,Makefile对.o文件进行链接。
Makefile 的基本语法命令必须以 Tab 开头,
(1)规则(Rule)结构12target: prerequisites recipe
target:生成的目标文件(如 main.o)或伪目标(如 clean)。
prerequisites:依赖文件(如 main.c)。
recipe:执行的命令(必须以 Tab 开头)。
示例12hello: hello.c gcc hello.c -o hello
(2)变量(Variable)12345CC = gccCFLAGS = -Wall -O2hello: hello.c $(CC) $(CFLAGS) hello.c -o hello
(3)伪目标(Phony Target)用于 ...
can协议
CAN 总线半双工、异步(通过约定波特率的方式进行通信)、差分,通过TX、RX引脚连接到can收发器,再通过收发器的can_L和can_H进行通信。
1. CAN 通信的特点
多主架构:CAN 网络中的设备(节点)可以主动发送数据,不需要中央控制器。
广播通信:发送的数据会被所有节点接收,但只有目标节点会处理数据。
高可靠性:内置错误检测和纠正机制,确保通信的可靠性。
实时性:支持高优先级数据的快速传输。
抗干扰能力:采用差分信号传输,适合在噪声环境中使用。
灵活性:支持多种数据帧格式和通信速率(最高可达 1 Mbps)。
显性(Dominant)
定义:显性电平表示逻辑 0。
物理层实现:
在 CAN 总线上,显性电平通过 CAN_H 和 CAN_L 之间的较大电压差来实现。
典型电压值:
CAN_H: 3.5 V
CAN_L: 1.5 V
电压差:2 V
隐性(Recessive)
定义:隐性电平表示逻辑 1。
物理层实现:
隐性电平通过 CAN_H 和 CAN_L 之间的较小电压差来实现。
典型电压值:
CAN_H: 2.5 V
CAN_L: 2.5 V
电压差: ...
stm32 基础
GPIO工作原理八种输入输出模式:GPIO_Mode_AIN 模拟输入
GPIO_Mode_IN_FLOATING 浮空输入特点是 引脚内部没有上拉或下拉电阻,引脚的电平状态完全由外部电路决定。如果外部没有明确的电平信号,引脚可能会处于一个不确定的状态(即“浮空”状态)。
比如在使能USART通信时,接收信号的引脚就要设置为浮空输入。
I/O的电平状态是不确定的,完全由外部输入决定
GPIO_Mode_IPD 下拉输入很好理解,接地,在空闲状态下是低电平。
GPIO_Mode_IPU 上拉输入接VCC,空闲时为高电平,比如在配置UART的RX引脚时就可以设置为上拉输入。
GPIO_Mode_Out_OD 开漏输出
结构:开漏输出由一个MOSFET(场效应管)构成,其漏极(Drain)作为输出引脚,源极(Source)接地。
工作原理:
当MOSFET导通时,输出引脚被拉低(低电平,0V)。
当MOSFET截止时,输出引脚处于高阻态(无电流输出),需要通过外部上拉电阻将电平拉高(高电平,如3.3V或5V)。
不同于推挽输出可以主动输出高、低电平,他只能主动输出低电平。
G ...