of_live
[TOC] of_live 将平面设备树转换为分层设备树,将原来紧凑的二进制设备树转换为分层的设备树,以结构体的形式存储,便于查找和操作 of_live_build unflatten_device_tree, 创建活动设备树 of_alias_scan, 扫描设备树中的别名 struct device_node12345678910111213141516171819202122232425262728293031323334/** * struct device_node:设备树节点 * * 此树的顶部通常是 gd->of_root,它指向根节点。 * * 根节点(和任何其他节点)的子节点列表的头部为 * 在 @child 中,@sibling 提供指向下一个子项的链接。 * * 每个子项都有一个指向其父项的指针 @parent。 * * 节点可能具有属性,在这种情况下,属性列表的头部 * @properties指向第一个的指针,其中 struct property->@next 指向 * 到下一个。 * * @name:节点名称,根节点的 “” * @typ...
test
[TOC] testtest.hUNIT_TEST12345678//在段中定义一个测试用例函数#define UNIT_TEST(_name, _flags, _suite) \ ll_entry_declare(struct unit_test, _name, ut_ ## _suite) = { \ .file = __FILE__, \ .name = #_name, \ .flags = _flags, \ .func = _name, \ } ut.c 单元测试相关函数 参考Unity测试框架,不在分析
pinctrl
[TOC] pinctrl-uclass.cpinctrl_post_bind 以递归方式将其子项绑定为 pinconfig属性的 设备pinctrl_select_state pin选择状态并配置pinctrl_select_state_simple pin选择状态并配置1234567891011121314151617181920212223242526static int pinctrl_select_state_simple(struct udevice *dev){ struct udevice *pctldev; struct pinctrl_ops *ops; int ret; /* * 对于大多数系统,只有一个 pincontroller 设备。但在 * 在多个 pincontroller 设备的情况下,探测序列 * 数字 0(由 alias 定义)以避免争用条件。 */ ret = uclass_get_device_by_seq(UCLASS_PINCTRL, 0, &pctldev); if (ret) /* if not fou...
linker_list
linker_lists.h linker_lists api手册 1234567891011121314151617181920212223242526272829303132333435363738// 声明一个链接生成的条目,以__u_boot_list_2_XXX_2_YYY命名#define ll_entry_declare(_type, _name, _list) \ _type _u_boot_list_2_##_list##_2_##_name __aligned(4) \ __attribute__((unused)) \ __section("__u_boot_list_2_"#_list"_2_"#_name)// 声明一个链接生成的列表,以__u_boot_list_2_XXX_2_YYY命名,但是是一个数组#define ll_entry_declare_list(_type, _name, _list) \ _type _u_boot_list_2_##_list##_2_##_nam...
杂项
system-constants.h 定义系统堆栈指针地址 定义了系统初始化的堆栈指针地址 其配置在include/generated/autoconf.h,由include/config.h->include/linux/kconfig.h->include/generated/autoconf.h include/generated/autoconf.h为自动生成的文件,包含了系统的配置信息,原始配置在configs/stm32h750-art-pi_defconfig 12345678/* * The most common case for our initial stack pointer address is to * say that we have defined a static intiial ram address location and * size and from that we subtract the generated global...
cmd
[TOC] boot 命令 bootm 是一个通用的引导命令,支持多种镜像格式和加载方式. bootz 专门用于引导压缩的 Linux zImage 内核。 booti 专门用于引导 AArch64 Linux 内核映像。 bootm 从内存中引导应用程序映像 bootm bootz 启动 Linux zImage bootz booti 从内存中引导 AArch64 Linux 内核映像
assembly
[TOC] 声明.globl 声明全局符号 使其在链接过程中可以被其他文件引用 .long 用于定义一个32位的整数.type 声明符号类型 .type reset, %function指令指定reset是一个函数类型的符号 段定义与操作.section 用于定义代码段 通过使用 .section 指令,开发者可以明确地指定代码和数据在内存中的布局,从而更好地控制程序的结构和行为。 pushsection 用于定义代码段并且设置段属性 pushsection 指令用于定义一个新的代码段,并且可以设置段属性。它的语法如下: 1pushsection section_name, flags section_name 是新的代码段的名称。 flags 是段属性,可以是以下值之一: awx:表示代码段,可读、可写、可执行。 a:表示代码段,可读。 w:表示代码段,可写。 x:表示代码段,可执行。 .text 指定了代码段为 .text.macro 定义宏.macro 指令用于在汇编代码中定义一个宏。宏是一段可以重复使用的代码块,可以带有参数。定义宏后,可以在代码中多...
arm
[TOC] Kconfig中断控制器GIC (Generic Interrupt Controller) 通用中断控制器 GIC 是 ARM 处理器的一种通用中断控制器,用于管理和分发中断信号。GIC 支持多种中断类型,包括外部中断、定时器中断、软件中断等。GIC 通过中断控制器和中断分配器组件实现中断的管理和分发。 GICv2 GICV2是 ARM 提供的第二版通用中断控制器,广泛应用于 ARMv7 和部分 ARMv8 架构的处理器中。 中断管理:支持多达 1020 个中断源,包括外部中断和内部中断。提供中断优先级管理和中断屏蔽功能。 分布式架构:包括一个分配器(Distributor)和多个 CPU 接口(CPU Interface),分配器负责中断的分发,CPU 接口负责中断的处理。 中断路由:支持将中断路由到特定的 CPU 或多个 CPU,提供灵活的中断处理机制。 软件生成中断:支持软件生成中断(SGI),允许处理器之间通过中断进行通信。 GICv3 GICV3 是 ARM 提供的第三版通用中断控制器,广泛应用于 ARMv8 架构的处理器中。 扩展的中断管理:支持多达...
tmc5160
grblconfig Inc\my_machine.h中取消注释进行配置开启如下配置进行学习 12345678910111213141516171819202122#define BOARD_BTT_SKR_20 // F407 based 3D Printer board#define TRINAMIC_ENABLE 5160 // Trinamic TMC5160 stepper driver support.#define N_AXIS 6#define TRINAMIC_DYNAMIC_CURRENT#define TRINAMIC_EXTENDED_SETTINGS#define TRINAMIC_POLL_STATUS// 这些选项需要自行配置,不配做使用默认值#define TMC_DRVCONF#define TMC_COOLCONF_SEMIN#define TMC_COOLCONF_SEMAX#define TMC_COOLCONF_SEDN#define TMC_COOLCONF_SEUP#define TMC_COOLCONF_SE...
other
Technical Documents and ResourcesThis directory contains a collection of technical documents, datasheets, and reference manuals, primarily focused on ARM architecture and embedded systems design. File IndexHere is a brief description of each file in this collection: 05_Thumb.pdf A reference document detailing the ARM Thumb instruction set, which is a 16/32-bit instruction set designed for code density. 2792846233RV043056B0.pdf The datasheet for an RFID module, likely the RV-43-C56B ...








