- 博客(13)
- 收藏
- 关注
原创 GPIO详解
*!/*!/*!/*!/*!/*!/*!/*!/*!/*!成员变量地址偏移描述MODER0x00GPIO 端口模式寄存器(输入/输出/复用/模拟)OTYPER0x04GPIO 端口输出类型寄存器(推挽/开漏)OSPEEDR0x08GPIO 端口速度寄存器(低速/中速/高速)PUPDR0x0CGPIO 端口上拉/下拉寄存器IDR0x10GPIO 输入数据寄存器(读取引脚电平)ODR0x14GPIO 输出数据寄存器(控制引脚输出)BSRR0x18。
2025-03-25 16:06:16
599
原创 attribute属性
简单来说,map文件就是通过编译器编译之后,生成的程序、数据及IO空间信息的一种映射文件,里面包含函数大小,入口地址等一些重要信息。程序各区段的寻址是否正确程序各区段的size,即目前存储器的使用量程序中各个symbol的地址各个symbol在存储器中的顺序关系(这在调试时很有用)各个程序文件的存储用量。
2025-03-14 15:45:36
662
原创 linux设备树
reg = <0x10000000 0x02000000 0x10000>这种情况我们64位的地址就是高32位是0x10000000,低32位是0x02000000的64位地址所以他代表的地址空间就是:0x1000000002000000 + 0x10000的地址空间。off2=这里((1<<32)|(0))就是我们ranges=<1 0 0x0a000000 0x02000000>的前两个数字组成的64位地址,(即0x1代表高32位,0x0代表低32位)对于#address-cells = <1>;
2025-03-09 17:17:39
897
原创 NFS服务开启、配置、ubuntu(18.04)、PC、开发板互ping
若局域网是其它网段,请参考此处的配置,不能直接用星号表示,如欲配 置192.168.1.* 的局域网下所有机器都可以访问,则配置为 192.168.1.0/24。anongid=998: 将客户机上的用户映射成属于指定的本地用户 组ID,此处998是开发主机embedfire用户组gid,此处请根据具体的主机用户组gid进行配置。anonuid=998:将客户机上的用户映射成指定的本地用户ID的用户,此处998是开 发主机embedfire用户的uid,此处请根据具体的主机用户uid进行配置。
2025-02-26 13:48:05
315
原创 timerfd事件驱动
如果不读取它,它会一直存在,直到你处理它。未处理的定时器事件就会累积,因此你会看到它一直触发。如果你希望定时器只触发一次并停止,或者在每次触发后清空计数值,你必须在程序中通过。假设我们创建了一个定期触发的定时器,每10秒触发一次。来读取定时器的计数值,从而让内核清除已触发的计数并停止继续触发。时,它会定期触发并将计数值写入文件描述符。,触发的计数值不会被清除,内核会一直写入新触发的次数。触发时,内核会向文件描述符写入一个 64 位的值(这个值表示定时器已经触发的次数。并不断积累触发次数,直到你读取它。
2025-02-21 11:09:03
382
原创 事件驱动机制
即使你一次性读取了所有数据,也需要确保文件描述符是非阻塞的,以避免循环读取时出现阻塞情况。在这种情况下,哪怕你已经读取了所有数据,仍会收到冗余的事件触发(性能浪费)。在高性能场景中,尤其是数据到达分批或者延迟的情况下,依然更具优势。都会返回文件描述符的事件,直到缓冲区被清空(即数据被完全读取)。操作中读取了所有数据,ET 模式下就不会再收到事件触发。检测到缓冲区有数据后都会通知你,直到数据被完全读取。如果你每次只读取 512 字节,就会触发多次事件。模式一次性读取所有数据,减少了多次触发的开销。
2025-01-16 16:13:22
667
原创 mosquito库函数
来启动一个后台线程,该线程会负责处理消息队列中的事件(包括接收和发送消息)。中的处理逻辑时间较长(比如循环处理),会阻塞主线程,无法立即处理新的消息。不被调用,所有的事件(包括消息接收和发送)都在主线程中处理。函数会在接收到消息时被调用,但如果。可以被异步调用,而不会阻塞主线程。
2024-12-31 16:39:32
210
原创 POSIX消息队列
mq_close只是关闭进程对队列的访问,不会删除队列本身。mq_unlink需要显式调用,以确保删除队列并释放系统资源。如果不调用mq_unlink,可能导致消息队列在文件系统中残留,造成资源泄漏。所以,在使用完消息队列后,建议总是调用mq_unlink来显式删除队列,确保系统资源得到释放。
2024-12-30 16:05:47
593
原创 ARM汇编
ISB指令用于刷新处理器流水线,确保在ISB指令之前的所有指令都已经执行完毕,然后再继续执行后续指令。它的作用是确保前面的指令对后续的指令是可见的。DSB指令用于确保在指令执行流中的所有数据访问和存储指令都已经完成,然后再继续执行后续指令。ISB指令用于刷新处理器流水线,确保在ISB指令之前的所有指令都已经执行完毕,然后再继续执行后续指令。它可以用于确保前面的指令对后续的指令是可见的。DSB指令用于确保在指令执行流中的所有数据访问和存储指令都已经完成,然后再继续执行后续指令。(全系统内存栅栏)、
2024-04-30 09:47:45
1763
原创 Makefile编译脚本
操作符可以定义一个条件变量,即如果该变量尚未定义,则将其设置为指定的值。述代码中,.c文件列表SOURCES的每个元素将被转换为对应的.o文件,并将结果赋值给变量OBJECTS。,即将变量的值在赋值时进行解析,并将解析结果作为变量的值。这意味着,在赋值时不会发生变量的延迟展开,而是立即获取变量的值。上述代码的意思是,如果变量CFLAGS尚未定义,则将其设置为"-O2",否则不对其进行重新赋值。上述代码将会立即获取当前目录下所有以".c"结尾的文件,并将其赋值给变量SOURCES。在Makefile中,?
2024-04-20 15:28:14
836
原创 Linux编译内核步骤
进入 Linux 内核官网下载 Linux 内核 , 点击右侧 黄色的 " Latest Release "在这里插入图片描述按钮 , 下载最新的 Linux 内核发布版本;最新版的 Linux 内核有 122MB;
2023-11-15 09:00:48
376
1
原创 大力发展先进制造业和装备制造业-高端数控机床(组合机床和立柱移动式三坐标及其基础模块和功能模块规划设计图册技术)
原大连组合机床研究所工作,主要从事组合机床和柔性组合机床及其自动线、高端多坐标自动换刀数控机床等研发和设计。历任技术员、工程师、高级工程师和室主任等职,曾获国家科技攻关中作出突出贡献重大成果奖,发国家荣誉证书。退休后将过去几十年的技术工作进行了总结,以绘图的形式绘制了组合机床和立柱移动式三坐标及其基础模块和功能模块规划设计图册。图册有如下内容:1. 图册中所绘制的模块和机床方案图,大部分技术经过实践应用,并进行改进,提高和创新,按1:1尺寸设计和绘制结构总图,再缩小比例绘制新图样。
2022-09-24 10:46:40
294
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人