2012-11-17 30 views
0

我有一个ARM三星Chromebook运行Ubuntu(chrUbuntu 12.04)。ARM Ubuntu:如何在特权模式下运行代码?

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

进入priv模式非常简单:只需进行SVC呼叫即可。问题是,将自己的代码插入操作系统的最简单方法是什么,以便在某个特定的SVC调用中调用它?

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


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

  • 写一些低级汇编程序
  • 看到他们与各种硬件配置如何执行在Cortex-A15核心的

由于提前,

Paul

+0

最简单的方法是完全忘掉Chromebook并在模拟器中运行它。 – Flexo

+1

我正在尝试专门为Cortex-A15处理器优化代码。模拟器不会帮助,因为它将*方式*太慢,并且不能正确表示Cortex-A15行为。 – pmeyer

回答

1

访问协处理器寄存器的最简单方法是,如果它们不允许来自用户land,那么在内核启动序列中运行一些初始化代码(如board-init)或编写内核模块以执行所需操作。请参阅answer。另外如果感兴趣,请拨打question

+0

非常有帮助。我将追求内核模块方法。谢谢! – pmeyer

1

对于第二个版本的问题: 声音对我来说,你想要的PERF的工具,而不是试图去实现自己的性能测试:https://perf.wiki.kernel.org/index.php/Tutorial

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

+0

两个答案: 1)一般的perf工具可以,但在A15中获得一些原始性能指标会更好。我不需要可移植性。 2)我也希望能够操纵一些硬件参数(较慢的二级缓存,调整硬件预取等)。为此,我需要内核模式。因此,我正在追求内核模块(可能只是一个块设备驱动程序)。 我现在的问题是:我正在运行ChrUbuntu,它抓住了原始的ChromeOS内核。我没有/ lib/modules/build。仍在探索选项。 – pmeyer

+1

1)您希望自己编写这些代码而不是通过perf来访问相同的计数器会带来什么好处? 2)这种类型的修改通常在启动时更容易执行一次(最好在高速缓存/ MMU启用之前)。 查看http://www.chromium.org/chromium-os/developer-guide#TOC-Get-the-Source了解有关访问内核源的信息。 – unixsmurf

+0

将perf计数器置于用户模式下:没有优势。我可能会使用perf。对于其他(修改L2延迟,预取配置,写入流等),我的目标是测试我在不同配置下编写的代码。我正在努力为源代码的chromebook构建我自己的内核。一旦我这样做,我应该很好去。感谢指针! – pmeyer

相关问题