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

问题描述 投票:-1回答:1

在特定硬件上移植U-Boot时, 函数必须解析标头以获得OS入口点以跳转到它。

比如,函数得到的是os入口点到全局'C'变量uint32_t osentry

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

我看到U-Boot go(shell)命令,必须设置为go $entry在少数例子中,我看到条目是固定地址设置为shell环境值。

然而,对我来说,它是一个全局'C'变量。

u-boot
1个回答
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版本,则必须按照您的描述进行操作。

© www.soinside.com 2019 - 2024. All rights reserved.