最近看了傅琳琳的那篇OAL的点点滴滴(http://www.vckbase.com/document/viewdoc/?id=1379),他告诉我StartUp()函数是CE启动的第一个函数,可是我硬是没有搜索到那个什么鬼函数在哪里,在MSDN帮助文档里面也说:
This function is the first function to be called when the OS is booted from either the boot loader or reset vector.
void StartUp(void);
ParametersNone.
Return ValuesNone.
RemarksThis function is the first function called during boot up. The function needs to initialize the CPU to a known state and then call one of the kernel initialization functions, either KernelInitialize or KernelStart.
可是我为什么找不到呢?
嘿嘿,在一阵子搜索之后,我放弃了,然后开始翻启动代码那段汇编语言,看到一个词语不认识:LEAF_ENTRY ,查看MSDN的帮助文档说,
This macro declares the beginning of a routine that does not require any prolog code.
LEAF_ENTRY Name[,
[Section=]SectionName]
ParametersName Name is the routine name and is in the global name space. SectionName SectionName is the name of the section in which the entry will appear; it is optional and defaults to .text. Return ValuesNone.
RemarksA LEAF_ENTRY must have an associated ENTRY_END.
Each supported microprocessor contains a definition for this macro in a microprocessor-specific header file. The following table shows the supported microprocessor families and the related header file that contains the macro definition for that family.
Microprocessor familyHeader file nameARM
Kxarm.h
SH3, SH4
Kxshx.h
MIPS
Kxmips.h
嘿嘿,原来就是它定义了StartUp啊,但是有些地方仍然没有想通,比如这个例程调用了很多C的函数,但这个时候好像还没有初始化栈堆,哪位知道原因,烦请告诉我一声。