嵌入式
文章平均质量分 96
嵌入式
Projectsauron
昨夜西风凋碧树,独上高楼,望尽天涯路。
展开
-
Cortex-M 内核的 OS 特性
PendSV典型使用场合是在上下文切换时(在不同任务之间切换)。上下文切换的本质就是保存当前执行现场 A,切换到另一个任务 B 里面。切换回来时又要恢复执行现场 A(将一系列的寄存器入栈、出栈)。由于PendSV的特点就是支持缓期执行,所以 RTOS 可以利用它这个特点,进行任务调度过程的上下文切换。而为什么要使用缓期执行的特点来进行上下文切换呢?简单的说就是任何 RTOS,都需要尽量不打断外设中断。执行一个系统调用系统滴答定时器 SYSTICK 中断,触发了任务的调度。原创 2024-10-13 13:08:07 · 7891 阅读 · 15 评论 -
分散加载文件 scatter files
当链接器创建镜像文件时,它会创建一些 ARM 预定义的与域或者节相关的符号。这些符号就代表了链接器创建创建镜像的依据。链接器定义了一些 ARM 保留的符号,我们可以在需要时访问这些符号。这些符号是包含$$字符序列的符号以及所有其他包含$$字符序列的外部名称。我们可以导入这些符号地址,并将它们作为汇编语言程序的可重定位地址使用,或者将它们作为 C 或 C++ 源代码中的extern符号来引用。如果使用--strict编译器命令行选项,则编译器不接受包含的符号名称。要重新启用支持,请在编译器命令行中包含。原创 2024-10-02 14:39:55 · 13787 阅读 · 11 评论 -
ROM、RAM 和 Flash 的区别
在计算机的组成结构中,有一个很重要的部分,就是存储器。存储器是用来存储程序和数据的部件,对于计算机来说,有了存储器,才有记忆功能,才能保证正常工作。存储器的种类很多,按其用途可分为主存储器和辅助存储器,主存储器又称内存储器(简称内存),辅助存储器又称外存储器(简称外存)。外存通常是磁性介质或光盘,像硬盘,软盘,磁带,CD 等,能长期保存信息,并且不依赖于电来保存信息,但是由机械部件带动,速度与CPU相比就显得慢的多。原创 2024-10-02 10:12:17 · 10776 阅读 · 3 评论 -
hex 文件和 bin 文件剖析
二进制文件()是一种以二进制形式存储的计算机文件,其中的数据以字节为单位进行编码。二进制文件可以包含任意类型的数据,如图像、音频、视频、可执行文件等。与之相对的是文本文件,文本文件使用字符编码(如 ASCII 或 Unicode)表示数据。十六进制文件(Hex File)是一种特殊的二进制文件,其中的数据以十六进制表示。每个十六进制数对应 4 个二进制位,因此可以更直观地查看和编辑二进制数据。十六进制文件常用于存储和传输机器码(即可执行文件),特别是在处理嵌入式系统中常见的固件或软件升级时。原创 2024-09-30 11:03:05 · 15834 阅读 · 19 评论 -
STM32 芯片启动过程
下面主要讲解从上电复位到 main 函数的过程。初始化中断向量表配置系统时钟调用 C 库函数_main初始化用户堆栈,然后进入main函数至此,启动过程圆满结束!原创 2024-09-18 16:56:24 · 27910 阅读 · 25 评论 -
结构体内存对齐
int a;char b;char c;char b;int a;char c;思考一下node1和node2的大小分别为多少?我是在 Windows 下 MinGW32 的 GCC 测试的一样的成员属性,但node1只有 8K,而node2的大小却有 12K。由此可见,结构体对齐,实质上就是内存对齐。原创 2024-09-16 11:54:29 · 27136 阅读 · 21 评论 -
Linux 下 C/C++ 程序编译的过程
本文将介绍如何将 C/C++ 语言编写的程序转换成为处理器能够执行的二进制代码的过程,包括四个步骤:预处理()编译()汇编()链接(在此之前,首先来看一下 GCC 工具链。原创 2024-09-08 15:52:17 · 32105 阅读 · 37 评论 -
单片机内存区域划分
/ val1存放在.data段// 初始化的全局变量存放在.data段// 未初始化的全局变量存放在.bss段// val4存放在.rodata(只读数据段)unsigned char Demo(unsigned int num) // num 存放在栈区// var存放在栈区,"123456"存放在常量区// num1存放在栈区// num2存放在.data段// num3存放在栈区void *p;// p存放在堆区free(p);return 1;原创 2024-09-01 18:09:25 · 41565 阅读 · 29 评论
分享