![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
嵌入式
文章平均质量分 69
smallerxuan
这个作者很懒,什么都没留下…
展开
-
如何使用gprof对程序进行性能分析
通过 gprof 工具统计出程序中 各函数的调用次数、执行时间、函数调用关系。原创 2024-06-21 15:38:45 · 885 阅读 · 0 评论 -
SOC中的同构多核、异构多核
现代SOC设计中,为了解决性能与功耗的平衡、通过并行化加速计算等,而越来越多地使用同构多核、异构多核和协处理器的设计。在系统层面也就有了相应的SMP、AMP支持。原创 2024-04-09 12:02:24 · 1189 阅读 · 0 评论 -
为prj添加kconfig支持
Kconfig是一个配置系统,它允许用户和开发者通过配置文件/配置界面选择需要的编译选项。目前大量的项目都有用到该配置系统(linux、u-boot、rt-thread、esp-idf/adf、zephyr等),可以说是一个项目的构建系统中的不可缺少的重要组成部分。如何为我们的项目添加相关支持,是一个值得思考和探索的事情。原创 2024-03-20 17:30:35 · 664 阅读 · 0 评论 -
关于Linux系统中的U-Boot、Kernel、RootFS
U-Boot、Kernel和 RootFS 是嵌入式Linux系统中的三个关键组成部分。可以说从事Linux系统相关的开发者,无论是在原厂、方案商、板卡商都离不开对这三个板块的理解、掌握、使用。原创 2024-03-08 16:43:51 · 1212 阅读 · 0 评论 -
ARM Cortex-A 内核的运行模式切换
ARM Cortex-A系列内核的处理器支持多种运行模式的切换。不同的运行模式能满足不同的需求,如响应中断、运行操作系统内核、处理异常等。原创 2024-01-26 15:57:42 · 1210 阅读 · 0 评论 -
ARM架构SOC运行Linux的典型启动流程
对于运行linux的ARM架构的SOC来说,典型的启动流程应该从上电开始。通常经过:上电复位、Boot模式选择、Boot ROM加载、Boot Flash加载、Bootloader加载、Linux内核加载、Linux内核启动、用户空间初始化、用户空间运行。原创 2024-01-26 11:26:58 · 637 阅读 · 0 评论 -
I.MX6U的IO设置概观
从整体上对 IO/PIN 进行概览式的表观描述,不追求描述的准确性,侧重于整体的抽象表达。概观IO和外设的逻辑关系。原创 2024-01-25 14:34:52 · 394 阅读 · 0 评论 -
Linux下如何快速调试I2C设备
在Linux 系统的硬件开发过程中,经常会有需要快速验证、调测I2C设备的场景。如何能够快速、高效的验证I2C设备是否能够正常工作,是一件很重要的事情。原创 2024-01-14 11:17:44 · 998 阅读 · 0 评论 -
Qt中的线程池
线程池是多线程编程中常用的一种技术,可以帮助管理系统中的线程资源、提高程序的性能、帮助控制并发度、简化多线程编程、提高程序的稳定性。所以,线程池在Qt开发中具有重要的作用,在需要进行多线程编程的场景下,使用线程池是一个常见且有效的选择。原创 2024-01-12 16:08:36 · 1393 阅读 · 2 评论 -
Qt中的多线程
在现代化的程序设计开发中,多进程、多线程是经常采用的设计方式。当Qt程序在某些情况下需要处理复杂逻辑的时候(比如需要较长时间的网络操作、耗时的数据处理等)可能会占用很长的时间,这时候可能会导致窗口线程响应缓慢(UI响应卡顿),这时候通过多线程设计让多个逻辑事件分配在多个线程中进行操作,并处理好多个线程间的同步与交互,就能极大的提升程序的用户体验和程序执行效率。原创 2024-01-12 15:20:19 · 1173 阅读 · 0 评论 -
常用通信接口、协议:SCCB
SCCB接口、协议是常见于mcu/soc 与camera sensor通信所用的控制协议,协议类似于IIC协议原创 2023-11-23 00:10:58 · 6345 阅读 · 0 评论 -
RTOS编程中的原子操作
RTOS编程中的原子操作(Atomic operation)有什么作用,如何实现的。原创 2023-10-28 20:44:08 · 10181 阅读 · 0 评论 -
如何用BCompare打增量包
记录如何通过BCompare来对工程项目进下版本间增量包的生成原创 2023-10-24 12:12:17 · 11016 阅读 · 0 评论 -
常用通信接口、协议:SPI
SPI接口是4线全双工串行通信接口,其通讯速率往往能够达到 几十Mbps,常应用于 EEPROM、FLASH、AD转换器等外设的通信中。定义有4条通信线:CS、SCLK、MOSI、MISO。主机和从机通过移位寄存器根据时钟,在MISO和MOSI上完成数据的同步交换。原创 2023-06-08 06:54:10 · 10800 阅读 · 1 评论 -
常用通信接口、协议:UART
UART接口是通用异步收发器,作为一种串行通信的物理接口形式,定义有4个pin(VCC、GND、RX、TX),采用TTL电平,低电平为0(0V)高电平为1(3.3V)原创 2023-06-07 07:08:47 · 12325 阅读 · 0 评论 -
常用通信接口、协议:IIC
IIC 接口是2线制半双工主从通信接口,通信速率能够从几百kbps~几Mbps。包含 时钟线SCK、数据线SDA。两根线均需要上拉电阻(大小由通信速率和容性负载决定,通常在3.3k~10k之间),所以低电平时通信中的显性电平。其数据bit通常是以MSB(高比特位在前)的方式进行的。原创 2023-06-06 07:27:33 · 12606 阅读 · 1 评论 -
ubuntu 20.04搭建ESP-ADF开发环境
ubuntu 20.04搭建ESP-ADF开发环境原创 2022-08-17 15:59:41 · 10465 阅读 · 0 评论 -
linux 搭建webserver-BOA
嵌入式linux 搭建webserver-BOA原创 2022-08-13 10:53:48 · 16665 阅读 · 0 评论 -
linux 搭建webserver-Goahead
嵌入式linux 搭建webserver-Goahead原创 2022-08-13 10:39:15 · 15632 阅读 · 0 评论 -
嵌入式系统中的低功耗设计
电子产品的低功耗设计,需要系统性优化,从硬件设计到软件设计的共同优化,才能达到更好的效果。原创 2022-07-16 21:33:09 · 7097 阅读 · 1 评论 -
STM32F429图形加速器(DMA2D)
在stm32f429中有一个Chrom-Art Accelerator™ controller(DMA2D),这个控制器是一款专门用于图像处理的DMA(也可以和普通的DMA一样用于数据传输),能够用于2D图形加速(主要针对LCD屏幕)。一、DMA2D主要能够进行的图形加速加速区域填充、图像复制。用特定的颜色填充目标图像的一部分或整体,将源图像的一部分或全部复制到目标图像的一部分或全部。 通过像素格式转换,将源图像的一部分或全部复制到目标图像的一部分或全部 混合一个部分和/或两个完整的源图像与不同原创 2021-09-03 03:39:17 · 6305 阅读 · 0 评论 -
s_log_safe开源log库
s_log_safe开源log库s_log_safe库是一个采用MIT License协议开源的、小巧的、基于s_log(https://github.com/smallerxuan/s_log.git)开源库和s_ring_buffer(https://github.com/smallerxuan/s_ring_buffer.git)开源库打造的一款线程安全的嵌入式log库,纯C语言实现,移植、使用方便、快捷。在s_log原有的输出等级控制功能、log重定向功能、彩色log输出功能基础上还提供了多线程原创 2021-07-17 19:44:48 · 22148 阅读 · 0 评论 -
s_ring_buffer开源ring_buffer库
s_ring_buffer库是一个采用MIT License协议开源的、小巧的、纯C语言的、ring_buffer实现,读写锁分离设计,核心实现代码平台无关(抽出了平台相关的适配层), 可以方便的进行移植、使用。仓库地址:https://github.com/smallerxuan/s_ring_buffer.gits_ring_buffer用户接口s_ring_buffer包含如下用户接口:`1、构造器接口 s_ring_buffer_constructor()2、析构器接口 s_ri原创 2021-07-13 00:32:41 · 11498 阅读 · 0 评论 -
树莓派3B+ 搭建 esp32开发环境
树莓派3B+搭建esp32开发环境目前来说esp32的整体开发体验还是不错的,关于esp32开发环境的搭建官方也有给出指导文档(https://docs.espressif.com/projects/esp-idf/zh_CN/latest/esp32/get-started/index.html),基本上是按步就班的就能正常搭建。通常都是在linux或者windows下搭建开发环境,手上刚好有一块在用的树莓派3B+,于是就在这上面搭建了,毕竟也是属于linux环境不是。一、准备工作首先是做原创 2021-07-12 09:15:24 · 26045 阅读 · 3 评论 -
s_log开源log库
Slog库是一个采用MIT License协议开源的、小巧的嵌入式log库,纯C语言实现,可以方便的进行移植、使用。支持log输出等级控制功能、log重定向功能、彩色log输出功能,使用灵活方便、简单快捷。仓库地址:https://github.com/smallerxuan/SLog.gitSLog用户接口 SLog包含如下用户接口:s_tag()、s_log_a()、s_log_e()、s_log_w()、s_log_t()、s_log_i()、s_log_d()、s_lo...原创 2021-07-11 14:02:57 · 8674 阅读 · 0 评论 -
51单片机上移植C语言的printf()
移植了C语言的printf()函数到51单片机上,实现了在51单片机的串口类pc端的printf()输出。使用方法:在项目工程中添加xxprintf.h和xxprintf.c文件 在项目中需要使用xxprintf()函数的地方引入头文件xxprintf.h,在xxprintf.h中引入单片机相关头文件 在xxprintf.h中的MaxSize 可根据需要调整最大输出字符数量,例如修改为...原创 2018-10-24 07:21:58 · 6629 阅读 · 2 评论 -
嵌入式编程中的堆栈溢出检测
在嵌入式编程中,栈是一个很重要的概念,不管是裸机编程还是基于RTOS编程。函数形参、局部变量、函数调用现场的保护及返回地址、中断函数执行前线程保护及中断嵌套的现场的保护都依赖于栈空间。栈空间不足,程序执行过程中栈溢出,极大可能的影响程序、系统的稳定,严重时会造成程序、系统的崩溃,所以堆栈溢出检测十分重要且必要。什么是堆,什么是栈 堆和栈都是指预先分配的空间,有大小限制,两者通常是相邻的两个内存区域(RTOS中任务的堆和栈可能不相邻),供程序使用,堆和栈的最大差异是,堆空间通过xxmal...原创 2021-07-09 23:46:30 · 16777 阅读 · 2 评论