如何在C中将全局变量值设置为Shell环境变量?

时间:2019-03-28 01:44:06

标签: u-boot

在特定硬件上移植U-Boot时,
函数必须解析标头才能使OS入口点跳入其中。

说,函数get是全局“ C”变量uint32_t osentry的os入口点。

如何将此值设置为U-Boot shell命令'go'

我看到U-Boot go(shell)命令,必须设置为go $entry 在几个示例中,我看到该条目是固定地址设置为外壳环境值。

对我而言,它在全局'C'变量中。

1 个答案:

答案 0 :(得分:0)

  

如何在C中将全局变量值设置为shell环境变量?

使用 env_set_addr()函数设置环境变量以用作普通程序变量中的地址。
来自 include / common.h

/**
 * env_set_addr - Set an environment variable to an address in hex
 *
 * @varname:    Environment variable to set
 * @addr:   Value to set it to
 * @return 0 if ok, 1 on error
 */

附录

  

由于某种原因,我在我使用的代码库中找不到此函数。

您忽略了所使用的U-Boot版本。
env_set()及其朋友显然是在2017.09版中引入的,以取代 setenv()及其朋友。

  

在用sprintf格式化后,我使用了类似的setenv()。

从2011.12版本开始,简单的 setenv()已使用 setenv_addr()和/或 setenv_hex()进行了增强,它将转换无符号的长整数,为您的十六进制数字字符串。
如果您仍在使用早于2011.12的U-Boot版本,则必须按照您的描述进行操作。