在特定硬件上移植U-Boot时, 函数必须解析标头以获得OS入口点以跳转到它。
比如,函数得到的是os入口点到全局'C'变量uint32_t osentry
。
如何将此值设置为U-Boot shell命令'go'
?
我看到U-Boot go(shell)命令,必须设置为go $entry
在少数例子中,我看到条目是固定地址设置为shell环境值。
然而,对我来说,它是一个全局'C'变量。
如何在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版本,则必须按照您的描述进行操作。