自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(46)
  • 资源 (1)
  • 收藏
  • 关注

原创 tftp命令的调用顺序

整个过程涉及到的关键文件和函数包括:common/cmd_net.c中的do_tftp函数,net/net.c中的NetLoop函数,以及TftpStart函数。netboot_common函数中使用了NetLoop函数,该函数是U-Boot中网络循环的主入口点,它根据传入的协议类型来决定执行哪个部分的代码。对于tftp命令,传入的协议类型是TFTP,因此NetLoop函数会执行与TFTP协议相关的代码段,这部分代码通常位于net/net.c文件中。tftp命令被用户输入到U-Boot的命令行界面。

2024-04-26 14:20:26 25

原创 __attribute__ (target (“thumb2“))

是GNU编译器(GCC)中的一个属性,用于指定函数使用Thumb-2指令集。Thumb-2是一种32位的指令集架构,它允许在一个指令中完成更多的操作,从而提高了效率。需要注意的是,这个属性只适用于支持Thumb-2指令集的处理器。如果你的处理器不支持Thumb-2,那么编译器可能会忽略这个属性,或者给出错误信息。此外,如果你想要让整个文件都使用Thumb-2指令集,你可以使用。但是,请确保你的处理器支持Thumb-2指令集,否则你可能需要寻找其他的优化方法。在使用这个属性时,你需要在函数声明之前加上。

2024-04-22 19:32:30 241

原创 svn路径复制

右键文件夹copy to...填入新路径。

2024-04-21 19:43:10 82

原创 netlink_kernel_create

如果你想在用户空间使用 Netlink,你需要包含 linux/netlink.h 头文件,并使用 socket(AF_NETLINK, SOCK_RAW, NETLINK_GENERIC) 函数来创建 Netlink 套接字。netlink_kernel_create 是 Linux 内核中的一个函数,主要用于创建 Netlink 套接字,以便于内核与用户空间的通信。如果你想增加新的 Netlink 协议类型,你需要修改 linux/netlink.h 文件,并增加相应的定义。

2024-04-16 21:26:49 238

原创 env环境变量

H_HIDE_DOT是在Uboot环境中使用的一个宏,它用于控制环境变量的显示。具体来说,当env_flag与H_HIDE_DOT进行位运算时,可以决定是否隐藏某些环境变量。例如,在do_env_print函数中,env_flag被初始化为H_HIDE_DOT,然后根据不同的参数输入,对env_flag进行相应的位运算,以达到控制环境变量显示的目的。env_print, env_set, env_get等。路径uboot/cmd/nvedit.c。宏定义在include/search.h。

2024-04-14 12:49:17 115

原创 $(obj)/%.bin: $(obj)/*

所以这个规则的含义是:对于$(obj)目录下的每个.bin文件,Makefile都会先输出一条信息,然后使用cat命令将所有的.bin文件合并成一个目标文件,并将其保存在$(obj)目录下。这个规则的意思是:对于$(obj)目录下的每个.bin文件,Makefile都会尝试生成一个对应的目标文件,该目标文件也位于$(obj)目录下,并且具有相同的文件名但没有扩展名。$(obj)/%.bin: $(obj)/*.bin 是一个Makefile规则,用于指定如何生成.bin文件。

2024-04-12 11:40:52 195

原创 u-boot的链接脚本(u-boot.lds)KEEP关键字

此外,需要注意的是,KEEP关键字只能用于保留未被引用的段,如果你已经在代码中使用了该段,那么KEEP关键字就不再必要了。SOCDIR/vectors.o(.text*) /* ./arch/arm/cpu/slsiap/s5p4418/vectors.S,异常向量表 */*(.__image_copy_start) /* u-boot将自己copy到RAM,此为需要copy的程序的start */*(.text*) /* 其他的代码段放在这里,即start.S/vector.S之后 */

2024-04-10 19:38:18 132

原创 CONFIG_CPU_V7

通过上述分析可以看出,CONFIG_CPU_V7是一个多功能的宏定义,它在ARMv7架构的Linux内核编译和运行中扮演着重要的角色。在这种情况下,CONFIG_CPU_V7相关的宏定义将确保这些自解压代码能够正确地被编译进内核中。在实际工作中,开发人员应当根据具体的硬件平台和需求,确保CONFIG_CPU_V7被正确地包含在编译指令中,并对其可能影响的代码段有所了解。在某些情况下,可能会使用CONFIG_CPU_V7相关的宏来简化或启用特定的调试功能,如通过串口或其他通信渠道进行调试信息的传输。

2024-04-07 16:32:18 298

原创 CONFIG_PERF_EVENTS

CONFIG_PERF_EVENTS 是 Linux 内核中的一个配置选项,用于启用内核性能监控功能。如果你想要在内核中启用 CONFIG_PERF_EVENTS,通常需要在内核配置菜单中找到 "Kernel Performance Events And Counters" 选项,并将对应的配置项设置为 y。需要注意的是,虽然 CONFIG_PERF_EVENTS 提供了强大的性能监控功能,但它也会带来一定的系统开销。因此,在实际应用中,你需要根据具体的性能监控需求来权衡是否启用该配置项。

2024-04-07 14:17:52 400

原创 CONFIG_KALLSYMS

CONFIG_KALLSYMS 是 Linux 内核配置选项中的一个,它的作用是在内核中存储一个名为 kallsyms 的数据结构,该数据结构包含了内核中所有函数的地址信息。CONFIG_KALLSYMS_ALL=y: 这个选项会在 kallsyms 中包含所有的变量地址,包括那些没有被 EXPORT_SYMBOL 导出的变量 #1 #3。在这个例子中,000000000000a018 是符号的地址,D 是符号的类型(在这个例子中,它是 DATA),per_cpu__xen_vcpu 是符号的名称。

2024-04-07 13:53:11 376

原创 CONFIG_CGROUPS

需要注意的是,cgroups 功能需要和其他一些相关的配置选项一起工作,比如 CONFIG_CGROUP_CPU、CONFIG_CGROUP_MEMORY 等,这些选项分别用于启用 CPU 和内存资源的 cgroup 支持。在 Linux 内核配置中,如果你想启用 cgroups 功能,你需要设置 CONFIG_CGROUPS 为 y(表示 yes)。CONFIG_CGROUPS 是一个重要的 Linux 内核配置选项,它决定了你是否可以在你的系统中使用 cgroups 功能来进行更有效的资源管理。

2024-04-07 10:43:40 290

原创 RCU机制

RCU 有多种实现方式,包括不可抢占的 RCU(CONFIG_RCU_SCHED)、可抢占的 RCU(CONFIG_PREEMPT_RCU)以及基于树型的 RCU(CONFIG_TREE_RCU)等。其中,CONFIG_PREEMPT_RCU 代表的可抢占 RCU 实现方式,允许在读取临界区的时候被其他进程抢占。总的来说,CONFIG_PREEMPT_RCU 是一个重要的 Linux 内核配置选项,它决定了内核中 RCU 实现的类型,从而影响到系统的性能和响应能力。

2024-04-07 10:33:40 333

原创 CONFIG_PREEMPT

在这种模式下,内核会尽可能地避免抢占正在执行的进程,除非有更高优先级的进程等待运行或者当前进程等待等待某个事件完成。CONFIG_PREEMPT 是 Linux 内核中的一个配置选项,它用于控制内核的抢占行为。CONFIG_PREEMPT:强制抢占。此外,还有一种叫做CONFIG_PREEMPT_RT的实时补丁,它可以提供完全可抢占的内核,这对于需要低延迟的应用程序非常重要,例如音频处理或实时控制系统。总的来说,CONFIG_PREEMPT是一个重要的内核配置选项,它决定了内核在处理进程时的行为方式。

2024-04-06 21:49:39 209

原创 CONFIG_AUDIT

在内核配置菜单中,你可以找到Security options子菜单下的Auditing support选项,将其设置为y即可启用CONFIG_AUDIT。值得注意的是,即使你启用了CONFIG_AUDIT,内核中的审计功能默认可能是关闭的。此外,CONFIG_AUDIT还与其他一些相关的配置选项有关联,比如CONFIG_AUDITSYSCALL,它决定了是否启用系统调用审计。总的来说,CONFIG_AUDIT是一个关键的内核配置选项,它允许你在构建内核时决定是否包含审计功能。

2024-04-06 21:31:25 122

原创 patsubst

这个模式可以是一个具体的文本,也可以包含通配符“%”来匹配任意长度的字符串。如果中的“%”与中的“%”匹配,那么它将被替换为中的“%”所匹配的文本 #4。总的来说,patsubst 是一个非常强大的文本处理工具,它允许用户按照特定的模式查找和替换文本,这在处理文件名和路径时非常有用。patsubst 是 Makefile 中的一种内置函数,主要用于查找并替换文本中的单词。其中,“原模式”是你想要查找的模式,“目标模式”是你想要替换成的模式,“文件列表”是需要处理的文本列表。

2024-04-02 10:13:04 387

原创 $(filter-out examples, $(u-boot-dirs))

在这个例子中,$(u-boot-dirs)代表了一个目录列表,而$(filter-out examples, $(u-boot-dirs))则是从这个列表中移除了所有包含"examples"的目录。这些子目录包括了U-Boot的各种组件和模块,例如fs(文件系统)、drivers(驱动程序)等。然后,$(filter-out examples, $(u-boot-dirs))则是对这个u-boot-dirs变量进行了过滤操作,移除了所有包含"examples"的目录。

2024-04-01 21:57:07 91

原创 __arm_smccc_smc

_arm_smccc_smc是一个用于ARM架构的汇编指令,它主要用于在不同的执行级别之间进行通信。具体来说,这个指令允许一个执行级别(例如EL1)通过发送一个请求到一个更高的执行级别(例如EL3),然后等待响应。需要注意的是,由于__arm_smccc_smc是一个底层的汇编指令,因此它的使用需要对ARM架构有深入的了解,并且需要确保你的代码符合相关的安全和兼容性要求。如果你不熟悉这些要求,那么最好避免直接使用这个指令,而是使用更高层次的编程接口来完成你的任务 #1 #2。

2024-04-01 15:18:40 330

原创 内核崩溃: panic()与hang()的作用

这个函数通常是由panic()函数调用的,当CONFIG_PANIC_HANG配置项被启用时,就会调用hang()函数 #1。这意味着一旦hang()函数被调用,系统的正常运行就会被中断,并且除非有外部的干预(例如强制关闭电源或重启计算机),否则系统将无法恢复正常的运行状态。需要注意的是,由于hang()函数会进入一个无限的循环,因此它不会返回任何值,也不会再执行其他的代码。总的来说,hang()函数是一种极端情况下的应急处理机制,它通过使系统无法继续运行来防止可能的错误行为对系统造成更大的损害。

2024-03-31 17:43:33 195

原创 ifneq

需要注意的是,ifneq 语句中的第二个参数通常是空的字符串,因为我们需要检查的是第一个参数是否不为空。所以,ifneq ($(mtd-y),) 实际上就是在检查 $(mtd-y) 这个变量是否包含了一些值。具体来说,ifneq ($(mtd-y),) 表示如果 $(mtd-y) 这个变量不为空,那么就执行接下来的命令。这段代码的意思是,如果 mtd-y 这个变量不为空,那么就执行 # 这里是一些针对 $(mtd-y) 的操作 这部分代码。# 这里是一些针对 $(mtd-y) 的操作。

2024-03-31 12:56:35 159

原创 TPL_NAND_SUPPORT

(CONFIG_TPL_NAND_SUPPORT)是一个条件表达式,它会检查TPL_NAND_SUPPORT这个配置项是否被设置为y。如果是的话,tpl_nand_support.o这个对象文件就会被编译。此外,如果你想控制TPL_NAND_SUPPORT的值,可以在你的项目的配置文件中找到这个配置项,并进行相应的设置。通常这些配置文件会有一个特定的名字,比如defconfig或者config,具体取决于你的项目。需要注意的是,@echo命令只能在规则的命令部分使用,不能直接用在其他地方。

2024-03-29 18:53:12 160

原创 链接顺序不当导致的函数未定义的错误

静态库是由多个对象文件(.o)组成的,当链接器处理静态库时,它会按顺序查找每个对象文件中的符号。如果一个函数的定义在另一个函数之前被引用,而后者的定义位于另一个库中,那么链接器可能会在处理到后者的定义之前就已经报告了前者的未定义错误。为了解决这个问题,你需要确保在链接时,定义函数的库在引用该函数的库之前被处理。这通常意味着将定义函数的库放在命令行中的前面。在某些情况下,你可能需要使用链接器的特定选项来控制链接顺序,例如在GCC中使用-Wl,-y选项来强制链接器在处理完所有其他库后再处理指定的库。

2024-03-28 22:23:28 119

原创 LDS文件中的变量定义

在嵌入式系统开发中,LDS(Linker Description Script)文件用于指导链接器如何将各个对象文件和库文件链接到最终的可执行文件中。LDS文件中可以定义多种类型的变量,这些变量通常代表内存区域的起始地址和结束地址,例如.bss段的起始和结束地址。LDS文件还可以包含其他类型的变量定义,用于控制链接过程中的各种行为,例如内存布局、对齐要求等。这些变量的定义对于确保链接过程正确无误非常关键,特别是在嵌入式系统中,由于资源有限,对内存的管理需要非常精确 #1 #2 #3 #4.

2024-03-28 11:59:14 283

原创 obj-y

obj-y在编程中通常指的是Linux内核配置中的一个选项,它用于指定哪些源文件应该被编译进内核映像文件。在Linux内核的构建系统中,obj-y变量包含了一系列的文件名,这些文件在编译过程中会被直接编译进内核,而不是作为模块编译。这意味着,如果某个文件被加入到obj-y中,那么在每次内核构建时,都会尝试编译这个文件,并且如果编译成功,它将成为内核的一部分。在实际应用中,正确地选择哪些文件应该被加入到obj-y中是非常关键的,因为这会影响到内核的大小、性能以及安全性。

2024-03-27 15:19:37 192

原创 py_compile

py_compile 模块通常在安装共享模块时使用,尤其是当模块需要预编译以提高加载速度时。py_compile 模块在 Python 3.2 版本中引入了对 PEP 3147/PEP 488 路径的支持,这意味着编译后的字节码文件将被放在特定的 __pycache__ 目录下,并且文件名会包含 Python 版本信息。在 Python 3.4 版本中,py_compile 模块开始使用 importlib 模块来执行字节码缓存文件的写入,这使得文件的创建和写入语义与 importlib 保持一致。

2024-03-26 14:20:17 289

原创 LZO压缩算法概述

由于其快速的解压性能,LZO也经常用于日志文件的压缩、数据库的压缩存储以及网络传输中的数据压缩等领域。此外,LZO还被集成到了一些商业产品和服务中,例如Azure Databricks,它提供了读取LZO压缩文件的功能,但需要在集群启动时通过init脚本安装相应的编解码器 #4。LZO的设计目标是提供快速的压缩和解压性能,尤其适用于对性能要求较高的场景,例如实时系统或嵌入式设备。压缩效率:虽然压缩速度不是最快的,但LZO提供了多种压缩级别,可以根据需要选择合适的压缩比。

2024-03-25 15:41:30 259

原创 $(call if_changed,some_target_command )

这里,$(obj)/some_target 是目标文件,$(deps) 是依赖文件列表。如果任何依赖文件比目标文件新,或者如果命令行参数发生变化,if_changed 函数将返回非零值,导致Make执行后面跟着的命令。call if_changed 是在Linux内核的Makefile系统中使用的一个函数,它的目的是检查指定的目标文件是否需要重新构建。if_changed 函数内部使用了一些其他的Makefile函数,比如 filter-out 和 wildcard,来确定哪些依赖文件是新的或者是否存在。

2024-03-21 15:32:16 243

原创 arm linker

这个链接器能够读取、合并和写入ELF格式的对象文件,这对于构建和调试ARM系统的软件至关重要。例如,在U-Boot(Universal Boot Loader)的编译过程中,arm-linux-gnueabihf-ld.bfd 被用来链接多个模块,生成最终的U-Boot镜像文件 #4。此外,arm-linux-gnueabihf-ld.bfd 还可能与其他交叉编译工具一起使用,如arm-linux-gnueabihf-gcc(GNU Compiler Collection),以生成特定架构的可执行代码。

2024-03-21 14:32:31 229 1

原创 version_autogenerated

首先,$(version_h) 是 version_autogenerated.h 文件的引用名称,它被定义为 include/generated/version_autogenerated.h。这是因为 version_autogenerated.h 文件的内容取决于 include/config/uboot.release 文件,所以每次更新 include/config/uboot.release 文件时,都需要重新生成 version_autogenerated.h 文件。

2024-03-19 21:29:41 223 1

原创 filter-out

在Makefile中也有类似的filter-out概念,它用于过滤掉符合特定模式的单词。例如,假设我们有一个objects变量,其中包含了多个文件名,我们希望从中过滤掉那些也出现在mains变量中的文件名,可以使用如下代码: objects=main1.o foo.o main2.o bar.o。$(filter-out $(mains),$(objects)) 这段代码会输出foo.o bar.o,即从objects中过滤掉了那些也在mains中出现的文件名。

2024-03-14 20:21:05 376 1

转载 如何用Linux读取emmc寿命

这个项目貌似智能在x86的电脑上才能使用,arm64可能需要交叉编译。之后目录下就有mmc命令文件,用下面的命令就可以读出寄存器信息。eMMC Firmware Version:,数字越小越好。首先可以下载mmc-utils的源码,下面是源码的地址。2023年8月4日 IP属地:广东。2023年8月4日 IP属地:广东。arm64可以使用这个命令查询。然后,安装make和gcc。

2024-03-01 11:44:43 274

原创 增加新型号dts文件[1]

如果在增加了新型号dts文件,如:同时需要在文件中增加。

2024-02-29 00:37:08 101

原创 imx6ull获取cpu时钟主频

I.MX6ULL 芯片主频

2024-02-27 01:18:27 149

转载 详解CAN总线:标准数据帧和扩展数据帧

汽车电子行业嵌入式软件开发者3 人赞同了该文章​目录收起1、标准数据帧2、扩展数据帧3、标准数据帧和扩展数据帧的特性CAN协议可以接收和发送11位标准数据帧和29位扩展数据帧,CAN标准数据帧和扩展数据帧只是帧ID长度不同,以便可以扩展更多CAN节点。

2023-12-03 16:51:26 395 1

原创 ubuntu 22.04.2-LTS 配置samba

在/etc/samba/smb.conf文件最后加上以下。由于共享文件夹挂载在此版本ubuntu不稳定。采取samba简化文件共享访问。

2023-11-23 00:17:47 138

转载 Cannot attach medium “C:/Program Files/Oracle/VirtualBox/VBoxGuestAdditions.iso“

链接:https://www.jianshu.com/p/b1dc88de7db2。商业转载请联系作者获得授权,非商业转载请注明出处。vbox下创建的ubuntu无法启动,并提示.重启VirtualBox 即可!

2023-07-06 23:45:26 166 1

原创 内核移植2021.1.22

nxp官方评估板的内核为基础在内核代码的顶层Makefile增加arch和cross compile然后make clean;make imx_xxxx_defconfig内核编译完会在arch/arm/boot目录下生成zimage镜像文件在arch/arm/boot/dts目录下生成开发板对应的.dtb文件内核启动以后是需要根文件系统的,根文件系统存放的位置是由uboot的bootargs环境变量指定的,如root=/dev/mmcblk1p2,也就是说文件系统存在root位置.如果找不到文件系统就会

2021-12-19 23:18:47 236

原创 wifi (usb and sdio)

2021.6.14WiFi驱动不需要我们自己编写,realtek官方提供.只需将源码添加到Linux内核中driver/net/wirless目录下,重新配置内核并编译成zimage,然后图形化界面配置支持WiFi设备,支持USB设备,sdio设备,编译成模块即可usb wifi直接插win10电脑上可见:Rtl8188cu wireless lan 802.11n usb2.0 network adapter8188eu.komake all -j16 编完在arch/arm/boot下找z

2021-12-19 13:16:10 1045

转载 fdisk分区emmc操作

使用fdisk分区和格式化emmc存储这里主要记录fdisk命令的常用使用方法,如何对emmc做最基本的如分区,格式化等操作。1、根据系统启动信息,查看emmc的基本信息硬件上电启动,在内核的启动信息中找到了如下信息:emmc在/dev下的设备文件为:mmcblk0, 使用ls名查看/dev目录下文件,确认mmcblk0设备文件存在;如果存在进行下一步fdisk操作。2、使用fdisk对emmc进行分区2.1、对emmc进行分区# fdisk /dev/mmcblk0Devic.

2021-09-09 00:14:27 3271

原创 imx6ull分区

/ # ls /dev/mmcblk1/dev/mmcblk1/ # random: nonblocking pool is initialized/ # fdiskBusyBox v1.29.0 (2021-01-25 22:58:31 CST) multi-call binary.Usage: fdisk [-ul] [-C CYLINDERS] [-H HEADS] [-S SECTORS] [-b SSZ] DISKChange partition table -u ...

2021-09-08 23:49:29 1579

转载 Linux 下的dd命令使用详解以及dd if=/dev/zero of=的含义

一、dd命令的解释dd:用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换。注意:指定数字的地方若以下列字符结尾,则乘以相应的数字:b=512;c=1;k=1024;w=2参数注释:1. if=文件名:输入文件名,缺省为标准输入。即指定源文件。< if=input file >2. of=文件名:输出文件名,缺省为标准输出。即指定目的文件。< of=output file >3. ibs=bytes:一次读入bytes个字节,即指定一个块大小为bytes

2021-09-08 23:35:46 12013 1

LM2596____datasheet

LM2596__pdfxfeszdhbrdxth

2011-05-20

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除