如何使用U-Boot API?

时间:2015-07-04 15:11:29

标签: c embedded embedded-linux bootloader u-boot

我正在使用atmel评估板上定制的atmel版本的U-Boot(u-boot-at91)at91sam9x5ek。我使用U-Boot来启动运行正常的Linux。我想实现一个简单的C应用程序,它从ram中读取和更改一些数据。我能够编译并运行hello_world文件夹中的examples/standalone/示例。我的问题是,我无法弄清楚如何访问glue.h文件夹中examples/api/提供的api函数。我可以包含该文件,但在编译时收到以下错误消息:

u-boot-at91/examples/standalone/hello_world.c:34: undefined reference to `ub_env_set'

我在我的主板头文件中添加了#define CONFIG_API,因此构建了api。

1 个答案:

答案 0 :(得分:0)

函数ub_env_set()在glue.c中实现,这是它的样子:

void ub_env_set(const char *name, char *value)
{
    syscall(API_ENV_SET, NULL, (uint32_t)name, (uint32_t)value);
}

一种选择是将glue.c编译并链接到您的可执行文件中。

另一种选择是将ub_env_set()的副本添加到您的代码中,并确保包括api_public.h,如下所示:

#include <api_public.h>

然后你应该能够编译。