- 博客(57)
- 收藏
- 关注
原创 MCU开启浮点计算FPU
FPU 即浮点运算单元(Float Point Unit)。浮点运算,对于定点 CPU(没有 FPU 的 CPU)来说必须要按照 IEEE-754 标准的算法来完成运算,是相当耗费时间的。而对于有 FPU 的 CPU 来说,浮点运算则只是几条指令的事情,速度相当快(数十倍甚至上百倍的运算性能)。
2025-05-12 23:19:32
419
原创 USART串口通讯
DMA(直接存储区访问)为实现数据高速在外设寄存器与存储器之间或者存储器与存储器之间传输提供了高效的方法。之所以称之为高效,是因为 DMA 传输实现高速数据移动过程无需任何 CPU 操作控制,也没有中断处理方式那样保留现场和恢复现场的过程,通过硬件为 RAM 与 I/O 设备开辟一条直接传送数据的通路,能使 CPU 的效率大为提高。从硬件层次上来说,DMA 控制器是独立于 Cortex-M4 内核的,有点类似 GPIO、USART 外设一般,只是 DMA 的功能是可以快速移动内存数据。DMA 支持。
2025-04-26 15:56:24
839
原创 IO 口作为外部中断输入
抢占式优先级和响应优先级相同时,则遵循自然优先级,看中断向量表的中断排序,数值越小,优先级越高。系统调度:在实时操作系统中,通过软件中断实现任务切换(例如触发PendSV中断)抢占优先级相同,响应优先级高的中断不能打断响应优先级低的中断。抢占优先级高的中断可以打断正在执行的抢占优先级低的中断。调试与测试:模拟硬件中断事件,验证中断处理逻辑的正确性;
2025-04-16 23:34:38
1128
原创 FreeRTOS内存管理
静态方法创建任务、队列、信号量等对象的 API 函数一般是以“Static”结尾的,例如静态创建任务的 API 函数xTaskCreateStatic()。使用静态方式创建各种对象时,需要用户提供各种内存空间,例如任务的栈空间、任务控制块所用内存空间等等,并且使用静态方式占用的内存空间一般固定下来了,即使任务、队列等被删除后,这些被占用的内存空间也没有其他用途。
2025-04-02 09:18:59
830
原创 STM32编译过程
编译MDK 软件使用的编译器是 armcc 和 armasm,它们根据每个 c/c++ 和汇编源文件编译成对应的以“.o”为后缀名的对象文件 (Object Code,也称目标文件),其内容主要是从源文件编译得到的机器码,包含了代码、数据以及调试使用的信息链接链接器 armlink 把各个.o 文件及库文件链接成一个映像文件“.axf”或“.elf”格式转换。
2025-02-25 10:29:15
1947
原创 MDK 工程的文件类型介绍
uvprojx、uvoptx 及 uvguix 都是使用 XML 格式记录的文件,若使用记事本打开可以看到 XML 代码。当使用 MDK 软件打开时,它根据这些文件的 XML 记录加载工程的各种参数,使得我们每次重新打开工程时,都能恢复上一次的工作环境。
2025-02-25 09:31:52
1078
原创 STM32创建静态库lib
编译会报错,将文件 stm32f4xx_ll_fmc.c、stm32f4xx_ll_fsmc.c、stm32f4xx_ll_sdmmc.c、stm32f4xx_ll_usb.c。将创建lib库所需的下列所有头文件存放到 C:\Keil_v5\ARM\hal_inc。将创建lib库所需的下列所有头文件存放到 C:\Keil_v5\ARM\ll_inc。下存放用户开发的相应驱动文件,如LED、Beep等。下存放用户开发的相应驱动文件,如LED、Beep等。下存放用户开发的相应驱动文件,如LED、Beep等。
2025-02-17 23:05:30
903
1
原创 计算程序Flash和SRAM是使用情况
堆 + 栈 + ZI-data + RW-data(一定是解压缩后的):Code + RO-data + RW-data(可能是压缩的)可以计算出项目程序所需的。工具或编译编译后产生的。
2025-02-07 11:05:40
268
原创 STM32新建不同工程的方式
由于寄存器资源非常宝贵,一般都是一个位或者几个位控制一个功能,对于 STM32 来说,其寄存器是 32 位的,一个 32 位的寄存器,可能会有 32 个控制功能,相当于 32 个开关,由于STM32 的复杂性,它内部有几百个寄存器,所以整体来说 STM32 的寄存器还是比较复杂的。(Low Layer)目前与 HAL 库捆绑发布,它设计为比 HAL 库更接近于硬件底层的操作,代码更轻量级,代码执行效率更高的库函数组件,可以完全独立于 HAL 库来使用,但 LL库不匹配复杂的外设,如 USB 等。
2025-01-24 16:34:31
1441
1
原创 STM32 GPIO工作模式
GPIO 是通用输入输出端口的简称,简单来说就是 STM32 可控制的引脚,STM32 芯片的 GPIO 引脚与外部设备连接起来,从而实现与外部通讯、控制以及数据采集的功能。STM32 芯片的 GPIO 被分成很多组,每组最多 16 个 IO 口,组数视芯片而定。
2025-01-22 11:23:05
1264
原创 CM3/4 map文件分析
MDK 编译工程,会生成一些中间文件(如.o、.axf、.map 等),最终生成 hex 文件,以便下载到 MCU 上面执行,编译过程产生的所有文件,都存放在 OBJ 文件夹下,如下图所示:这里总共生成了 66 个文件,共 11 个类型,分别是:.axf、.crf、.d、.dep、.hex、.lnp、.lst、.o、.htm、bulild_log.htm 和.map。
2025-01-17 16:55:40
1089
原创 CM3/4启动流程
例如:我们将 0x0800 0000 映射到 0x0000 0000,即从内部 FLASH 启动,那么内核会从地址 0x0800 0000 处取出堆栈指针 MSP 的初始值,从地址 0x0800 0004 处取出程序计数器指针PC 的初始值。因此,内核离开复位状态后,读取内部 FLASH的 0x08000000 地址空间存储的内容,赋值给栈指针 MSP,作为栈顶地址,再读取内部 FLASH的 0x08000004 地址空间存储的内容,赋值给程序指针 PC,作为将要执行的第一条指令所在的地址。
2025-01-07 13:35:00
1051
原创 CM3/4启动文件分析
AREA汇编一个新的数据段[DATA],段名为RESET,只读[READONLY]。EXPORT表示声明一个标号具有全局属性,可被外部的文件使用。EXPORT表示声明一个标号具有全局属性,可被外部的文件使用。EXPORT表示声明一个标号具有全局属性DCD分配一个或者多个以字为单位的内存,以四字节对齐,并要求初始化这些内存。__Vectors为向量表起始地址。为向量表结束地址。EQU给数字常量取一个符号名__Vectors_Size [向量表大小]。汇编一个段名为RESET的数据段。
2025-01-06 16:30:34
966
原创 CM3/CM4时钟系统
数字电路的知识告诉我们:任意复杂的电路控制系统都可以经由门电路组成的组合电路实现。STM32 内部也是由多种多样的电路模块组合在一起实现的。当一个电路越复杂,在达到正确的输出结果前,它可能因为延时会有一些短暂的中间状态,而这些中间状态有时会导致输出结果会有一个短暂的错误,这叫做电路中的“毛刺现象”,如果电路需要运行得足够快,那么这些错误状态会被其它电路作为输入采样,最终形成一系列的系统错误。
2025-01-02 14:52:38
1047
原创 创建$(u-boot-dirs)目标集分析
文章目录1. tools (回显 54-136)2. arch/arm/cpu (回显 137-138)3. arch/arm/cpu/armv7 (回显 139-147)4. arch/arm/lib (回显 148-178)5. arch/arm/mach-bcm283x (回显 179-185)6. board/raspberrypi/rpi (回显 186-189)7. cmd (回显 190-235)8. common (回显 236-272)1.
2024-08-09 09:30:25
586
原创 make -f ./scripts/Makefile.build obj=dir 分析2
【代码】make -f ./scripts/Makefile.build obj=dir 分析2。
2024-08-02 09:29:41
386
原创 make V=1 输出信息
make -f ./Makefile syncconfigmake -f ./scripts/Makefile.build obj=scripts/basicrm -f .tmp_quiet_recordmcountmake -f ./scripts/Makefile.build obj=scripts/kconfig syncconfigscripts/kconfig/conf --syncconfig Kconfigmake -f ./scripts/Makefile.autoconf ||
2024-07-15 16:13:36
210
原创 make -f ./scripts/Makefile.build obj=dir 分析1
由上可知,目标只有创建命令没有依赖,接下来执行目标的创建命令即可。6. 由步骤1中的定义可知, 在。2. 由步骤1中的定义可知,在。3. 由步骤1中的定义可知,在。4. 由步骤1中的定义可知,在。5. 由步骤1中的定义可知,在。
2024-07-10 19:32:32
446
原创 ./scripts/Makefile.autoconf 分析
由于执行的命令未带目标参数,所以默认执行第一个目标(即目标。由上可知,目标有很多,第一个目标为。这些变量的定义都是在配置文件。这些变量的定义都是在配置文件。
2024-06-21 16:11:19
1024
原创 make syncconfig V=1分析
命令【即生成 scripts/basic/fixdep 工具】,将实现目标。的所有依赖都已生成,接下来执行目标的生成语句即可。的所有依赖都已生成,接下来执行目标的生成语句即可。所用的命令、源码、头文件等信息全部写入到。,所以第493行条件不成立,这里什么都不做。输入命令自动匹配 563 行,由于目标。在顶层 Makefile 中定义为。时,94行条件成立,,101行条件成立,由上面三步可知,目标。
2024-06-19 19:28:23
489
原创 make V=1 分析
文章目录make V=1make V=11 Makefile:2321: "####### _all all scripts_basic outputmakefile scripts inputs dtbs cmd common disk drivers drivers/dma drivers/gpio drivers/i2c drivers/net drivers/net/phy drivers/power drivers/power/battery drivers/power/domain dr
2024-06-18 17:21:29
537
原创 make menuconfig V=1分析
(当在命令行中输入:时,94行条件成立,,101行条件成立,,则输出整个命令。输入命令自动匹配顶层 Makefile 的第563 行并执行,由于目标%config依赖和FORCE, 则执行顺序如下:执行依赖481-483行执行依赖492-497行执行依赖FORCE,什么都不做,2318行这三个依赖的生成见《》中的步骤1和步骤2:打印和执行命令【即生成 scripts/basic/fixdep 工具】,将实现目标所用的命令、源码、头文件等信息全部写入到文件中。
2024-06-11 18:55:41
567
原创 fixdep & conf & pkg-config & mconf 工具介绍
将配置文件和Kconfig文件中的相应信息写入到。查找实现目标所用的命令、源码、头文件等全部信息。实现目标所用的命令、源码、头文件等全部信息。系统的文件,较为复杂,也比较枯燥。,完成具体的词法和语法分析任务。编译产生的依赖文件*.d。编译时,编译器会根据选项。,是整个应用的主程序;主程序的文件,通过分析。文件生成新的依赖文件。
2024-06-06 19:40:42
675
原创 make xxxx_defconfig 分析【生成fixdep、conf工具】
(当在命令行中输入:时,94行条件成立,,101行条件成立,,则输出整个命令。输入命令自动匹配顶层 Makefile 的第563 行并执行,由于目标%config依赖和FORCE, 则执行顺序如下:执行依赖481-483行执行依赖492-497行执行依赖FORCE,什么都不做,2318行。
2024-05-31 16:49:12
590
原创 ./scripts/Makefile.build 分析
($($($($($($(if$($(if$($($($($($($($($($($($(if$($($($($(" = \$(目标PHONY在第17、417、424行中定义,最终目标PHONY依赖__build和FORCE。
2024-05-30 15:40:56
1177
原创 scripts/Makefile.host 分析【fixdep、conf】
所以第75行条件成立,执行第76行,第76行中的 $(_hostc_flags) 在第70行中定义,其中的。第92行:$(HOSTCC) 在顶层 Makefile 的282行定义。,在 scripts/basic/Makefile 中定义。,又在 Makefile.build 中第57行引用。第83行:$(__hostc_flags),当输入。,其目录下存在此类文件【fixdep.c】,经过。第24行:由于顶层 Makefile 中执行。分析,第95行实际是打印并执行。函数,并将相应内容输入到。
2024-05-30 13:45:40
952
原创 ./scripts/Makefile.clean 文件分析
从上到下依次执行,伪目标PHONY在第8行和第91行可知,,目标__clean在74行定义了依赖和语句,在92行定义了依赖和语句,所以从这两个目标的依赖和语句可知,优先执行目标再执行目标__clean。
2024-05-23 22:33:42
1106
1
原创 Makefile中的函数介绍
返回与模式相匹配的所有文件名列表,如果没有任何匹配,那么返回空字符串。在Makefile中用于获取匹配指定模式的所有文件名列表。
2024-05-20 16:00:40
558
1
原创 ./scripts/Makefile.buid 的分析
用于实现对用户自己定义函数引用。在执行时,将它的参数“ PARAM”依次赋值给临时变量“ $(1)”、“ $(2)”(这些临时变量定义在“ VARIABLE”的值中)……第 8 行就是在“scripts/basic”或“scripts/kconfig ”中查找符合“tpl/%”的部分,然后将“tpl/”取消掉,但是“scripts/basic”或“scripts/kconfig ”没有“tpl/”,所以 src= “scripts/basic”或“scripts/kconfig ”即src=$(obj)。
2024-05-16 13:51:50
962
虚拟机环境和树莓派调试环境自动配置脚本
2024-01-29
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人