【问题标题】:ARM Ubuntu: how way to run code in privileged mode?ARM Ubuntu:如何在特权模式下运行代码?
【发布时间】:2012-11-17 22:44:45
【问题描述】:

我有一台运行 Ubuntu (chrUbuntu 12.04) 的 ARM 三星 Chromebook。

在 ARM“特权”状态下运行某些代码的最简单方法是什么?我不是在寻找 sudo,我在寻找 Supervisor、IRQ、FIQ 等的 ARM 处理器模式。在某个地方我可以探测/修改协处理器寄存器。

进入 priv 模式很容易:只需进行 SVC 调用。问题是,将我自己的一些代码插入操作系统以便在某个 SVC 调用上调用它的最简单方法是什么?

我不是 Linux 黑客。大多数情况下,我正在寻找最简单的一般方向的一般指针(重建内核?获取一些驱动程序源并挂钩修改后的驱动程序?一些简单的命令行选项来运行一些私有的东西?),然后我会从那里开始。


如果我的上述方法没有意义并且有更简单的方法,我的总体目标是:

  • 编写一些低级汇编例程
  • 查看它们在 Cortex-A15 内核的各种硬件配置下的表现

提前致谢,

保罗

【问题讨论】:

  • 最简单的方法是完全忘记 chrome book 并在模拟器中运行它。
  • 我正在尝试专门针对 Cortex-A15 处理器优化代码。模拟器将无济于事,因为它会方式太慢,并且无法正确表示 Cortex-A15 的行为。

标签: ubuntu arm elevated-privileges


【解决方案1】:

如果不允许从用户空间访问协处理器寄存器,最简单的方法是在内核启动序列中运行一些初始化代码,如 board-init 或编写内核模块来执行您想要的操作。请参阅此answer。如果有兴趣,这个question

【讨论】:

  • 非常有帮助。我将采用内核模块方法。谢谢!
【解决方案2】:

对于您问题的第二个版本: 听起来你想要性能工具,而不是尝试实现自己的性能测量:https://perf.wiki.kernel.org/index.php/Tutorial

另一种方法是实现一个可加载的内核模块。如果您创建一个模块,作为驱动程序或通过 /proc 或 /sys 访问的东西,该模块将在超级用户模式下执行。

【讨论】:

  • 两个答案:1)一般性能工具会很好,但在 A15 中获取一些原始性能计数器会更好。我不需要便携性。 2)我还希望能够操纵一些硬件参数(较慢的二级缓存,调整硬件预取等)。为此,我需要内核模式。因此,我正在研究内核模块(可能只是一个块设备驱动程序)。我现在的问题:我正在运行 ChrUbuntu,它只是获取原始的 ChromeOS 内核。我没有/lib/modules/build。仍在探索选项。
  • 1) 您期望自己编写此代码而不是通过 perf 访问相同的计数器有什么好处? 2) 这种类型的修改通常更容易在启动时进行一次(最好在启用缓存/MMU 之前)。查看chromium.org/chromium-os/developer-guide#TOC-Get-the-Source 了解有关访问内核源代码的信息。
  • 将性能计数器置于用户模式:没有优势。我可能会为此使用 perf。对于其余部分(修改 L2 延迟、预取配置、写入流等),我的目标是测试我在不同配置中编写的代码。我现在正在从源代码为 chromebook 构建自己的内核。一旦我这样做了,我应该很高兴。谢谢指点!
猜你喜欢
  • 2012-11-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-21
  • 1970-01-01
  • 2013-02-14
相关资源
最近更新 更多