嵌入式开发中,你需要了解的Naked函数

在嵌入式软件开发中,为了优化代码性能和节省系统资源,裸函数(也称为裸机函数)是一种非常重要的技术手段。裸函数是指在不使用任何运行库的情况下直接访问硬件和底层资源的函数,可以显著提高代码执行效率和可靠性。然而,在编写裸函数时需要特别小心,因为裸函数需要手动管理寄存器和堆栈空间,而且不能使用局部变量和调用其他函数。这些问题对于初学者来说可能非常困难,因此,为了方便开发者编写裸函数,一些编译器提供...

继续阅读 »

提高调试效率:从断点的使用开始

断点(break point)是嵌入式调试中最基础的功能,它的基本功能非常简单:在程序运行的某个地方提前设置一个停止操作,CPU运行到该位置之后就会自动暂停,这个时候我们就可以查看CPU各种寄存器的工作状态。根据断点机制不同,断点一般分为如下几种:硬件断点:这个需要CPU/MCU支持,可以直接在CPU内部寄存器写入期望断点的PC位置,硬件断点的数量一般是有限的,当调试器退出或者MCU重新上电...

继续阅读 »

N1 Openwrt 折腾记--修复EMMC启动异常问题

最近春节回家,把N多年前带回家的斐讯N1小盒子找了出来,本着废物利用的原则,决定在上面安装一个Openwrt系统,这样可以实现更好的网络访问。网络上相关的教程有很多,基本原理也都是类似的。翻腾出来之后我就开始着手安装系统,虽然步骤上还算比较简单,但是过程确是非常的曲折,中间碰到太多的问题,这是就记录一下这些问题,希望以后可以尽量避免类似的问题。系统从U盘启动不正常安装系统首先是将系统放在U盘...

继续阅读 »

Zerotier之因特网上的局域网

Zerotier的基本概念Zerotier实际上是借助因特网实现的任意联网设备在任何网络下相互互联的一个解决方案,Zerotier需要借助一个有公网IP的主机实现,基本原理是需要互联的设备分别向公网主机发送连接请求,公网主机向设备分别传送连接的必要信息,然后设备可以通过这些信息直接互联(实现洞穿),或者继续使用主机进行中转流量。Zerotier默认有一个planet服务器,可以直接注册使用,...

继续阅读 »

HardFault调试

本篇应用笔记主要描述Cortex-M系列MCU Hard Fault中断的调试方法。笔记中会分析Hard Fault中断产生的原因以及如何依据Hard Fault中断信息定位软件中的问题。Hard Fault简介Hard Fault 是Cortex-M系列MCU中最为常见的一种故障类中断,Hard Fault属于不可屏蔽中断,并且中断优先级固定为-1,在软件运行过程中如果产生了CPU无法正常...

继续阅读 »