fdt
fdtdec 扁平设备树解析 devicetree devicetree-specification devicetree-specification.pdf 设备树BLLOB结构 123456789101112131415161718struct fdt_header { fdt32_t magic; /* magic word FDT_MAGIC */ fdt32_t totalsize; /* total size of DT block */ fdt32_t off_dt_struct; /* offset to structure */ fdt32_t off_dt_strings; /* offset to strings */ fdt32_t off_mem_rsvmap; /* offset to memory reserve map */ fdt32_t version; /* format version */ fdt32_t last_comp_version; /* last compatible version *...
lib
initcall.cinitcall_run_list 初始化调用列表1234567891011121314151617181920212223242526272829303132333435363738394041int initcall_run_list(const init_fnc_t init_sequence[]){ ulong reloc_ofs; const init_fnc_t *ptr; enum event_t type; init_fnc_t func; int ret = 0; for (ptr = init_sequence; func = *ptr, func; ptr++) { reloc_ofs = calc_reloc_ofs(); //计算偏移 type = initcall_is_event(func); //判断是否是事件 //执行函数 是事件执行事件通知函数,否则执行函数 ret = type ? event_notify_null(type) : func(); if (ret) break; ...
hash
[TOC] hash 哈希 散列 给定一个键,哈希表在常数时间内返回相应的值,无论哈希表中有多少个键 为了确定在多大数量以上哈希查找比线性查找和二分查找更快,我们需要考虑它们的时间复杂度和实际性能。 时间复杂度对比 哈希查找:O(1) 线性查找:O(n) 二分查找:O(log n) 实际性能分析 哈希查找:在理想情况下,哈希查找的时间复杂度是常数时间 O(1),即无论哈希表中有多少个键,查找时间都是固定的。然而,哈希查找的性能也依赖于哈希函数的质量和哈希冲突的处理方式。 线性查找:随着数据量的增加,查找时间线性增加。当数据量较小时,线性查找的性能可能还可以接受,但随着数据量的增加,性能会显著下降。 二分查找:需要数据是有序的,查找时间随着数据量的增加而对数增加。对于较大的数据量,二分查找的性能优于线性查找,但不如哈希查找。 数量级对比 特性 哈希表 线性查找 二分查找 插入时间 O(1) 平均 O(n) O(n) 删除时间 O(1) 平均 O(n) O(n) 修改时间 O(1) 平均 O(n) O(log n) 查找 + O(n) 修改 查找时间 O(...
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 架构的处理器中。 扩展的中断管理:支持多达...
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...
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 指令用于在汇编代码中定义一个宏。宏是一段可以重复使用的代码块,可以带有参数。定义宏后,可以在代码中多...
regulator
[TOC] regulator-uclass.c类信息12345678UCLASS_DRIVER(regulator) = { .id = UCLASS_REGULATOR, .name = "regulator", .post_bind = regulator_post_bind, .pre_probe = regulator_pre_probe, .post_probe = regulator_post_probe, .per_device_plat_auto = sizeof(struct dm_regulator_uclass_plat),}; regulator_post_bind 读取设备属性用于设置设备属性,并检查设备是否是DM设备中唯一的12345678910111213141516171819202122232425262728293031323334static int regulator_post_bind(struct udevice *dev){ struct dm_regulator_uclass...
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 ...
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...






