kernel相关内容

QEMU 托管启用 MTE 的内核不会引发故障

我正在尝试在 QEMU 环境(运行支持 MTE 的内核)上编译和测试 ARMv8.5 MTE 扩展. 我尝试在承载启用 MTE 的内核的 QEMU 上引发错误.我有一个简单的 C 代码,我运行它应该会因为 MTE 而引发错误,但它运行得很好(附加日志和信息).我在 x86 机器上将代码交叉编译为 arm64,并带有相关的 clang MTE 相关标志. 在 5.4.0-1040-gcp ..
发布时间:2021-11-17 22:45:26 服务器开发

QEMU - “启动内核"后没有内核输出;

我尝试在 QEMU 自创机器上启动预编译内核. 串口外设已配置,我可以成功启动本机预编译的U-boot镜像. 在 U-Boot 中,所有串行 IO 都运行良好(内存寻址和 UART 地址也在机器设置中准备好).使用选项 -nographic 我可以在 UBoot 命令提示符下读写. 我可以在 Uboot 中发出 bootm 命令来将内核加载到 RAM 并启动它.我看到的最后一个字 ..
发布时间:2021-11-17 22:42:22 其他开发

ARM的交叉编译内核模块

我想在 x86 Ubuntu 13.04 上交叉编译 rtl8192cu 驱动程序,目标是 ARM Angstrom (BeagleBoard). 交叉编译先决条件: rtl8192cu 驱动程序 跨工具链(CodeSourcery/arm-angstrom-linux-gnueabi) 内核源 出于这个原因,我复制了 BeagleBoard 的内核源代码 usr/src 目 ..
发布时间:2021-11-17 22:24:26 其他开发

ARM 系统模式在嵌套中断中如何有用?

谁能解释一下,当我们嵌套中断时,系统模式究竟是如何工作的? 根据 ARM 网站 ARMv4 和更高版本的体系结构包含一个称为系统模式的特权模式,以克服这个问题.系统模式与用户模式共享相同的寄存器,可以运行需要特权访问的任务,并且异常不再覆盖链接寄存器. 那么系统模式如何使用用户模式的寄存器? 最多可以处理什么层次的嵌套中断? 解决方案 尝试在 IRQ 模式下处理嵌套 ..
发布时间:2021-11-17 22:23:15 其他开发

为 Arm/Raspberry PI 扩展 Rasbian 内核(Linux 内核 3.10.28) - 如何正确添加自己的系统调用?

我需要向 Raspbian Linux 内核添加一个自己的系统调用.现在我在搜索了大约 2 天找到解决方案后被困住了. 添加系统调用,我基本上是按照大纲(http://elinux.org/RPi_Kernel_Compilation)使用来自以下 git 存储库的内核源代码: git://github.com/raspberrypi/tools.git 我已经使用 crosst ..
发布时间:2021-11-17 22:22:32 服务器开发

用于 arm 内核 defconfig 的 buildroot

我正在尝试使用内核映像构建 buildroot,在执行 make menuconfig 和 make 后,我得到: 未指定内核 defconfig 名称,请检查您的 BR2_LINUX_KERNEL_DEFCONFIG 设置 我可以为 defconfig 设置一个字符串,但我不知道该放什么. 我的目标系统是 AT91SAM9RL 板. 编辑:我发现有些设备有一些预制的配置文件,实际 ..
发布时间:2021-11-17 22:18:20 其他开发

在 Linux ARM 上运行适用于 Android 的 ARM 二进制文件

是否可以在其他配备 Linux 的 ARM 设备(例如 Raspberry Pi)上运行为 Android 构建的 ARM 二进制文件(而不是 .apk)?我正在尝试将我的一个项目移植到 ARM 上,但我需要使用仅适用于 x86(Windows 和 Linux)和(最近的)Android 设备的闭源二进制文件 (SopCast). 运行 file sopclient 显示 ELF 32 位 ..
发布时间:2021-11-17 22:10:10 移动开发

设备树和代码大小

根据我对设备树的理解,主要用途之一是从驱动程序中删除特定于平台的代码以支持多个平台.设备树如何处理单个外围设备的多个配置? 例如,如果我想在平台 A 中使用 LCD 面板 A,在平台 B 中使用 LCD 面板 B,我是否需要在最终的二进制文件中同时保留 LCD 面板 A 和面板 B 的相关代码?如果是这种情况,并且有多个外围设备有多个选项,那么二进制文件中似乎会有大量额外代码. 解决方 ..
发布时间:2021-11-17 22:09:30 其他开发

内核如何知道当前线程是什么?

有人可以在这里向我解释这段代码吗 取自 linux 内核? /** 如何从C中获取线程信息结构体*/静态内联结构 thread_info *current_thread_info(void) __attribute_const__;静态内联结构 thread_info *current_thread_info(void){注册 unsigned long sp asm ("sp");return ..
发布时间:2021-11-17 22:07:06 其他开发

抢占和上下文切换的区别

一点介绍, 我目前正在编写一个小的(读取微小的)RTOS 内核,它应该是内核中的大部分内容的整体.但是,我找不到关于下面列出的一些事情的太多信息,这会很有帮助,除此之外,它实际上不是某种大学项目,而是我自愿做的事情. 回答所有问题的一个更好的选择是,如果你能向我推荐一个免费提供的 RTOS(甚至是一本免费的书),最好是用于 arm 的,它实现了用户空间并且是可抢占的(但并不复杂)像Li ..
发布时间:2021-11-17 22:05:31 其他开发

如何解读 ARM 的 SMC 调用?

我一直在阅读 Android 的内核,以了解 CPU 内核(也称为 DVFS、DCVS)的动态电源管理是如何完成的.我在这里找到的代码 调用以下函数(定义 here) 依次调用 SMC 汇编指令. ARM 有一份文档解释了 SMC 调用约定,但我一直无法使用它来理解以下功能.如何根据输入操作数进一步追踪 SMC 指令以查看它实际执行的操作? s32 scm_call_atomic4_3(u ..
发布时间:2021-11-17 22:00:38 其他开发

ARM Linux 内核驱动程序中的关键时序

我在 MX28 (ARMv5) 上运行 linux,并使用 GPIO 线与设备通信.不幸的是,该设备有一些特殊的时序要求.GPIO 线上的低电平不能持续超过 7us,高电平没有特殊的时序要求.该代码作为内核设备驱动程序实现,并通过直接寄存器写入来切换 GPIO,而不是通过内核 GPIO api.为了测试,我只是生成 3 个脉冲.该过程如下,全部在一个函数中,因此它应该适合指令缓存: 设置gp ..
发布时间:2021-11-17 21:51:50 服务器开发

创建新任务时,linux内核如何唤醒空闲处理器?

我是 Linux 内核的新手.目前,我查看了空闲代码并有一个问题.当处理器在它们自己的运行队列中没有任何任务时,它可能进入空闲模式,特定的 WFI(等待中断).(我提到的都是关于 ARM 架构而不是 X86.所以 X86 有问题.)停留在 WFI 状态后,可能其他处理器(非空闲)想要传播他们的任务是空闲处理器(通过负载平衡).当时一个繁忙的处理器使任务迁移.在我看来,当任务迁移时,空闲处理器应该立 ..
发布时间:2021-11-17 21:47:31 其他开发

谁在刷新 Linux 中的硬件看门狗?

我有一个运行 2.6 内核的处理器 AT91SAM9G20.看门狗在引导级别启用并配置为 16 秒.看门狗模式寄存器只能配置一次.当代码在引导程序、引导加载程序或内核中挂起时,电路板会重新启动.但是一旦内核启动,即使在任何应用程序中没有刷新看门狗,16 秒后板也不会被重置,而是 15 分钟. 谁在刷新看门狗? 在我们的例子中,看门狗应该受到应用程序的影响,以便在我们的应用程序挂起时电路 ..
发布时间:2021-11-17 21:46:05 服务器开发

linux内核如何管理小于1GB的物理内存?

我正在学习 linux 内核内部结构,在阅读“了解 Linux 内核"时,很多与内存相关的问题让我印象深刻.其中之一是,如果我的系统上仅安装了 512 MB 的物理内存,则 Linux 内核如何处理内存映射. 据我所知,内核将 0(或 16)MB-896MB 物理 RAM 映射到 0xC0000000 线性地址,并且可以直接对其进行寻址.因此,在上述情况下,我只有 512 MB: 内核 ..

ARM 中的原子操作

我一直在为 ARM 开发嵌入式操作系统,但是即使在参考了 ARMARM 和 linux 源代码之后,我也有一些关于架构的事情我不明白. 原子操作. ARM ARM 说 Load 和 Store 指令是原子的,它的执行保证在中断处理程序执行之前完成.验证通过查看 arch/arm/include/asm/atomic.h :#define atomic_read(v) (*(volat ..
发布时间:2021-11-17 21:42:26 其他开发

使用 kretprobes 后处理程序获取系统调用参数

我想在这些系统调用返回后立即使用 LKM 跟踪 sys_connect 和 sys_accept.我发现当被探测的系统调用返回时,kprobes 可以让你访问寄存器,通过定义一个后处理程序. 我的问题是我不知道如何从我在后处理程序(即结构 pt_regs)中的数据中获取系统调用参数后处理程序定义如下: void post_handler(struct kprobe *p, struct p ..
发布时间:2021-11-17 02:43:07 其他开发

抢占和上下文切换的区别

一点介绍, 我目前正在编写一个小的(读取微小的)RTOS 内核,它应该是内核中的大部分内容的整体.但是,我找不到关于下面列出的一些事情的太多信息,这会很有帮助,除此之外,它实际上不是某种大学项目,而是我自愿做的事情. 回答所有问题的一个更好的选择是,如果你能向我推荐一个免费提供的 RTOS(甚至是一本免费的书),最好是用于 arm 的,它实现了用户空间并且是可抢占的(但并不复杂)像Li ..
发布时间:2021-11-17 02:19:43 其他开发