2015-07-04 29 views
0

我正在at91sam9x5ek的atmel evalboard上使用定製的atmel版本的U-Boot(u-boot-at91)。我使用U-Boot來啓動運行正常的Linux。我想實現一個簡單的C應用程序,該應用程序從RAM讀取和更改一些數據。我能夠從examples/standalone/文件夾編譯並運行hello_world示例。我的問題是,我無法弄清楚如何訪問文件夾中glue.h提供的api函數。我可以包括該文件,但得到以下錯誤消息有關編譯:如何使用U-Boot API?

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

我加#define CONFIG_API到我的板頭文件,使API是建立。

+0

那麼當您只提供了一行錯誤文本(並且沒有提供完整消息的上下文)時,您如何期望我們調試您的修改後的代碼(您沒有發表評論)?您可能有鏈接器問題。 – sawdust

回答

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> 

,那麼你應該能夠編譯。