- 博客(16)
- 收藏
- 关注
原创 基于瑞萨RA6M5的衣途智控(嵌入式项目)
显示界面如图3,图4所示,主要是显示衣柜内部的实时数据,包括温度,湿度,杀菌,烘干,通风,樟脑丸,光照等,还具有控制衣柜开关门和衣杆位置的改变的功能。在系统设计过程中,我们先经过了确定项目,选择材料,框定结构的过程,在前期准备完成后,便开始进行简单的单独调试,等各模块数据正常读取,wifi通信正常,QT显示没有误差等完成后,就开始搭建硬件,完成测试和预期结果,最终完成了最开始的项目目标。如图2所示,设计转接板PCB,采用排母和开发板进行连接,且摆放规整,这样也是方便接线,且直观看上去也美观整齐。
2025-11-04 12:06:46
1018
原创 CMake,GCC,Makefile详解
CMake是一个开源的,跨平台的构建系统生成工具,用于管理协和自动化软件项目的构建过程。他不直接编译代码,而是生成适合不同平台和编译器的构建脚本(如Makefile或Visual Studio项目文件),从而减缓跨平台开发和构建的复杂性。以下是Cmake的详细介绍。CMake通过以下步骤完成构建系统的生成CMake一般推荐在执行过程中创建build目录。它的作用是将生成的构建文件(如Makefile,VS项目)与源代码分离,避免污染源码目录,符合“源码外构建”的最佳实践。
2025-09-26 12:01:40
787
原创 嵌入式系统项目
在原料区,机器人识别物料颜色开发根据任务顺序抓取物料,并将其暂时放置在车上。抓取完成后,行驶到粗加工区,在粗加工区对色环进行识别,将对应的物料放在对应的色环中,在粗加工区完成相应操作后,重新将物料放置车上 行驶至暂存区机器人将物料放置在暂存区。最终,机器人按照任务要求多次往返原料区和粗加工区,直至任务完成,返回启停区结束任务。使用的是瑞萨RA6M5作为主控,运行的是FreeRTOS操作系统,依靠FreeRTOS,我们一共创建了四个任务,第一个任务是LED任务,检测LED是否闪烁,来判断程序是否卡死;
2025-09-24 13:43:03
328
原创 Linux:LCD驱动开发
实际上上边这两种接口的实质是一样的,这两种接口都可以归入一个标准:MIPI标准MIPI表示“Mobile Industry Proc8080essor Interface”,即移动产业处理器接口,是MIPI联盟发起的为移动应用处理器制定的开放标准和一个规范。主要是手机内部的接口(摄像头,显示器接口,射频/基带接口)等标准化,从而减少手机内部接口的复杂程度及增加设计的灵活性对于LCD,MIPI可以分为3类:既可以是Bus(总线),就是既能发送命令,常用的8080接口就是属于DBI接口。
2024-09-28 14:37:21
1607
4
原创 自旋锁,信号量,互斥量的实现
数据结构:根据前面的分析,我们可以基本推断出spin lock的实现。首先定义一个spinlock_t的数据类型,其本质上是一个整数型(对该数值的操作需要保证原子性),该数值表示spin lock是否可用。初始化的时候被设定为1.当thread想要持有锁的时候调用spin_lock函数,该函数将spin lock按个证书值减去1,然后进行判断如果等于0,表示可以获取spinlock,如果时负数,则说明其他thread的持有该锁,本thread需要spin。
2024-08-28 19:11:11
1559
1
原创 Linux:core dump文件到底是什么
core dump文件是指在程序崩溃或异常时,操作系统将程序的内存信息,寄存器状态,堆栈信息等保存到文件中以便进行调试和分析的文件。core dump文件通常包含了程序崩溃时的全部状态信息们可以帮助程序员快速定位程序崩溃的原因并进行修复。
2024-08-27 16:35:44
2475
1
原创 Linux:什么是信号
1.输入命令,在Shell下启动一个前台进程2.用户按下Ctrl-C,键盘输入产生一个硬件中断3.如果CPU当前正在执行这个进程的代码,则该进程的用户空间代码暂停执行,CPU从用户态切换到内核态处理硬件中断4.终端驱动程序将Ctrl-C解释成一个SINGINT信号,记得该进程的PCB中(也可以说发送了一个SIGINT信号给该进程)
2024-08-25 18:09:32
1336
原创 同步与互斥(进程、线程)
同步:是指散步在不同任务之间的若干程序片段,它们的运行必须严格按照规定的某种先后 次序来运行,这种先后次序依赖于要完成的特定的任务,最基本的场景就是任务之间 的依赖,比如A任务的运行依赖于B任务产生的数据。
2024-08-22 13:51:37
1208
原创 AT&T汇编
2.对于双操作数指令:源操作数可以是寄存器操作数,内存操作数和立即数,目的操作数可 以是寄存器操作数和内存操作数。在AT&T中,寄存器前面要加上"%", 而在立即数前面需要加上"$", 在AT&T中,十六进制立即数前面需要加上"0x",段寄存器是存放段地址的,要将段地址送入,必须以通用寄存器为中间桥梁,即通过通用寄存器将数据传送到DS,SS,ES段寄存器中。内存操作数是指操作数存放在内存中,其操作是往内存中写数或从内存中取操作数,CPU与内存打交道是通过内存地址完成的。通用寄存器可以装操作数。
2024-08-16 18:11:22
519
原创 Linux内联汇编
指定编译器将函数的代码插入到调用者的代码中,直到实际调用的位置,这些函数是内联函数。与宏有一些相似之处,它的好处是可以减少函数调用的开销,如果任何实际参数是常量,则他们的已知值可能允许在编译时进行简化,因此不需要包含所有内联函数的代码内联汇编其实就是编写为内联函数的汇编程序,为什么使用它呢,因为它能够操作并使其输出在C变量的上可见,调用asm关键字,声明其为内联函数。
2024-08-14 14:10:31
1630
原创 Linux虚拟内存(页,页框,页表,MMU)
传统计算机虚拟内存技术寻址空间/寻址能力:对于程序计数器位32位的处理器来说,它的地址发生器所能发出的寻址数量为二的32次 = 4G ,于是这个处理器所能访问的最大内存空间就是4G。在计算机技术中,这个值就叫做处理器的寻址空间或寻址能力一般来说,为了充分利用处理器的寻址能力,就应该按照处理器的最大寻址来为其分配系统的内存,这样处理器发出的每一个地址就都会有一个正式的物理村塾单元与之对应,同时每一个物理存储单元都有唯一的地址与之对应。
2024-08-03 03:28:37
1321
原创 Linux休眠与唤醒中环形缓冲区
在进行休眠与唤醒实验是由于每次按下按键g_key的值将会被覆盖,所以引入环形缓冲区来存放每次按下按键的数据。2.如果不为空,将此时的按键值赋为当前读索引为r的下标对应的环形缓冲区数组的数据。只要环形缓冲区数组不为空。就一直处于唤醒状态,然后一直遍历数组中的值,直到其为空。2.如果没有满,将此时的按键值写入到环形缓冲区数组中。在应用程调用read函数时,通过驱动函数。1.判断环形缓冲区数组是否满了。1.判断环形缓冲区数组是否为空。3.将写指针指向下一个位置。3.将读指针指向下一个位置。
2024-07-31 02:17:44
619
原创 Linux系统下x86和ARM的区别
1.x86架构下的平板,ipad,智能手机,这些平台上的程序都是移动环境下的应用,大多功能单一,没有什么计算可言。ARM处理器本身定位于嵌入式平台,应付与轻量级,目的单一的程序,现在应用于移动设备更是得心应手,x86定位于桌面和服务器,这些平台上横夺应用都是计算密集型的,所以将二者作比较是不合理的。
2024-07-21 14:18:03
4478
原创 Linux Study2(编译bootloader,内核,buildroot)
1.下载代码因为win11 使用Ubuntu18.04时WIFI一直检测不到驱动,升级内核版本也无济于事,所以改用Ubuntu22.04(在使用时也出现了大大小小的问题),特写此篇文章记录一下1.下载代码。
2024-07-21 13:27:30
791
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅