linux-kernel相关内容
在他的 2005 年发送给 Linux 内核邮件列表的电子邮件中,Linus Torvalds 非常强调 git 中的标签应该是私有的,并且在从其他人那里获取时不会自动包含在内: 拉一个常规的头部不能和必须不更新标签.标签不是与树相关联,它们不能和必须 不如此,完全正确因为这会使它们成为全局而不是私有的,而且它会从根本上使它们不被分发 和: 认为获取别人的树是错误的,错误的,错误
..
我有一些 Python 代码想用 perf 进行调试.为此,我想使用子流程.以下命令返回进程的指令相关信息,直到通过 Ctrl^C 退出命令. perf stat -p 现在,我想在后台的 Python 代码中运行它,直到我希望能够终止它的操作并打印命令输出.表达我的意思: x = subprocess.call(["perf","stat","-p",str(GetMyProcessID
..
我是嵌入式 Linux 开发的新手.我必须将 uboot 和自定义 Linux 发行版移植到新的基于 ARM 的板上. 我们使用的uboot(2009.08)没有Arch和DTS文件夹.我想这是一个旧版本,它不使用 DTS 将硬件信息传递给内核(v 3.0).我已经阅读了很多关于 DTS 的信息,但是关于将硬件信息从 uboot 传递到我们正在使用的内核的这种(过时的?)方法,互联网上没有足
..
我想估计一个 ARM cortex A9 单核处理一个 IRQ 所需的操作码数量. 假设我使用 Linux 内核 3.4,调用 irq 并执行 irq_handler 需要多少操作码? 解决方案 你的问题是关于如何计算Linux 的中断延迟.至少您可能对中断开始之前需要多长时间感兴趣.我们将在这里忽略 irqs 的这一方面. 一种简单的方法是切换 GPIO 并使用范围来测量中断
..
我正在尝试了解向量页面如何映射到 0xffff0000.我指的是 3.14 内核. 根据 early_trap_init() 中的评论 traps.c 向量从 entry-armv.S 复制到向量页面. 似乎 early_trap_init() 是从 devicemaps_init() mmu.c. 在调用 early_trap_init() 之前,它正在使用 early_all
..
我正在经历不同模式的 ARM 处理器.我想在不同模式下检查处理器状态(例如:寄存器值). 那么有人可以帮我找出将处理器置于不同模式的示例代码吗? 例如,我找到了未定义模式的代码:asm volatile (".short 0xffff\n"); 解决方案 如果您想从用户空间测试模式,这是一个难题.如果系统中没有 FIQ 外围设备,则可能无法进入 FIQ 模式.您的系统可能根本没
..
设备树和 ATAG 有什么区别?此外,ATAG 是必须的吗?内核是否希望它们位于固定地址,还是希望它们位于 r0-r3 中? 解决方案 设备树描述了内核用于选择要加载哪些驱动程序、所有 MMIO 接口在哪里等硬件的所有信息.ATAG 只描述了诸如在哪里可以找到 initrd 和内核参数、内存等内容——关于机器的其他所有内容都被硬编码到内核中. 现在首选的方法是使用设备树而不是 ATA
..
我想在 U-Boot 和 Linux 内核中添加自定义的 atag 变量. 我怎样才能做到这一点? U-Boot 和 Linux 中是否有添加 ATAG 变量的程序? 解决方案 按照这个程序, 要实现这一目标,需要修改 2 个部分.一个是U-Boot,一个是Linux内核. 1. U-Boot 需要更改:A. 确保 CONFIG_CMDLINE_TAG/CONFIG_SETU
..
我正在尝试了解启动时为 arch/arm 保留的内核内存. setup_arch() 中有一个调用 paging_init() 用于设置页表、初始化区域内存映射等.它还在分配实际 mem_map 之前分配一个 零页. void __init paging_init(const struct machine_desc *mdesc){无效 *zero_page;---zero_page =
..
我正在研究飞思卡尔开发板 imx50evk.我已经使用 LTIB(Linux 目标映像生成器)构建了 uboot.bin 和 uImage.在 U-Boot 提示符下我输入 bootm addr 命令,然后它在显示消息“Loading Kernel..."后挂起 >MX50_RDP U-Boot >开机MMC 读取:dev #0,block #2048,count 6290 partition
..
在 linux 内核源代码中,在 tasklet_action 代码中添加了这一行: printk("tasklet_action = %p\n" , *tasklet_action);printk("tasklet_action = %p\n" , &tasklet_action);printk("tasklet_action = %p\n" , tasklet_action); 在我得到的
..
我正在学习 linux 内核内部结构,在阅读“理解 Linux 内核"时,我遇到了很多与内存相关的问题.其中之一是,如果我的系统上仅安装了 512 MB 的物理内存,Linux 内核如何处理内存映射. 据我所知,内核将 0(或 16)MB-896MB 物理 RAM 映射到 0xC0000000 线性地址并可以直接寻址.所以,在上述我只有 512 MB 的情况下: 内核如何从 512 M
..
我使用 ARMv7 作为目标机器.我已经为目标编译了 Linux 源代码 2.6.34.13. Target 使用 minicom 通过串口与主机(Linux 开发机)连接. Target 已加载新内核并在命令提示符下启用 KGDB. $ echo ttyAMA0 >/sys/模块/kgdboc/参数/kgdboc$回声g>/proc/sysrq-触发器 正在输入 KGDB...
..
arm-eabi、gnueabi 和 gnueabi-hf 交叉编译器有什么区别?我发现很难选择适合我的目标平台的可执行文件.arm 有本地编译器吗? 解决方案 我不太确定: eabi 代表将在裸机臂核心上运行的代码编译. gnueabi 代表 linux 的代码编译 对于 gnueabi/gnueabi-hf 部分,我在这里找到了答案.p> gcc-arm-linux-g
..
ARM 有一个叫做 TrustZone 的东西.根据 ARM 文档,它使进程可以在安全/非安全世界中运行. 安全/非安全世界是什么意思.是与处理器执行模式有关还是与设置内存区域的权限或其他有关. ARM 的 7 种操作模式与安全/非安全世界之间是否有任何关系. 如何在 ARM 中启用 TrustZone. 这是从哪个版本的 ARM 引入的. 是否必须使用此 TrustZone.lin
..
我对仅针对地址空间区域刷新缓存(L1、L2 和 L3)感兴趣,例如从地址 A 到地址 B 的所有缓存条目.在 Linux 中是否有这样做的机制,无论是来自用户还是内核空间? 解决方案 查看此页面以获取 linux 内核中可用的刷新方法列表:https://www.kernel.org/doc/Documentation/cachetlb.txt Linux 下的缓存和 TLB 刷新.
..
我已经阅读了 Linux 中的系统调用,并且到处都给出了有关 x86 架构的描述(0x80 中断和 SYSENTER).但我无法追踪 ARM 架构中系统调用的文件和进程.谁能帮忙. 我知道的几个相关文件是: arch/arm/kernel/calls.S arch/arm/kernel/entry-common.S(需要解释) 解决方案 在 ARM 世界中,您通过 sup
..
我正在尝试在带有 i.MX6 的自定义板上通过 U-boot 启动 Linux(CPU 内核是 ARM Cortex A9) 我们似乎已经成功移植了 Das U-Boot(2009.08).但是在最后一条 U-Boot 消息中引导 Linux 失败:“正在启动内核 ..." 这是我的相关环境: bootargs=console=ttymxc1,115200 vmalloc=400M
..
我在 Freescale i.MX6 (ARM Cortex-A9) 上使用 Linux 内核 3.0.35.在遇到内核 OOPS 后,我试图了解异常堆栈初始化.这是我目前所发现的. 在 arch/arm/kernel/setup.c 的 cpu_init() 中,我看到异常堆栈正在初始化: 结构栈{u32 中断[3];u32 abt[3];u32 和 [3];} ____cachelin
..
为什么 $(uname -a) 返回与 docker 容器内的主机相同的 Linux 内核? uname -a#=>Linux leo 3.13.0-55-generic #94-Ubuntu SMP Thu Jun 18 00:27:10 UTC 2015 x86_64 x86_64 x86_64 GNU/Linuxdocker run -ti --rm ubuntu:vivid-201506
..