自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 嵌入式科普(36)【程序员必看】GCC编译优化:你的代码为何“神秘消失”?

GCC优化会加速代码运行效率GCC最新版本对代码的规范化更严格合理的设置优化等级、单独优化、防止优化等功能分享你遇到的非期望优化例子。

2025-03-06 20:44:22 464

原创 十七、从0开始卷出一个新项目之瑞萨RZN2L定时器(GPT)+DMA生成PWM的运动控制

rzn2l具备实现运动控制的重要资源,可实现1Mhz的效果例程仅提供GPT+DMA的使用。

2025-03-06 20:43:31 470

原创 嵌入式科普(35)当AI遇上Markdown:一场“全民工程师”的排版革命

Markdown的普及,正是技术民主化的又一缩影。就像新能源汽车的OTA(远程升级)功能核心设计理念是:“专注内容,而非格式”AI时代,更是一场“全民工程师”的时代,让我们先来学好Markdown。

2025-03-04 19:30:57 882

原创 嵌入式科普(34)通过对比看透DMA的本质

DMA的本质是硬件级并行化,释放CPU、减少中断,数据批处理。理解DMA的本质便于理解/学习更复杂的DMA功能。后续会有通过DMA输出PWM、DMA连续传输ADC等例子分享。

2025-03-04 19:29:20 361

原创 嵌入式科普(33)深度解析C语言中的const和volatile关键字

定义"只读变量",被修饰的变量不可被程序修改:提醒编译器该变量可能被意外修改,禁止编译器优化注意强制类型转换嵌入式科普(32)指向寄存器的指针变量2---可变指针 volatile int* volatile p;货真价实。

2025-02-24 22:10:49 553

原创 嵌入式科普(32)指向寄存器的指针变量2---可变指针

首先volatile修饰是为了告诉编译器访问寄存器指针需注意易变属性通过offset方式访问寄存器更要注意易变属性p指向的数据是易变的变量p是易变的都是易变的编译器版本优化有差异货真价实下一节总结volatile和const。

2025-02-24 22:09:46 300

原创 十六、从0开始卷出一个新项目之瑞萨RZN2L再谈固件升级

回头再看芯片启动过程、升级固件引导过程还是细节很多,未理解本质一定会碰到问题loader+app属于熟知的“IAP升级”有灵活性;UART/USB启动、EtherCAT FOE只需要很少的研发投入固件加密的思考。

2025-02-22 13:18:17 696

原创 嵌入式科普(31)一文了解嵌入式涉及的各类型编码

还有Wi-Fi、Zigbee、BLE(蓝牙低功耗)、433/315MHz、4G 和 5G 等无线通信的编码方式和调制方式在半导体或编程世界中只有0和1,0代表关/低,1代表开/高。但各类型编码复杂的很。

2025-02-22 13:16:26 682

原创 嵌入式AI(3)清华大学DeepSeek 02:DeepSeek如何赋能职场应用

https://mp.weixin.qq.com/s/Sq7MR6dk1e3sYBBicVn46Q

2025-02-18 19:12:11 131

原创 嵌入式AI(4)清华大学DeepSeek 03:普通人如何抓住DeepSeek红利

嵌入式AI(4)清华大学DeepSeek 03:普通人如何抓住DeepSeek红利

2025-02-18 19:11:15 437

原创 嵌入式AI(2)清华大学DeepSeek 01:从入门到精通

嵌入式AI(2)清华大学DeepSeek 01:从入门到精通

2025-02-17 21:22:49 324

原创 嵌入式AI(1)如何获取清华大学DeepSeek系列pdf资料

免费分享清华大学DeepSeek系列pdf,在线、下载可以询问deepseek如何获取清华大学DeepSeek系列通过Markdown图片批量导入的例子,可发现AI的高效率。

2025-02-17 21:20:13 286

原创 二、从0开始卷出一个新项目之瑞萨RZT2M双核架构通信和工程构建

RZT2M同构双核,分主副core两个工程关联在一起(fsp2.2.0)先启动cpu0,后启动cpu1(fsp2.2.0)

2025-02-17 21:18:44 397

原创 嵌入式科普(30)一文看懂嵌入式MCU/MPU多核架构与通信

同构Cortex-A多核由Linux负责内核通信,IPC进程通信,高性能同构Cortex-M/R多核有多种通信机制,如FreeRTOS SMP、MU、IPC、信号量、Mailbox、共享内存、CPU中断等异构多核通常用AMP等机制。

2025-01-16 22:44:48 853

原创 一、从0开始卷出一个新项目之瑞萨RZT2M对比介绍

核心:CR52双核800MhzRZT2M、RZN2L 225引脚pin2pin应用:3 端口的千兆以太网交换机,可为 TSN 标准及 EtherCAT、PROFINET RT/IRT 和 EtherNet/IP 等工业以太网协议 的 高性能伺服电机。

2025-01-16 22:43:17 371

原创 十五、从0开始卷出一个新项目之瑞萨RZN2L之PHID例程

HID不止是键盘鼠标单向通信,也可以用于双向通信。

2025-01-15 20:44:06 158

原创 嵌入式科普(29)c代码究竟是如何一步步运行的之C语言运行的本质

C语言运行的本质是栈式函数调用和编译型语言C函数调用栈的分析是重要技能理解C语言的编译链接原理。

2025-01-15 20:42:22 887

原创 嵌入式科普(24)一张图真正看懂USB通信协议

USB(Universal Serial Bus)“通用”到日常生活,又复杂到工程师也不一定说的清楚本文以科普的角度,用一张图并且带一定深度的把USB通信协议说尽。从宏观上或者逻辑上能理解USB理解USB相关概念USB 规范:定义了 USB 技术的标准。USB 接口:设备与主机通信的逻辑通道。USB 端点:设备上的数据缓冲区。USB 管道:主机和设备之间的逻辑通道。USB 数据传输类型:控制传输、中断传输、批量传输、同步传输。USB 设备类:定义了设备的功能和通信协议。

2025-01-14 21:20:55 2048

原创 十六、e2studio VS STM32CubeIDE之“静态栈“分析窗口

在十二、e2studio VS STM32CubeIDE之栈回溯cmbacktrace分享过“动态栈”分析本文分享现代IDE的“静态栈”分析窗口功能backtrace属于“动态栈”分析;现代IDE自带来“动态栈”分析“动态栈”分析来源.elf文件;-fstack-usage开启其他的C/C++ 静态分析工具描述:Clang 编译器自带的静态分析工具,能够检测内存泄漏、空指针解引用等问题。使用方式:可以通过命令行或集成到 IDE 中使用。

2025-01-14 21:19:19 880

原创 十五、e2studio VS STM32CubeIDE之hardfault分析窗口

之前分享来十二、e2studio VS STM32CubeIDE之栈回溯cmbacktrace可以离线追溯hardfault函数调用栈现代IDE(e2studio、STM32CubeIDE)也提供了hardfault分析窗口功能在线调试情况下,现代IDE的hardfault分析窗口可以非常便捷的分析定位。

2025-01-06 20:30:59 336

原创 嵌入式科普(26)为什么heap通常8字节对齐

结论:在嵌入式c语言中,heap通常8字节对齐本文主要分析这个问题的分析过程不论是在STM32的32位微控制器上还是在64位的Ubuntu系统中,heap 8字节对齐都因其带来的性能优化、硬件兼容性和代码可移植性而成为一种广泛接受的标准。这种做法帮助开发者构建既高效又可靠的应用程序,符合现代计算环境的需求。

2025-01-06 20:29:41 566

原创 十四、e2studio VS STM32CubeIDE之一张表看懂FreeRTOS三种调度

stm32cubeide默认使用时间片,e2studio默认不使用时间片。用一张表看懂FreeRTOS三种调度请回忆一下,什么样的例程才能展示任务调度的区别呢?任务内需要执行时间较长,阻塞时间极端。也就是cpu高负载用例程代码测试对比验证效果FreeRTOS时间片调度更常用,但对开发者要求稍高nucleo_u575工程似乎有bug,失能时间片宏无效,只能用时间片调度。

2024-12-28 11:46:41 513

原创 嵌入式科普(26)“相面”各大厂MCU和MPU

返回看目录。

2024-12-28 11:45:01 1194

原创 嵌入式科普(25)Home Assistant米家集成意味着IOT的核心是智能设备

小米Home Assistant 米家集成开源一周star近15k,迭代4个版本,12个贡献者本文科普一下Home Assistant(简称HA)、米家集成,以及带来的好处米家集成云端控制全球支持本地化控制的小米中枢网关(含内置中枢网关)的固件尚未发布保管好自己 Home Assistant 配置文件,小米用户信息泄露风险许可证是小米协议原来米家设备接入HA是极客行为,但有数量、类型、延迟等各种限制现在米家集成是小米开发接口,提供了无限的可能性,最典型的就是支持HA的设备都可以用小爱来控制。

2024-12-26 23:43:18 1124

原创 十三、e2studio VS STM32CubeIDE之“单独下载“程序

开发中需要频繁的下载程序,"在线调试"比"单独下载"时间长很多,单独下载可以提高工作效率keil、iar、stm32cubeide、rt-thread studio都自带"在线调试"和"单独下载"两个按钮如何让e2studio增加单独下载按钮--->外部工具调用jlink通过e2studio(eclipse)外部工具调用jlink.exe,通过jlink指令下载e2studio默认未显示相关工具,需显示工具栏和设置快捷键。

2024-12-26 23:41:13 492

原创 十二、e2studio VS STM32CubeIDE之栈回溯cmbacktrace

我们分享过十四、从0开始卷出一个新项目之瑞萨RZN2L之栈回溯我们继续分享通用mcu cm33内核stm32u575和瑞萨ra6m4的栈回溯cmbacktrace的例程源码为了快速定位hardfault,进一步介绍栈回溯的知识cmbacktrace移植比较简单,主要修改stack、text地址栈回溯是有一些限制的栈回溯功能加入到产品中也是非常有意义的栈回溯其实就是入栈的反向,了解栈回溯可以深入了解到c代码是如何运行的。

2024-12-25 20:02:30 686

原创 嵌入式科普(24)从SPI和CAN通信重新理解“全双工”

前段时间因为没有真正理解“全双工”的概念,导致spi的驱动写了好几天大家知道spi是全双工;can是全双工/半双工争议非常多究竟什么是“全双工/半双工”?有没有标准?真正理解这个概念的好处:正确的编写驱动函数;深刻理解才能思路清晰全双工指物理介质能够在没有干扰的情况下支持同步传输和接收。CAN的本质是半双工,因为差分信号只能单向通信;所谓CAN在协议层是全双工,实际是FIFO、仲裁机制等实现SPI有收发两根。

2024-12-24 21:30:42 970

原创 十四、从0开始卷出一个新项目之瑞萨RZN2L之栈回溯(Default_Handler/hartfault)

软件开发中常见的比较棘手的问题就是hartfault/Default_Handler/dump,俗称跑飞了。参考cmbacktrace,在瑞萨RZN2L/T2M实现栈回溯,串口打印栈回溯信息。使用add2line或Python打印发生错误函数位置。循环打印栈回溯信息和编译日期,便于追溯bug。

2024-12-24 21:29:20 730

原创 嵌入式科普(23)指向寄存器的指针变量

定义指向寄存器的指针变量要额外注意编译器警告类型不匹配的不能简单忽略强制类型转换不能随意用位掩码,如 (*reg & (1

2024-12-23 19:06:27 293

原创 十三、从0开始卷出一个新项目之瑞萨RZN2L串口DMA接收不定长

关键原理:串口空闲中断,stm32利用空闲中断来处理串口dma接收不定长度,可用hal库api瑞萨RA使用gpt定时器和elc来硬件检测串口空闲。但是:1、fsp没有sci+dma的api,需要自己封装;2:dma接收不定长的实现瑞萨RZN2l可以按照RA的思路来实现,但是rzn2l的elc源不支持串口接收满,如何实现?

2024-12-23 19:02:52 1012

原创 十二、从0开始卷出一个新项目之瑞萨RA6M5串口DMA接收不定长

十一、从0开始卷出一个新项目之瑞萨RA6M5串口DTC接收不定长关键原理:串口空闲中断,stm32利用空闲中断来处理串口dma接收不定长度,可用hal库api瑞萨RA使用gpt定时器和elc来硬件检测串口空闲。但是:1、fsp没有sci+dma的api,需要自己封装;

2024-12-22 11:08:09 366

原创 十一、从0开始卷出一个新项目之瑞萨RA6M5串口DTC接收不定长

一、概述关键原理:串口空闲中断,stm32利用空闲中断来处理串口dma接收不定长度,可用hal库api瑞萨RA使用gpt定时器和elc来硬件检测串口空闲。但是:1、fsp没有sci+dma的api,需要自己封装;2:dma接收不定长的实现参考野火:但是野火不建议dtc接收(不确定接收长度,无法完成中断),这是错误的理解,dma接收不是一样不确定长度么?

2024-12-22 11:06:57 1051

原创 十二、从0开始卷出一个新项目之瑞萨RZN2L 基于IAR coremark fsp200工程构建和iar icf链接文件修改方法

目录一、概述二、rzn2l_fsp2.0.0_coremark工程构建2.1 目录结构2.2 项目一览2.3 iar工程打开报错如何处理三、代码优化的问题3.1 system.c中复制内存3.2 iar代码优化等级与volatile关键字3.3 iar配置优化单个文件与预编译宏的范围四、iar .icf链接文件修改方法4.1 .icf文件的构成4.1.1 包含另一个icf文件4.1.2 符号/变量symbol4.1.3 region 定义内存区域4.1.4 定义段到内存的映射4.1.5 initialize

2024-12-21 11:17:41 1123

原创 十一、从0开始卷出一个新项目之瑞萨RZN2Lrzn2l_coremark_fsp200工程构建和gcc .ld链接文件的修改方法

在四、从0开始卷出一个新项目瑞萨RZN2L之RZT2L BaseProject coremark的移植介绍过rzn2l coremark工程是基于rzn-fsp v1.2.0在上一节十、从0开始卷出一个新项目之瑞萨RZN2L rzn-fsp v2.0.0 Release Notes介绍了rzn-fsp v2.0.0 release note介绍rzn2l_fsp2.0.0_coremark工程构建过程碰到的一些问题嵌入式科普(22)c代码究竟是如何一步步运行的之链接例如:MEMORY....

2024-12-21 11:15:58 1353

原创 十、从0开始卷出一个新项目之瑞萨RZN2L rzn-fsp v2.0.0 Release Notes

目录一、概述二、Github地址三、 Features Added3.1 Developer Assistance feature support added.3.2 Multiplex interrupts support added.四、Bug Fixes and Improvements4.1 Added a noncache section for user applications.4.2 Unified case of asm instructions in startup code.4.3 C

2024-12-20 20:04:25 890

原创 十一、e2studio VS STM32CubeIDE之宏函数展开

复杂宏函数如何快速展开。

2024-12-20 20:03:12 468

原创 嵌入式科普(22)c代码究竟是如何一步步运行的之链接

C代码的链接过程是一个将源代码转换为可执行文件的复杂过程主要工作由编译工具gcc完成,只谈3个重要概念静态库、动态库、链接文件.ld重点谈谈链接脚本在linux(mpu:coretex A7)交叉编译、mcu(coretex M4)IDE编译不太需要关注链接脚本在介于mpu和mcu之间的芯片(coretex M7/M85/R4/R52),经常需要重点关注链接脚本。因为既要性能、又要实时性、还要低成本,所以往往有多块存储空间链接脚本最核心的就是section、object等概念,代码和详细化分。

2024-12-18 18:31:40 1010

原创 嵌入式科普(21)c代码究竟是如何一步步运行的之编译

编译->链接->执行我们从最简单步骤扩展到每个细节,分别介绍其中的最关键的步骤这里面包含的知识点太多,范围也不同。我们通过类比,介绍其中的关键点,以便我们日后再深入各个细节,从而解决实际问题mpu编译和链接由gcc完成(Makefile、sh、/lib)mcu编译和链接由IDE完成处于mcu与mpu中间的如RZT2/N2、STM32H7、iMXRT116需要重点关注链接过程。

2024-12-18 18:30:33 642

原创 嵌入式科普(20)2024瑞萨技术交流日

强烈建议点击b站小程序,听背景音乐,感受九子夺嫡结算MVP,四爷王上加白。嵌入式科普(20)2024瑞萨技术交流日。

2024-06-04 22:34:22 344

原创 九、从0开始卷出一个新项目之瑞萨RZN2L生产烧录固件(jflash擦写读外挂flash)

九、从0开始卷出一个新项目之瑞萨RZN2L 七、生产烧录固件(jflash擦写读外挂flash)

2024-06-04 22:31:07 578 3

空空如也

空空如也

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

TA关注的人

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