STM32输出调试信息的两种方式
今天讲讲STM32输出调试信息的两种方式吧,只要是写程序那就几乎避免不了要打印调试信息,在单片机开发的时候我们打印调试信息普遍都是使用串口,但是随着软硬件的不断更新,现在我们可以使用更加方便的工具和方式来打印调试信息。 目前大家学习和使用比较广泛的单片机可能就是STM32了,那就以STM32和Keil MDK环境为例吧,理论上是只要支持使用J-Link下载程序的芯片都能够使用此方法来
纳米网嵌入式频道 — 提供嵌入式领域最新资讯、技术文章和行业动态。
今天讲讲STM32输出调试信息的两种方式吧,只要是写程序那就几乎避免不了要打印调试信息,在单片机开发的时候我们打印调试信息普遍都是使用串口,但是随着软硬件的不断更新,现在我们可以使用更加方便的工具和方式来打印调试信息。 目前大家学习和使用比较广泛的单片机可能就是STM32了,那就以STM32和Keil MDK环境为例吧,理论上是只要支持使用J-Link下载程序的芯片都能够使用此方法来
恍如眨眼间,痞子衡在飞思卡尔/恩智浦已经工作 8 年多了,前 5 年主要是在软件团队,最近 3 年在系统团队。所处团队不同,工作思维也不同,自从转到系统团队,开始跟客户打起交道,对待问题和解决问题的立场都发生了明显变化,尽量都想着从让客户舒服的角度去处理问题。 在系统团队这三年多来,基本上每年都会做一个小项目,2018 年做的是 MCUBootUtility(一站式下载工具),2019 年做了 M
1965年,你是一名操作系统工程师,计算机刚刚从单任务时代进入多任务时代——现在一台计算机可以同时运行多个程序了。 但你面临一个棘手的问题:只有一个CPU,10个程序都想运行,该让谁先执行? 这是个看似简单实则困难的问题,如果处理不好,可能会出现各种各样的古怪问题: 重要的程序等待太久 用户的交互操作(如键盘输入)响应缓慢 某些程序永远无法获得CPU时间 你需要设计一个"调度器"来分配CPU时
痞子衡维护的 NXP-MCUBootUtility 工具距离上一个大版本(v3.3.0)发布过去 4 个多月了,这一次痞子衡为大家带来了版本升级 v3.4.0,这个版本主要有几个非常重要的更新需要跟大家特别说明一下。 一、v3.4更新记录 Features: 1. 支持下载应用程序进主动启动设备 - FlexSPI NAND接口Flash 2. 支持对启动设备进行全擦操作 Impr
万众期待中,安路科技正式亮剑,其首颗国产ARM + FPGA异构SoC DR1M90的发布,可谓一石激起千层浪。它彻底打破了该领域长期由国际巨头垄断的局面,让国内嵌入式工业领域的设计师们,手中终于握有了一个实实在在的“国产”、“好用”且“划算”的新选择。 ▍主频更高,核心更强 DR1M90主频从766MHz升级至1GHz,核心从32bit双核Cortex-A9升级至64bit双核Cortex-A3
"线上服务崩了!但日志里什么都没有,程序还没进main函数就挂了!"运维工程师的声音里带着慌张。 这个数据库服务已经稳定运行了三个月,为什么发布新版本突然崩溃?更诡异的是,今天的发布只是加了一个无关紧要的日志模块。 你开始复盘代码,日志模块很简单,就是一个全局的Logger对象: // logger.cpp class Logger { public: void log(const std
本文参考文档为AMD64 Architecture Programmer’s Manual Volume 2: System Programming,版本号3.41,这不是对原英文文档的翻译,但是所有内容的排版都是根据原手册的排版来的,如有与官方文档冲突的内容,以官方文档为准。 Guest内存属性: 由于Guest没有MTRR的硬件支持,MTRR属性可以通过嵌套页表模拟,所以可以假设嵌套页
这里分享嵌入式领域有用有趣的项目/工具以及一些热点新闻,农历年分二十四节气,希望在每个交节之日准时发布一期。 本期刊是开源项目(GitHub: JayHeng/pzh-mcu-bi-weekly),欢迎提交 issue,投稿或推荐你知道的嵌入式那些事儿。 上期回顾 :《痞子衡嵌入式半月刊:第 39 期》 唠两句 这周四是秋分。明天是中秋节,痞子衡祝各位读者阖家欢乐,幸福团圆。 本期共收录 2个资
BootLoader概述 BootLoader(引导加载程序)是嵌入式系统或计算机启动时运行的一段小型程序,负责初始化硬件、下载系统固件或加载系统固件(包含用户程序)并将其控制权移交。它是系统上电后执行的第一个软件。主要包含以下两部分内容: 第一阶段(汇编层) 初始化CPU、开关中断。 设置堆栈以及中断向量表指针,为C语言环境做准备。 复制自身到内存(如RAM),加速执行。 第二阶段(C语言层)
上面我们说到了 LVGL 采用父子对象模型:所有 UI 元素都是 lv.obj 的子类,通过父子关系构建界面层级(屏幕 → 按钮 → 标签),这是新手最容易混淆的两个「父子 / 子类」概念。 首先要明确:LVGL 里的「父子对象模型」和 Python 类的「继承(子类)」是完全不同维度的设计,对应 OOP(面向对象)的两个核心关系: 所谓「生成不同控件的实例」,正是 LVGL 的 has-a 组
📢 各位工程师小伙伴看过来,重磅福利官宣啦! 昨天(3月3日),全球半导体巨头瑞萨电子(Renesas)正式入驻21ic电子技术论坛( 作为一家老牌MCU厂商,瑞萨在嵌入式领域已深耕多年,始终秉持着“易学、易用、易得”的生态理念。此次入驻21ic电子技术论坛,旨在拉近与国内开发者的距离,提供更及时、高效、贴心的本土化技术支持。 ⏩ 作为瑞萨官方认证的技术交流阵地,此次上线的新论坛为工程师们准备
出于对Linux操作系统的兴趣,以及对底层知识的强烈欲望,因此整理了这篇文章。本文也可以作为检验基础知识的指标,另外文章涵盖了一个系统的方方面面。如果没有完善的计算机系统知识,网络知识和操作系统知识,文档中的工具,是不可能完全掌握的,另外对系统性能分析和优化是一个长期的系列。 本文档主要是结合Linux 大牛,搜集Linux系统性能优化相关文章整理后的一篇综合性文章,主要是结合博文对涉及到的原理和
文章目录 写在前面 软硬件环境 库函数接口 初始实现方式 第一次优化 第二次优化 最后的修改 收发数据模型 结尾 写在前面 串口在各种项目中可谓是太常用了,它也是搞嵌入式必须弄懂的一个通信协议,最近维护了很久的一个项目,设备内另一模块程序更新后出现了不稳定的情况,现象就是某个功能有时候正常有时候不正常,经排查是通信接口上出现了丢包导致的,通信的接口正是用的串口,然后经过多次优化,解决了问题,以
大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家分享的是Cortex-M中断向量表对齐原则。 今天这篇文章的内容主要来自于五年前做 Kinetis K32W 系列双核启动时的发现,最近正好有同事碰到了 ARM Cortex-M 中断向量表对齐问题,于是痞子衡想起了这事(感慨自己记性还挺好),翻出了五年前的邮件,将当时测试结果重新整理成文。 前段时间痞子衡刚写了篇 《Cortex-M中断
文章目录 写在前面 为什么不让使用柔性数组 柔性数组 如何替代 后话 参考文档 写在前面 最近公司安排参与一个项目,设备运行环境是在低轨,对稳定性要求很高,之前没接触过相关的项目,便试图找一下有没有航天相关的嵌入式C语言编程规范,于是网上搜索了一番,发现并没有完全针对这方面的内容,但是在汽车行业有一个名叫MISRA-C的规范文档,目前航空产业也开始在使用了,我也就下载了相关的资料了解了一下,但
大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家介绍的是i.MXRT1xxx系列里暗藏的Product ID寄存器。 MCU 厂商在定义一个产品系列时,通常是会预先规划产品发展路线的(即会有一大波 MCU 型号面世,各型号间特性有差异),因此 MCU 内部一般都会有一个专门的只读寄存器用以存放 Product ID 值,应用程序可读取这个 ID 值来识别当前 MCU 型号,这样在设计软件
告别编译烧录!AI 驱动的 ScriptO Studio,重新定义嵌入式开发 你是不是也被嵌入式开发的「繁琐流程」搞到崩溃? 👉 写几行代码 → 编译半小时 → 刷固件等半天 → 测试发现 bug → 再来一遍 👉 改个传感器引脚、加个日志输出,都要重新烧录固件,设备重启到怀疑人生 👉 换台电脑 / 手机想改代码?先装环境、配驱动、找端口,一小时起步 👉 想远程调试设备?端口映射、VPN 折
   链接: 目录 1、什么是SWAP,到底是干嘛的? 为什么要进行内存回收? 会回收的两种内存 2、swappiness到底是用来调节
开发板带你入门,我们带你飞 文 | 无际(微信:2777492857) 全文约4501字,阅读大约需要 15 分钟 雷猴啊~我是无际。 我还记得当年刚踏入嵌入式开发领域的时候,对软件架构完全没有概念。写代码想到哪写到哪,最后拼凑成一个能跑的程序。 但随着项目越来越复杂,代码也越来越臃肿,维护起来简直就是一场噩梦。改动一个小功能,都要提心吊胆,生怕把其他地方搞崩了
Lua RTOS 有 3 层设计: - 在顶层有一个Lua 5.3.4解释器,它为程序员提供Lua编程语言提供的所有资源,以及用于访问硬件的特殊模块(PIO、ADC、I2C、RTC等),以及Lua RTOS提供的中间件服务(Lua Threads、LoRa WAN、MQTT等)。 - 中间层是一个由FreeRTOS驱动的实时微内核。这就是事情在预期时间内发生的责任。 - 底层是硬件抽象层,它与平