0

在执行 MLO 期间,我创建了一个变量,我希望 Android 中的用户空间应用程序可以访问其值。如何做到这一点?

一种方法是将变量的内容写入外部存储器并让它由用户空间进程读取。但是,我需要确保在引导期间没有其他进程覆盖该地址。

你知道其他方法吗,ATAGs?如果可以使用 ATAG,将如何做到这一点?有必要开发内核模块吗?

干杯

4

1 回答 1

0

从 linux 用户空间,您可以使用“fw_printenv”应用程序从 U-Boot 环境变量中获取信息。在 U-Boot 执行期间,您将“setenv variablename value”,然后 saveenv。

您的 U-Boot MLO 需要设置 CONFIG 选项才能启用 env 命令。MLO 通常希望(并且需要)小的代码占用空间,env 命令会使代码占用空间更大,这可能是一个障碍。

在 linux 端,您需要为特定目标的内存配置“fw_printenv”。这可以在运行时完成,参见 fw_env.config。您可以在 u-boot/tools/env/ 中获取目标可执行文件。这假设 android 继承了这方面的 linux 机制;我不熟悉android平台的细节。

于 2015-02-03T14:52:37.150 回答