- 博客(118)
- 资源 (26)
- 收藏
- 关注

原创 rtthread学习笔记系列
文章目录RTT 学习1. 宏2. 链接文件3. FINSH模块4. 杂项5. 预编译命令6. map文件分析7.汇编.s文件8.RTT系统初始化9. 内存管理10. 系统定时器11 数据结构12 调度13 线程14 内核对象15 ARM指针寄存器16 IDLE线程17 IPC18 信号 SIGNAL19 ringbuffer20 completion21 工作队列22 dataqueue23 环形缓冲块 ringblock24 waitqueue25 condvar26 pipe27 串口驱动28 I2C驱
2025-01-16 11:56:57
953
原创 [Linux][STM32H7]深入解析:系统时钟源为何被无故修改
本文分析了Linux环境下STM32H7系统时钟源被意外配置为PLL1的问题。经追踪发现,u-boot引导阶段通过修改RCC_CFGR寄存器强制设置了PLL1作为时钟源。文章阐述了STM32H7时钟系统特点,指出默认HSI时钟可能在引导阶段被修改。提供了两种解决方案:修改u-boot配置或Linux驱动中重设时钟源,并总结了嵌入式开发中需注意引导程序对硬件初始化的影响,建议使用工具对比各阶段配置差异。全文揭示了从复位到应用的全流程时钟配置重要性,为开发者处理类似问题提供了参考思路。
2025-05-24 22:32:06
382
原创 [Linux][ARM][decompress]decompress使用的malloc函数分析
之所以写这个文章,是因为阅读linux源码时被坑了.直接F12跳转到了其他地方.分析了半天都看不明白.晕头转向的.跳回来在分析了一遍才发现有个坑的地方.特除记录说明.所以decompress.c在boot阶段还未进入内核时,调用的malloc是简单版本,并不是linux内核中的kmalloc函数.
2025-03-24 19:52:24
265
原创 [Linux][ARM][asm bug]BUG宏的理解
这里就需要根据ARM手册与thumb的手册进行理解了。.这其实是机器码操作码.通过汇编指令转换后的机器码。,即未知的指令,进而触发bug异常。需要注意由于arm是小端架构,所以。可以得知该操作码的指令为。工具进行快速解析既可。
2025-03-15 10:59:28
360
原创 [linux][stm32]早期调试启用(DEBUG_LL)教程
# 这些选项仅适用于想要亲自动手的真正内核黑客。config DEBUG_LL bool "Kernel low-level debugging functions (read help!)" depends on DEBUG_KERNEL help在此处说 Y 以包括 printascii、 printch、 printhex 的定义 在内核中。 如果您正在调试 在控制台初始化之前执行。请注意,选择此选项会将内核限制为单个 UART 定义,如下所述。尝试引导内核 图像
2025-03-09 15:07:56
426
原创 u-boot学习笔记系列(29) --
定义了系统初始化的堆栈指针地址其配置在include/generated/autoconf.h,由include/config.h->include/linux/kconfig.h->include/generated/autoconf.hinclude/generated/autoconf.h为自动生成的文件,包含了系统的配置信息,原始配置在configs/stm32h750-art-pi_defconfig/*
2025-03-01 09:25:46
209
原创 u-boot学习笔记系列(27) -- env
在创建、覆盖或删除环境变量时调用此函数。当设置了(标志和H_FORCE)时,不要打印出任何错误消息并强制覆盖一次性写入变量。: 在新建环境变量时调用此函数。如果环境变量具有标志,则调用。变化时,通过callback函数调用;函数将标志转换为二进制值。将字符串转换为标志位。
2025-02-28 14:33:20
919
原创 u-boot学习笔记系列(26) -- DTS
一个驱动的大类的注册定义;例如serial驱动类,包括多个不同平台的串口设备驱动//debug查看用//所以相同驱动类设备的ID都一样//设备绑定后的回调(device_bind_common调用)//设备绑定前的回调(device_bind_common调用)//设备探测后的回调函数(device_probe函数中调用)//设备探测前的回调函数(device_probe函数中调用)//设备删除前的回调函数//这个类的成员用别名对自己进行排序;
2025-02-28 14:31:10
901
原创 u-boot学习笔记系列(21) -- dlmalloc
当内存池中的空闲块不足以满足请求时,dlmalloc 可以向操作系统请求更多的内存(扩展)。合并:当释放一个块时,dlmalloc 会检查相邻的块是否也是空闲的。如果是,它们会被合并成一个更大的空闲块。每个空闲块的头部包含指向前一个和后一个空闲块的指针。分割:当请求的内存大小小于某个空闲块的大小时,dlmalloc 会将这个空闲块分割成两个块,一个满足请求大小,另一个继续作为空闲块。内存池被分割成多个块,每个块可以是空闲的或已分配的。每个块都有一个头部(header),包含块的大小和状态(空闲或已分配)。
2025-02-28 14:27:35
413
原创 u-boot学习笔记系列(17) -- CMD
[TOC]# boot 命令- bootm 是一个通用的引导命令,支持多种镜像格式和加载方式.- bootz 专门用于引导压缩的 Linux zImage 内核。- booti 专门用于引导 AArch64 Linux 内核映像。## bootm 从内存中引导应用程序映像- [bootm](../boot/bootm.md)## bootz 启动 Linux zImage- [bootz](../boot/bootz.md)## booti 从内存中引导 AArch64 Linux
2025-02-28 14:20:21
165
原创 u-boot学习笔记系列(16) -- image
FIT(Flattened Image Tree)是一种用于嵌入式系统的镜像格式,主要用于 U-Boot 引导加载程序中。FIT 镜像可以包含多个不同类型的镜像文件(如内核、设备树、RAM 磁盘等),并且可以通过配置节点来定义这些镜像文件的加载和启动方式。
2025-02-28 14:19:17
597
原创 u-boot学习笔记系列(12) -- assembly
指令指定reset是一个函数类型的符号通过使用 .section 指令,开发者可以明确地指定代码和数据在内存中的布局,从而更好地控制程序的结构和行为。pushsection 指令用于定义一个新的代码段,并且可以设置段属性。它的语法如下:pushsection section_name, flags是新的代码段的名称。flags是段属性,可以是以下值之一:awx:表示代码段,可读、可写、可执行。a:表示代码段,可读。w:表示代码段,可写。x:表示代码段,可执行。.macro。
2025-02-27 10:24:34
715
原创 u-boot学习笔记系列(11) -- ARM
链接脚本定义了ENTRY(_start),即开始入口为_startcrt0 是 “C runtime zero” 的缩写,通常指的是 C 程序的启动代码。它是一个汇编语言文件,负责在操作系统加载程序后进行一些初始化工作,然后调用程序的 main 函数。crt0 是 C 运行时库的一部分,通常由编译器或链接器自动包含在最终生成的可执行文件中。重新设置堆栈指针,并调用board_init_f_init_reserve初始化保留空间ABI(应用二进制接口)是指应用程序与操作系统或其他程序之间的接口标准。
2025-02-27 10:23:39
945
原创 u-boot学习笔记系列(10) -- ARCH
ARC 是一种基于 RISC(精简指令集计算机)原理的处理器架构,广泛应用于嵌入式系统中。ARC 处理器由 Synopsys 公司开发和推广,广泛应用于嵌入式系统中,因其高性能和低功耗特性而受到欢迎。定义系统是否支持 ioremap 功能ioremap 是一种内存映射函数,常用于将物理内存地址映射到虚拟地址空间,从而允许内核访问设备的寄存器或内存区域。对于U-Boot中的大多数体系结构,虚拟地址是直接的映射到物理地址。
2025-02-27 10:22:52
804
原创 u-boot学习笔记系列(9) -- api
用于外部应用程序的 U-Boot 机器/独立于架构的 API主要假设API 只有一个入口点 (syscall)根据当前的设计,syscall 是 U-Boot 中的 C 语言可调用函数text,它可能会演变成一个真正的 syscall using machine exception 陷阱,一旦此初始版本证明有效使用者应用程序负责生成适当的上下文(调用 number 和参数)进入后,系统调用将调用分派给其他(现有的)U-Boot功能区域,如网络或存储操作。
2025-02-27 10:21:59
313
原创 u-boot学习笔记系列(8) -- u-boot config
在menuconfig中配置时填写字符串允许自定义系统栈指针地址例如stm32h7的系统栈指针地址为0x24040000最开始的代码的地址。
2025-02-27 10:19:26
727
原创 u-boot学习笔记系列(6) -- Bison_Flex
Bison 是一个广泛使用的解析器生成器工具,用于从上下文无关文法(Context-Free Grammar,CFG)生成语法解析器。它通常用于编译器和解释器的开发中,用来解析编程语言的语法。Bison 是 GNU 项目的一部分,是 Yacc(Yet Another Compiler Compiler)的一个兼容实现。为扩展名,包含语法规则和动作代码。Bison 文件通常以。
2025-02-27 10:02:01
954
原创 u-boot学习笔记系列(5) -- GNU_C
函数接受一个字符串参数,并将该字符串作为前缀输出到标准错误流(),后面跟随一个冒号和一个空格,然后是与当前。
2025-02-27 10:01:17
743
CUBE+STM32F7+FREEMODBUSV1.5 多从机
2022-01-21
LM324四重运算放大器TI数据手册中文版
2020-09-20
STM32F1必备参考书
2018-07-25
RoboMaster M3508直流无刷减速电机
2018-07-25
液晶显示板revc-20141009-sch-r
2018-07-25
e-LinkS使用方法-3.1 (1)
2018-07-25
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人