資源簡介
基本功能:
1. SD boot,基于linaro u-boot的SPL功能實現
2. 從SD卡的FAT分區上加載文件到SDRAM
3. 將環境變量保存至SD卡 等
代碼片段和文件信息
/*
?*?(C)?Copyright?2007?Semihalf
?*
?*?Written?by:?Rafal?Jaworowski?
?*
?*?See?file?CREDITS?for?list?of?people?who?contributed?to?this
?*?project.
?*
?*?This?program?is?free?software;?you?can?redistribute?it?and/or
?*?modify?it?under?the?terms?of?the?GNU?General?Public?License?as
?*?published?by?the?Free?Software?Foundation;?either?version?2?of
?*?the?License?or?(at?your?option)?any?later?version.
?*
?*?This?program?is?distributed?in?the?hope?that?it?will?be?useful
?*?but?WITHOUT?ANY?WARRANTY;?without?even?the?implied?warranty?of
?*?MERCHANTABILITY?or?FITNESS?FOR?A?PARTICULAR?PURPOSE.??See?the
?*?GNU?General?Public?License?for?more?details.
?*
?*?You?should?have?received?a?copy?of?the?GNU?General?Public?License
?*?along?with?this?program;?if?not?write?to?the?Free?Software
?*?Foundation?Inc.?59?Temple?Place?Suite?330?Boston
?*?MA?02111-1307?USA
?*
?*/
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?“api_private.h“
#define?DEBUG
#undef?DEBUG
/*****************************************************************************
?*
?*?This?is?the?API?core.
?*
?*?API_?functions?are?part?of?U-Boot?code?and?constitute?the?lowest?level
?*?calls:
?*
?*??-?they?know?what?values?they?need?as?arguments
?*??-?their?direct?return?value?pertains?to?the?API_?“shell“?itself?(0?on
?*????success?some?error?code?otherwise)
?*??-?if?the?call?returns?a?value?it?is?buried?within?arguments
?*
?****************************************************************************/
#ifdef?DEBUG
#define?debugf(fmt?args...)?do?{?printf(“%s():?“?__func__);?printf(fmt?##args);?}?while?(0)
#else
#define?debugf(fmt?args...)
#endif
typedef int?(*cfp_t)(va_list?argp);
static?int?calls_no;
/*
?*?pseudo?signature:
?*
?*?int?API_getc(int?*c)
?*/
static?int?API_getc(va_list?ap)
{
int?*c;
if?((c?=?(int?*)va_arg(ap?u_int32_t))?==?NULL)
return?API_EINVAL;
*c?=?getc();
return?0;
}
/*
?*?pseudo?signature:
?*
?*?int?API_tstc(int?*c)
?*/
static?int?API_tstc(va_list?ap)
{
int?*t;
if?((t?=?(int?*)va_arg(ap?u_int32_t))?==?NULL)
return?API_EINVAL;
*t?=?tstc();
return?0;
}
/*
?*?pseudo?signature:
?*
?*?int?API_putc(char?*ch)
?*/
static?int?API_putc(va_list?ap)
{
char?*c;
if?((c?=?(char?*)va_arg(ap?u_int32_t))?==?NULL)
return?API_EINVAL;
putc(*c);
return?0;
}
/*
?*?pseudo?signature:
?*
?*?int?API_puts(char?**s)
?*/
static?int?API_puts(va_list?ap)
{
char?*s;
if?((s?=?(char?*)va_arg(ap?u_int32_t))?==?NULL)
return?API_EINVAL;
puts(s);
return?0;
}
/*
?*?pseudo?signature:
?*
?*?int?API_reset(void)
?*/
static?int?API_reset(va_list?ap)
{
do_reset(NULL?0?0?NULL);
/*?NOT?REACHED?*/
return?0;
}
/*
?*?pseudo?signature:
?*
?*?int?API_get_sys_info(struct?sys_info?*si)
?*
?*?fill?out?the?sys_info?struct?containing?selected?parameters?about?the
?*?machine
?*/
static?int?API_get_sys_info(va_list?ap)
{
struct?sys_info?*si;
si?=
評論
共有 條評論