自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 EEPROM经验总结(1)

也就是低地址单元存储的是数据的 “低字节”(小端序)还是 “高字节”(大端序)。EEPROM 本身没有 “默认字节序”,字节序是由「写入数据时的代码逻辑」决定的 —— 你写入时按什么字节序存,读取时就必须按同样的字节序取,否则数据错误。1. 读取 EEPROM 中的uint16_t(16 位)或uint32_t(32 位)多字节数据时,必须先明确 EEPROM 的 “字节序(端序)”而uint16_t(2 字节)、uint32_t(4 字节)是多字节数据,必须拆分存储,因此必须明确字节序。

2025-12-17 08:06:33 140

原创 调度器的作用

作用:嵌入式系统里的 “周期调度器”(核心功能:按预设周期,自动循环执行注册好的函数),简单说就是个 “定时任务管理器”—— 你把要周期性执行的函数(比如 CAN 发送、传感器读取)和执行周期(比如 10ms、100ms)注册进去,它会自动帮你按时间调用,不用手动写循环判断时间。总结:调度器帮你 “接管了周期判断的活儿”,让你的代码从 “手动喊工人上班” 变成 “自动打卡上班”,更符合嵌入式大规模周期任务的管理需求~

2025-12-17 07:55:43 176

原创 浮点数转换16进制保存字节序方法

其 IEEE 754 单精度存储的 4 字节十六进制值是。)在内存中占 4 字节,通过指针操作可将其拆分为 4 个。(按大端字节序排列,即高位在前),可以用数组保存。(字节),按顺序存入数组。

2025-11-09 14:11:32 136

原创 各种通信(五):IIC协议(二)

五.在 I2C 通信协议中,ACK(Acknowledge,确认) 和 NACK(Not Acknowledge,非确认) 是主设备与从设备之间用于校验数据传输是否成功的应答信号,由接收方(根据通信方向,可能是从设备或主设备)产生。I2C 地址是软件层面的设备标识,每个 I2C 从设备(如传感器、存储器)都有一个唯一的地址(7 位或 10 位,最常用 7 位),用于在同一通道中区分不同设备。先选通道,再选地址:主设备需先确定使用哪个通道(物理接口),再通过地址在该通道内选择具体设备。

2025-10-26 21:01:06 586

原创 各种通信(四):IIC协议(一)

主机往总线上发送地址,所有的从机都能接收到主机发出的地址,然后每个从机都将主机发出的地址与自己的地址进行对比匹配,如果某从机地址匹配成功,这个从机就会向主机发出一个响应信号。这样避免了电平冲突,实现了时钟同步‌。在使用10位地址时,第一个字节是一个特殊的保留序列(11110)加上高2位地址和读写位,第二个字节为低8位地址‌。在7位地址模式下,从机地址在启动信号后的第一个字节开始传输,该字节的前7位为从机地址,第8位为R/W位。例如,写地址为0x92,读地址为0x93,实际上这些地址的前7位是0x49‌。

2025-10-26 20:39:58 363

原创 各种通信(三):GPS模块数据解析

感概一下,年轻时候真挺能研究,硬生生自研星历图动态表示出来。

2025-10-19 21:20:49 138

原创 各种通信(二):GPS模块数据校验方法

二,GPS模块核心功能:GPS 的核心功能并非生成数据,而是接收卫星发送的导航电文(含卫星位置、时间等信息),并对信号进行解调、解码,最终输出可用的位置、时间数据,这属于通信领域中 “接收端信号处理”。第一步:从$后的第一个字符开始(如示例中的G),到*前的最后一个字符(如示例中的E),依次提取所有字符。一,通信双发:一方是太空中的 GPS 卫星(信号发送端),另一方是地面的 GPS 模块(信号接收端)第二步:将这些字符的 ASCII 码值进行 “异或运算”(相同为 0,不同为 1),初始值设为 0。

2025-10-19 21:03:04 262

原创 编程基础专栏(五):C语言知识点大全(四)

指针,函数指针,指针函数。

2025-09-26 17:15:17 131

原创 编程基础专栏(五):C语言知识点大全(三)

区分动态和静态的唯一标准就是数据的内存在程序的整个生命内一直存在,还是需要动态的申请/释放.这里的动态申请/释放包括系统自动的和malloc/free,人为的全局和静态(static)的数据都是静态存储的,局部数据和malloc申请的数据都是动态存储的。c语言中变量按存储类型有auto, extern, register, static 这四种,存储类型说明了该变量要在进程的哪一个段中分配内存空间,可以为变量分配内存存储空间的有数据区、BBS区、栈区、堆区。例如:函数内定义的int a = 5;

2025-09-26 14:48:46 423

原创 编程基础专栏(五):C语言知识点大全(二)

3.位域的位置不能访问,因些不能对位域使用地址运算符号&(而对非位域成员则可以使用该运算符).从而,即不能使用指向位域的指针也不能使用位域的数组(因为数组实际上就是一种特殊的指针).另外,位域也不能作为函数返回的结果.2.如果相邻位域字段的类型相同,但其位宽之和大于类型的sizeof大小,则后面的字段将从新的存储单元开始,其偏移量为其类型大小的整数倍。1.由于位域的实现会因编译程序的不同而不同,在此使用位域会影响程序的可移植性,在不是非要使用位域不可时最好不要使用位域.无名的位域是不能使用的。

2025-09-26 12:54:00 270

原创 编程工具专栏(一):内存检测工具

【代码】编程工具专栏(一):内存检测工具。

2025-09-20 20:11:39 83

原创 编程基础专栏(五):C语言知识点大全(一)

a(-1)是有符号数,与无符号数 b 比较时,a 被转换为无符号数。在 32 位系统中,-1 在内存中的二进制补码是 0xFFFFFFFF,作为无符号数解读时是 4294967295(约 42 亿),显然大于 1,因此 a >= b 成立。2.当有符号数(signed) 和无符号数(unsigned) 进行比较时,有符号数会被隐式转换为无符号数.无符号整数的溢出规则是 “模运算”:超出最大值后,会从最小值(0)重新开始计数。当有符号数是负数时,转换为无符号数后会变成一个极大的正数(因为。

2025-09-20 18:00:24 218

原创 Linux系统编程(九):HTTP协议下,客户端从服务端下载文件,模拟车载OTA

含义:客户端使用 HTTP/1.1 协议,请求删除 “/api/file/12345” 对应的资源(如 ID 为 12345 的文件)。含义:客户端使用 HTTP/1.1 协议,向 “/user/register” 路径提交用户注册数据(数据在请求体中,不在请求行显示)2.POST 请求(提交资源),用于向服务器提交数据(如表单提交、接口上传数据),数据通常放在请求体(Request Body)中。1.GET 请求(获取资源),最常用的请求方法,用于从服务器获取资源(如网页、图片、接口数据)

2025-09-19 22:21:01 829

原创 编程基础(四):检查cpu端模式

端模式指的是多字节数据(如 2 字节的。)在内存中的存储顺序。

2025-09-18 18:41:50 128

原创 Linux系统编程(八):DBus下,服务端进程和客户端进程间通信

【代码】Linux系统编程(八):DBus下,服务端进程和客户端进程间通信。

2025-09-18 17:07:01 147

原创 Linux系统编程(七):DBus下USB插入和拔出,复制目标文件到工程文件夹下面

车载应用(如中控系统、音乐 APP)会预先 “订阅” DBus 上的 USB 相关事件(如org.freedesktop.UDisks2.DeviceAdded),当接收到 DBus 广播的事件后,即可执行后续逻辑(如弹出 “USB 设备已连接” 提示、加载 USB 中的音乐文件)。用户态的 “事件管理器”(如车载系统中的udev服务,是 Linux 标准的设备管理工具)会接收这些uevent,并解析设备信息(如设备 ID、类型、挂载路径)。

2025-09-17 22:55:43 599

原创 编程基础(二)简单说明数据在内存中存储形式

100:保存的形式为若为 32 位 int + 小端模式:内存中按 0x64, 0x00, 0x00, 0x00 顺序存储。32 位 int 类型的 100 内存存储顺序(地址从低到高):0x00 → 0x00 → 0x00 → 0x64。若为 32 位 int + 小端模式:内存中按 0x64, 0x00, 0x00, 0x00 顺序存储。若为 32 位 int + 大端模式:内存中按 0x00, 0x00, 0x00, 0x64 顺序存储。字节 0(低字节):01100100(即十六进制 0x64)

2025-09-17 11:05:54 334

原创 编程基础(三):fprintf和fwrie区别

【代码】编程基础(三):fprintf和fwrie区别。

2025-09-17 11:05:33 250

原创 一些配置手顺(一)在Oracle VirtualBox配置共享文件夹

重启虚拟机后,执行 ls /mnt/host_share,若能看到共享文件,说明永久挂载成功。必须为空:目录内不能有其他文件 / 子目录,否则挂载后原内容会被临时隐藏(卸载后恢复)。必须是目录:不能是文件,必须先创建空目录(如 /mnt/host_share)。最后两个 0:分别表示 “不备份此分区” 和 “开机不检查此分区”,无需修改。sudo mount -a # 加载 /etc/fstab 中的所有挂载配置。defaults:默认挂载参数(包含读写权限、自动挂载等)。三.永久挂载(重启后生效)

2025-09-16 19:32:04 461

原创 Itron系统编程(一):任务间同步和通信,共享数据排它控制简单介绍

互斥锁:是一个二值锁(状态只有「锁定」和「解锁」),专门用于实现「共享资源的排他性访问」—— 确保同一时间只有一个任务能进入临界区(操作共享资源的代码段),本质是「信号量的特殊形式(计数器仅为 0 或 1)」,但添加了更多安全机制。适用于大量数据,比如串口数据,传递长度可变的数据,与队列的区别,对列只能传递一个word,4byte的数据。计数信号量:资源大于或等于2,应用于2个以上的任务,当资源为0的时候,任务进入等待状态。消息必须是全局变量,如果不是全局变量,就用malloc,发送,申请,接收,释放。

2025-09-16 11:01:19 446

原创 Linux系统编程(六):俩个进程间,应用消息队列实现通信

POSIX 的消息队列的队列是有优先级的,队列中数据的顺序会根据优先级而变化,而不是简单地以先进先出的方式存储和检索。mq_unlink 第一个参数指定要删除的消息队列的名称。这样,不仅可以交换消息,而且接收方可以按照发送方存储在队列中的顺序来检索消息,即消息的发送顺序和消息接收的顺序得到保证。对队列中的消息进行排序,以便队列中的消息按优先级顺序排序,从队列顶部开始,以便接收方可以按优先级顺序将消息出队。具体来说,消息发送方的线程或进程将消息排入消息队列,消息接收端的线程或进程将消息从消息队列中出队,

2025-09-16 10:12:29 662

原创 Linux系统编程(六):排他控制讲解【互斥】

由于只有一个线程可以同时处理这些部分,因此不会同时访问,也不会出现数据不一致的情况。访问共享数据:共享数据包括,全局变量,地址,文件。中间是共享数据(全局变量,文件,地址)

2025-09-16 09:57:27 116

原创 Linux系统编程(五):pthread_cond_t

pthread_cond_t 是 POSIX 线程库中用于线程间条件同步的机制,它通常与互斥锁(pthread_mutex_t)配合使用,调用 pthread_cond_signal() 或 pthread_cond_broadcast() 时,通常在持有互斥锁的情况下调用。不需要手动释放条件变量占用的资源,销毁时使用 pthread_cond_destroy()当条件满足时,其他线程可以通知等待的线程继续执行。// 缓冲区空则等待。// 唤醒至少一个等待的线程。// 唤醒所有等待的线程。

2025-09-16 09:49:32 269

原创 Linux系统编程(四):线程之间共享数据排他控制,互斥锁和条件变量配合使用

这段代码的主要问题在于两个线程对共享变量num的访问没有同步机制,导致了竞态条件,并且输出线程可能会陷入无限循环。输出线程可能无限循环:即使输入线程修改了num的值,输出线程可能因为 CPU 缓存等原因看不到这个变化。添加了条件变量cond和标记updated,使输出线程在没有新数据时进入等待状态,而不是无限循环。//cond:指向条件变量的指针 mutex:指向已加锁的互斥锁的指针。输入线程被阻塞时输出线程无限制运行:当输入线程等待用户输入时,输出线程会一直打印相同的值。// 唤醒等待的输出线程。

2025-09-15 20:56:41 397

原创 Linux系统编程(三):多线程最简单的例子

* 計算結果を格納するアドレス *//* 計算結果を格納するアドレス *//* スレッドを実行する上で必要な情報を格納する配列 *//* 1つ目のスレッドを行う上で必要な情報を格納 *//* 2つ目のスレッドを行う上で必要な情報を格納 *//* 引数arg:スレッド(仕事)を行う上で必要な情報 *//* スレッド実行に必要なデータを格納する構造体 *//* スレッドを格納する配列 *//* 1つ目のスレッドを作成 *//* 2つ目のスレッドを作成 *//* スレッドの終了を待機 */

2025-09-15 20:49:09 241

原创 Linux系统编程(二):pthread_join()等待线程结束并获取返回值

pthread_join 是 POSIX 线程库中的一个重要函数,用于等待指定的线程结束并回收其资源。1.** 等待线程结束 :调用 pthread_join 的线程会阻塞,直到 thread 参数指定的线程执行结束。printf("主线程:子线程返回值为 %d\n", *(int *)retval);3. 获取线程返回值 **:通过 retval 参数获取被等待线程的返回值(如果有的话)2. 回收线程资源 :避免产生 "僵尸线程",释放线程所占用的系统资源。// 等待线程结束并获取返回值。

2025-09-15 20:43:23 463

原创 Linux系统编程(一):pthread_create创建之后立即执行吗?

Linux 内核通过优先级来决定线程(在 Linux 中线程被视为轻量级进程)的调度顺序,在使用 pthread_create 创建线程后,新线程会立即开始执行,但具体何时获得 CPU 时间片运行取决于操作系统的线程调度机制。调用 pthread_create 成功后,新线程的入口函数(即你指定的线程函数)会被立即排入调度队列。新线程何时不一定会 "立即" 在 CPU 上运行,这取决于系统当前的线程调度策略和其他线程的运行状态。运行结果中,"新线程执行" 和 "主线程执行" 的输出顺序是不确定的,

2025-09-15 20:26:59 244

原创 SOME/IP配置,学习,和总结(三):SOME/IP报文格式

首部是按照固定格式排列的有效信息,这些有效信息包括报文ID、报文长度信息、请求ID、协议版本、接口版本、报文类型、返回码。Client ID,16bit,区分不同客户端,Method的请求报文和响应报文Client ID值相同,Event报文Client ID值为0x0000,SD报文中的Client ID值为0x0000。Request ID,32bit,对于提供者和订阅者的组合,请求ID应是唯一的。同一条请求和响应中的会话ID应一致,如果响应的会话ID与请求的会话ID不匹配,则订阅者必须忽略响应。

2025-09-15 20:13:50 744

原创 各种通信(一):简单说明通信方式

1.CAN:异步,半双工,无地址,二进制数据传输,2根线(CAN高,CAN低)3.发送方发出数据后,不等待接收方发回响应,接着发送下一个数据包的通讯方式。4.SPI,同步,全双工,4跟线(SCLK,MOSI,MISO,SS/CS)3.发送方发出数据后,等待收方发回响应后,才发送下一个数据包的通信方式。单工:只能单方向传输,只能发不能收,比如广播,即一方发,一方收。2.UART:异步,全双工,3根线(TX,RX,GND)3.IIC,同步,半双工,2跟线(SDA,SCL)2.异步是非阻塞模式。

2025-09-14 19:12:31 197

原创 编程基础(一)字节

文本文件是一种以文本形式存储数据的文件,其中的数据以人类可读的字符形式存在。文件类型,也被称为文件格式,是计算机对数据的编码方式,不同格式的文件使用不同的编码方式存储数据。一共128个字符,33个控制字符,95个显示字符,所谓的编码,因为计算机只识别二进制0或1,不识别字母,数字(除了0和1),所以要显示A,要通过编码对应的数字来显示A.计算机中储存的信息都是用二进制数表示的,字符编码是一种将字符映射到字节序列的规则,即按照何种规则将字符存储在计算机中,以便在计算机系统中存储、处理和传输文本数据。

2025-09-14 18:41:44 1610

原创 SOME/IP配置,学习,和总结(二):远程过程调用(RPC)与消息传递

1.请求 / 响应方法(Request/Response Methods):客户端向服务器发送请求,服务器向客户端返回响应。具体哪些客户端需要接收该事件,将通过 SOME/IP-SD(SOME/IP 服务发现协议)来确定。2.即发即弃方法(Fire and Forget Methods):仅由客户端向服务器发送请求(无需服务器返回响应)的消息类型。获取器(Getter):用于读取字段当前值的请求 / 响应方法。设置器(Setter):用于更新字段值的请求 / 响应方法;

2025-09-14 16:38:33 185

原创 SOME/IP配置,学习,和总结(一):支持的各类中间件功能解析

例如,新接入的雷达传感器启动后,可通过 SOME/IP SD 功能向网络广播 “自身提供的‘障碍物检测服务’”,其他需要该服务的 ECU(如自动驾驶域控制器)会自动发现并配置连接,无需人工干预。5.1核心定义:针对 UDP 协议(用户数据报协议)不支持 “数据分片” 的缺陷,SOME/IP 提供了自定义的消息分段机制,可将超过 UDP 最大传输单元(MTU,通常为 1500 字节)的大型 SOME/IP 消息拆分为多个小的 UDP 数据包发送,接收方再按照预设规则将这些数据包重组为完整的原始消息。

2025-09-14 16:12:35 992

tcpmp追加bmp格式图片显示插件

tcpmp追加bmp格式图片显示插件

2025-12-30

调度器的作用,车载嵌入式开发用

调度器的作用,车载嵌入式开发用

2025-11-26

计算机文档cs1.6脚本

计算机文档cs1.6脚本

2025-11-20

EEPROM知识总结1234567890文档

EEPROM知识总结123

2025-11-20

cs1.6脚本纪律脚本纪律

cs1.6脚本纪律脚本纪律

2025-11-21

EEPROM知识总结1234567890

EEPROM知识总结123

2025-11-20

空空如也

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

TA关注的人

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