- 博客(70)
- 收藏
- 关注
原创 嵌入式Linux基于IMX6ULL tslib学习总结
tslib开源库地址是:http://www.tslib.org/tslib是一个开源的触摸屏校准和事件处理库,广泛用于嵌入式系统和 Linux 系统中。它提供了一套工具和库函数,用于校准触摸屏、处理触摸事件,并将原始触摸数据转换为可用于应用程序的标准化事件。
2024-11-24 11:32:48
1215
原创 嵌入式Linux输入系统应用编程学习总结
嵌入式Linux输入系统是处理来自各种输入设备(如键盘、鼠标、触摸屏等)事件的核心组件。在嵌入式系统中,输入子系统的设计需要特别考虑资源限制、实时性要求等因素。从应用层到硬件最底层分为:用户空间(应用层)、内核空间(输入系统事件层、输入系统核心层、输入系统驱动层)、硬件(如键盘、鼠标、触摸屏等):APP 发起读操作,若无数据则休眠用户操作设备,硬件上产生中断。
2024-11-13 23:34:08
1097
原创 freetype学习总结
基于韦东山IMX6ULL开发板和配套资料中LCD屏幕学习,资料包括: 5、simsun.ttc文件,freetype可以直接使用freetype 依赖于 libpng, libpng 又依赖于 zlib,所以我们应该:先编译安装 zlib,再编译安装 libpng,最后编译安装 freetype。但是,有些工具链里有 zlib, 那就不用编译安装 zlib。
2024-11-03 16:36:50
887
原创 基于IMX6ULL开发板LCD点阵显示字符学习
点阵显示字符,也称为点阵字体或位图字体,是一种将字符以点阵形式进行表示的方法。在这种表示方法中,每个字符都被划分为一个固定大小的点阵,点阵中的每个点(像素)可以独立控制其是否显示,从而构成字符的轮廓和形状。常见的点阵字体大小有8x8、8x16、16x16、24x24等,这些数字分别表示字符在水平和垂直方向上所占的像素点数。
2024-10-27 16:53:57
801
原创 基于STM32F103C8T6的双区bootloader学习总结
Bootloader是微控制器启动时运行的第一个程序,它位于存储器的特定位置,通常是Flash存储器的开始部分。Bootloader的设计目的是在没有操作系统的情况下,独立完成一系列关键任务,为系统的进一步启动做好准备。Bootloader的作用硬件初始化初始化微控制器的硬件资源,包括但不限于时钟设置、复位外设、配置中断控制器等,以确保系统处于一个稳定且可预测的状态。加载和执行应用程序将应用程序从非易失性存储器(如Flash)加载到RAM中,并跳转到应用程序的入口点(通常是main()
2024-10-27 11:12:18
1419
原创 在Keil调试内存中的程序
最近在使用STM32F103C8T6学习bootloader时遇到这样一个问题:实现bootloader程序把flash上app程序copy到RAM中,然后跳转到RAM执行app程序时,bootloader运行完后无法正常执行app的工程,想要单步调试分析问题,由于是在内存中运行,所以在Keil中就需要相应配置,实现在内存中调试的功能。
2024-10-26 20:02:31
1080
原创 找不到msys-2.0.dll解决方法
解决Windows环境下运行软件时出现“由于找不到 msys-2.0.dll,无法继续执行代码。重新安装程序可能会解决此问题”报错
2024-10-21 17:19:16
648
原创 Framebuffer学习
Frame是帧的意思,buffer是缓冲的意思,这意味着Framebuffer就是一块内存,里面保存着一帧图像。Framebuffer中保存着一帧图像的每一个像素颜色值,假设LCD的分辨率是1024x768,每一个像素的颜色用32位来表示,那么Framebuffer的大小就是:1024x768x32/8=3145728字节。假设需要设置LCD中坐标(x,y)处像素的颜色,首要要找到这个像素对应的内存,然后根据它的BPP值设置颜色。文件中,Framebuffer主要定义了2类参数:可变的参数。
2024-10-03 10:40:50
1033
原创 Makefile学习总结
Makefile是一种用于自动化构建过程的脚本文件,广泛应用于软件开发中。它定义了如何从源代码构建目标文件(如可执行文件或库文件)的一系列规则和依赖关系。Makefile通常与make工具一起使用,make是一个命令行工具,它可以解析Makefile中的指令并执行相应的构建任务。目标(Target):Makefile 中的一个目标通常是一个文件,它是由一系列依赖文件通过一个或多个命令生成的。最终的目标文件通常是可执行文件或库文件。依赖(Dependencies)
2024-09-10 14:29:12
1328
原创 GCC学习总结
GCC(GNU Compiler Collection,GNU编译器套件)是GNU项目的一部分,是一个广泛使用的开源编译器套件,支持多种编程语言和处理器架构。GCC最初是为了编译C语言而开发的,但现在已经成为一个多语言编译器,支持多种编程语言,包括C、C++、Objective-C、Fortran、Ada、Go、D等多种语言。GCC包含以下主要组件:前端(Frontend):负责处理源代码,将源代码转换为中间表示(Intermediate Representation,IR)。不同的编程语言有不同的前端。
2024-09-08 10:52:56
2980
原创 交叉编译概念
交叉编译是指在一个平台上编译代码,使其能够在另一个不同的平台上运行的过程。这种编译方式通常用于开发嵌入式系统、移动设备和其他受限环境中的应用程序。交叉编译是使用一种编译器(称为交叉编译器),该编译器在宿主机(host)上运行,但生成的目标代码却可以在目标机(target)上运行。宿主机和目标机通常有不同的硬件架构和操作系统环境。()嵌入式系统:如物联网设备、路由器、工业控制器等。移动设备:如智能手机、平板电脑等。特定架构的服务器:如ARM服务器。操作系统开发:如为不同架构编译Linux内核。
2024-09-04 22:30:13
2913
原创 MQTT Client源码分析
之前基于和,仅仅是对着韦老师的教程移植和使用杰杰的mqttclient代码,简单的将mqttclient\platform\FreeRTOS\platform_net_socket.c文件中的接口绑定到ESP8266的TCP AT命令,使用ESP8266的Socket,对于杰杰的mqttclient代码并没有深入分析和理解。
2024-09-04 10:11:04
2263
原创 Python编写BC260Y TCP数据收发压力测试脚本
使用BC260Y的TCP AT命令发送数据时,能够在数据中带有’\r\n’(回车换行),而其他模组会将’\r\n’当做AT命令处理的结束符,例如EC800E,为了验证TCP数据中带有’\r\n’时数据发收的稳定性,决定进行压力测试。
2024-08-27 18:02:55
716
原创 Linux_fileio实现copy文件
参考韦东山老师教程:https://www.bilibili.com/video/BV1kk4y117Tu?p=12。
2024-07-02 22:30:41
1123
1
原创 Linux_fileio学习
参考韦东山老师教程:https://www.bilibili.com/video/BV1kk4y117Tu?p=12。
2024-07-02 20:52:20
986
原创 STM32F103_ESP8266基于RTOS移植MQTT
基于STM32F103C8T6单片机FreeRTOS系统ESP8266 WIFI模组移植MQTTClient,成功连接MQTT服务器,实现订阅和发布消息!
2024-01-14 21:58:55
2294
1
原创 环形缓冲区优点及实现
使用环形缓冲区时存放sensor的x和y位置时,读与写互不干扰:读数据根据读指针读取,只有TaskReadPosition任务能够修改读指针位置;写数据使用写指针写数据,只有TaskWritePosition任务能够修改写指针的位置。环形缓冲区所有的push和pop操作都是在一个固定的存储空间内进行,相比队列方式,少掉了对于缓冲区元素所用存储空间的分配、释放。这是环形缓冲区的一个主要优势。环形缓冲区是一种特殊的缓冲区,其读指针和写指针都指向同一个缓冲区,通过移动指针来实现数据的读取和写入。
2024-01-07 00:12:18
2578
原创 keil移植MQTT时GNU语法报错
背景描述:STM32F103C8T6+ESP8266 WIFI模块,使用CubeMX生成简单的FreeRTOS代码,调通UART1和UART3,UART3与WIFI模块连接,UART1作为调试串口。
2024-01-06 16:35:47
1181
1
原创 FreeRTOS互斥量解决优先级反转问题
从测试结果来看:Task1运行后获取信号量,未来得及释放信号量时更高优先级的Task2开始运行,之后Task1没有机会释放信号量,Task3再运行时由于无法获取信号量一直处于阻塞状态,而优先级低于Task3的Task2一直处于运行状态,实现了优先级反转。创建3个Task(Task1、Task2、Task3)、1个互斥量、3个全局变量(cnt1、cnt2、cnt3)初始值为0。3、Task3运行,获取信号量时发现获取不到,使获取了互斥量的Task1继承自己的优先级(高于Task2)1、Task1获取互斥量。
2023-12-25 18:58:53
1579
原创 FreeRTOS学习——同步互斥
正确使用互斥与同步,FreeRTOS提供的方法是安全可靠的,比如队列、信号量、互斥量、任务通知等等,就像“三、优化有缺陷的同步”一样,使用FreeRTOS提供的方法同样可以优化有缺陷的互斥。
2023-12-16 16:02:24
457
原创 内存学习——堆(heap)
/自定义1024字节内存的数组,模拟堆//指向堆数组可用空间的首地址void *my_malloc(int size) //自定义malloc函数//记录开辟空间的首地址//malloc的空间大小//返回开辟空间的首地址void my_free(void *buf) //可用自定义malloc函数,但是无法自定义free函数,后面分析原因/* err */int i;//使用自定义的malloc函数在自定义堆数组中开辟100字节空间for (i = 0;i < 26;i++)
2023-12-09 20:49:25
1924
原创 .bss、.data、.text、.rodata简记
是嵌入式系统和程序设计中常用的内存段名。它们在程序执行时的位置取决于存储器和系统的配置。主要与 RAM 相关。但具体的配置可能会根据系统和编译器的特定设置有所不同。通常位于 Flash 或 ROM 中,而。
2023-12-09 11:42:14
1157
原创 Win10搭建VisualSvn Server
1、服务端:有集成了Subversion和Apache、安装使用非常简单且免费的VisualSvn Server和Subversion。Windows环境使用VisualSvn Server搭建SVN服务器简单好用。2、客户端:有收费的VisualSVN和免费的TortoiseSVN,一般使用TortoiseSVN。
2023-09-02 14:35:18
2591
1
原创 UART中RTS和CTS流控学习总结
流控:数据在两个串口之间进行通讯,常常会出现丢失数据的现象,比如当接收端数据缓冲区满了,而发送端还有数据发送过来,本质原因是速度不匹配,处理能力不匹配。流控就是为了解决这个速度匹配的问题,它的含义非常简单,当接收端处理数据处理不过来时,就向发送端发送不在接收信息,当发送端接收到这个信号之后,就会停止发送,直到收到可以继续发送信号在继续发送。流控的方式有两种,一种是硬件流控,一种是软件流控,一般UART只有RX、TX两个信号,要流控的话只能是软流控;
2023-07-26 19:30:56
6937
4
原创 Ubuntu GitLab服务器git-data中tmp_pack_xxx文件占满磁盘
此服务器上搭建了SVN和GitLab服务器。使用SVN上传文件时报错“SVN Couldn’t perform atomic initialization”,网上很多人说是由于Linux系统的磁盘空间满了所导致的,因此登录到服务器查看磁盘情况。没想到是GitLab导致磁盘撑爆的!使用发现根目录1.1T的空间全部占满(下图是解决问题后的截图,将git-data迁移到了/home目录下)再使用查找根目录下哪个目录占的空间大,发现/var占1.1T逐级查找,最终确定是/var/opt/gitlab中git-dat
2023-05-23 09:37:43
1224
3
原创 ubuntu16.04搭建gitlab
工作中遇到需要在远端服务器搭建gitlab,耗时4天,踩坑无数,特此开个虚拟机再次搭建一次gitlab并记录供以后参考!背景:为保证服务器安全,远端服务器在内网,本地只能通过指定外网IP和端口去访问远端服务器。
2023-03-16 09:57:27
3564
原创 STM32F103在CubeIDE运行FreeRTOS
创建两个TASK,TASK1中实现500ms周期闪烁LED1,TASK2中实现1000ms周期闪烁LED2
2022-11-11 15:48:41
1715
原创 解决CubeIDE调试时函数找不到源
背景:STM32F103C8T6单片机使用esp8266模块连接阿里云,需要先在工程中移植MQTT后才能使用esp8266连接阿里云,程序中用到MQTT库中的很多接口,调试到这些接口的时候发现无法进入这些函数并提示”找不到源“。然后一路点击确定,再次编译调试,此时就可以进入MQTTPacket_read()函数了。可以看到此函数的定义是在”MQTTPacket.c“文件中,也就是MQTT的库中。调试到MQTTPacket_read()函数时,想要进入此函数。发现无法进入此函数,显示”找不到此函数的源“
2022-11-10 19:00:04
809
原创 VScode多个C文件联合编译配置
VScode配置好C环境后,无法进行多个C文件的联合编译,需要另外对VScode进行配置才能够对多个C文件联合编译
2022-10-14 16:10:15
5728
10
原创 C语言实现秒与时间的互相转换
秒数值与具体时间日期的互相转换,在网上找的例程跑起来总是各种各样的小错误,浪费了大量的时间,因此这次工作之后写了一个秒和时间互相转换的模板,在以后工作中可以简单修改变量直接使用!
2022-10-13 16:49:50
4072
1
原创 S32K3xx低功耗获取唤醒源
在中知道S32K3xx只有两种运行模式:RUN和Standby模式,从Standby模式唤醒后从启动程序开始运行,直接复位了。因此MCU需要知道复位原因,若是唤醒复位需要再判断唤醒源。我参考后,回过头去芯片手册找寻例程为何这样写的原因?学习提升看芯片手册的能力!
2022-10-10 16:27:10
2676
6
开源的字体引擎库 freetype 和字体文件 simsun.ttc
2024-10-29
基于STM32F103C8T6的双区bootloader代码示例
2024-10-27
msys-2.0.dll文件
2024-10-21
多级目录Makefile示例
2024-09-09
《跟我一起学Makefile》
2024-09-08
基于STM32F103C8T6 FreeRTOS ESP8266移植kawaii mqttclient示例程序
2024-01-14
专业的Windows软件卸载小工具geek免安装版
2024-01-08
Everything工具直装版
2024-01-08
gitlab包(2021-06-01)
2023-03-16
STM32C8T6基于keil5,实现printf重定向到串口1的3种方法示例
2022-10-18
C语言实现秒与时间的互相转换
2022-10-13
《S32K3xx Reference Manual》和《S32K3xx Data Sheet》
2022-10-10
S32K344_FastWakeup_RTD200(低功耗电源管理demo)
2022-10-10
S32K344-FastWakeup-RTD200(低功耗电源管理demo)
2022-10-10
STM32F103C8T6 SPI2主从模式例程代码
2022-09-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人