linuxÆô¶¯£¨×ªÔØ£©
¸÷sectionµÄλÖ÷ֲ¼¿´Äں˵ÄÁ´½Ó½Å±¾
D:\KIDE\target\kernel-version\cgel3.0\linux\include\asm-generic\vmlinux.lds.h
D:\KIDE\target\kernel-version\cgel3.0\linux\arch\powerpc\kernel\vmlinux.lds.S
Kernel¾µÏñÆðʼµØÖ·KERNELBASE = 0xc000 0000£¬ÕâÒâζ×ÅÄں˴úÂëºÍÄÚºËÈ«¾Ö±äÁ¿µÈµÄµØÖ·¿Õ¼äÔÚ3g-4gµÄµØ·½£¬
¶øKernelʵ¼Ê±»boot½âѹµ½ramµÄ0µØÖ·´¦¡£ÕâÒâζ×ÅÔÚÄÚºËûÓпªÆômmu£¬½«×Ô¼ºÓ³Éäµ½3g¿ªÊ¼µÄµØÖ·¿Õ¼äǰ£¬ËùÓзÃÎʵĺ¯ÊýµØÖ·¡¢È«¾Ö±äÁ¿¶¼Òª¼õÈ¥0xc0000000Õâ¸öÆ«ÒÆÁ¿¡£
bootÌø×ªµã£¬kernelÈë¿Úº¯Êý_startËùÔÚÎļþ
D:\KIDE\target\kernel-version\cgel3.0\linux\arch\powerpc\kernel\head_32.S
Á´½Ó½Å±¾µÄÆðʼ·ûºÅ_stext¾ÍÊÇ´ÓÕâ¸öÎļþ¿ªÊ¼£¬¸÷ÀàÒì³£´¦ÀíÈë¿ÚÒ²ÔÚÕâ¸öÎļþÀï¡£
±£´æboot´«¹ýÀ´µÄr3,r4µ½r31ºÍr30,¸ør24¸³0;
r3:±âƽÉ豸Ê÷Ê×µØÖ·£¬ÎïÀíµØÖ·¡£
r4ÖÐÊÇʲô£¿¿ÉÄÜÊDZ»boot½âѹµÄÊ×µØÖ·£¬603ºÃÏñûÓõ½¡£
r24¸ÉʲôµÄ£¿¶àºË³õʼ»¯Ê¹Ó㬷ŵÄÊǺ˵ıàºÅ
Ö´ÐÐearly_init£º
early_initλÓÚ.init.text¶Î£¬ÕâÊÇÒ»¸öcÓïÑԵĺ¯Êý£¬¶ÑÕ»Ö¸Õër1δ¼ûµ½ÔÚ֮ǰµÄ´úÂëÖÐÖ¸¶¨£¬Ó¦¸ÃÊÇÑÓÓõÄbootÌø¹ýÀ´Ê±Ê¹ÓõÄÖµ¡£
reloc_offsetÕâ¸öº¯Êý±È½ÏÇÉÃʹÓÃÒ»¸öÁ´½Óʱȷ¶¨µÄ¾ø¶ÔµØÖ·£¬ÀûÓÃÏà¶ÔÌø×ªµ½ÄÇÀïµÃµ½µ±Ç°ÔËÐеÄʵ¼ÊµØÖ·£¬¼ÆËã²îÖµ´Ó¶øÇó³öµ±Ç°kernel±»½âѹµÄµØ·½¾àÀë0xc000 0000µÄÆ«ÒÆ¡£
ÕâÒªÊDZ£Ö¤¼´Ê¹kenelûÓб»boot½âѹµ½0µØÖ·£¬´úÂëÒ²ÄÜÕý³£ÔËÐС£
Çåbss¶Î£¬×¢ÒâÈçºÎÈ·¶¨ÏÖÔÚµÄBss¶ÎÆðʼµØÖ·¡£ÔÚkernelûÓаÑ×Ô¼ºÓ³Éäµ½0xc0000000ʱ£¬ËùÓеÄÈ«¾Ö·ûºÅ·ÃÎʶ¼ÒªËãÆ«ÒÆ¡£
memset_io±ÈÆÕͨµÄmemset¶àÁËflush cacheµÄ²Ù×÷£¬±£Ö¤Ð´µ½ramÖС£
SPRN_PVRÊÇ´¦ÀíÆ÷µÄversion register£¬identify_cpuº¯Êý¸ù¾Ý¶Á³öµÄSPRN_PVRÖµÔÚÈ«¾Ö½á¹¹ÌåÊý×écpu_specsÖÐÆ¥ÅäcpuÀàÐÍ£¬ccÊÇppc603.
Æ¥Åä³É¹¦£¬cur_cpu_specÖ¸Ïòcpu_specsÖÐppc603ÄÇÒ»Êý×é³ÉÔ±¡£
do_feature_fixupsÕâ¸öº¯ÊýÏȽâÊÍËûµÄºóÁ½¸öÈë²Î£¬__start___ftr_fixupÊÇ__ftr_fixup¶ÎµÄÆðʼµØÖ·£¬__stop___ftr_fixupÊÇ__ftr_fixup¶ÎµÄ½áÊøµØÖ·¡£
__ftr_fixupÕâ¸ö¶ÎµÄÄÚÈÝÆäʵÊÇÒ»¸öÊý×飬ÿ¸öÊý×é³ÉÔ±ÊÇÒ»¸ö½á¹¹Ì壬¸Ã½á¹¹ÌåÃèÊöÁËij¶Î´úÂëµÄÆðʼµØÖ·£¬½áÊøµØÖ·£¬»¹ÓÐÌØÊâµÄÖµ¼°ÑÚÂë×÷Ϊ±êʶ¡£
ʹÓÃBEGIN_FTR_SECTION£¬END_FTR_SECTION_IFSETÕâÁ½¸öºê°üסµÄ»ã±à´úÂë»áÔÚ__ftr_fixup¶ÎÀï¼Ç¼Õâ¶Î»ã±à´úÂëµÄÏà¹ØÎ»Öü°±êʶÐÅÏ¢¡£
ÕâÁ½¸öºê°üסµÄ´úÂë¶¼ÊÇһЩºÍcpuÌØÐÔÏà¹ØµÄ´úÂë
Ïà¹ØÎĵµ£º
2.6µÄKernel LOGO
ËÆºõ±È2.4ÈÝÒס£2.6µÄlogoÊý¾ÝÔÚ/drivers/video/logoÀppmÎļþ¾ÍÊÇlogoͼÏñÁË¡£Ã¿¸öppm¶ÔÓ¦Ò»¸ö. cÎļþ£¬ÄÚÈÝ´ó¸Å¾ÍÊÇͼÏñ³ß´ç¡¢µ÷É«°å¡¢Î»Í¼Êý¾ÝµÈÐÅÏ¢¡£.cÎļþÎÞÐè×Ô¼º½¨Á¢£¬ÔÚmakeµÄʱºòÈç¹û²»´æÔÚij¸öppmÎļþ¶ÔÓ¦µÄ.cÎļþ£¬¾Í»á×Ô¶¯´Ó ppmÉú³ÉÒ»¸ö£¬È»ºó°ÑËü±àÒë³É.oÎļþ¡£ËùÒÔ¿´¿´Ä¿Â¼ÏÂÄÄЩ.ppmÎ ......
·¢ÏÖ·þÎñÆ÷ϵͳʱ¼äºÍ±ê׼ʱ¼ä²îÁË10¶à·ÖÖÓ,È»ºóÁãµãµÄʱ¼äµ÷ÕûÁËÏÂʱ¼ä¡£¹ýÁ˲¶àÒ»¸öÀñ°Ý·¢Õ¹Êý¾Ý¿âÖмǼµÄʱ¼ä»¹ÊDz»¶Ô£¬ÈçÊÇÓüӰàµ÷ÕûÁËÏÂʱ¼ä¡£¹ýÁË2ÌìÒ»¿´»¹ÊÇʱ¼ä²»¶Ô£¬Ò»²é²Å·¢ÏÖ£º
»úÆ÷ÀïÓÐÁ½¸öʱÖÓ¡£Ó²¼þʱÖÓ´Ó¸ù±¾ÉϽ²ÊÇCMOSʱÖÓ£»¶øÏµÍ³Ê±ÖÓÊÇÓÉÄÚºËά»¤µÄ£¬ËüÊÇ´Ó1969ÄêÄ©£¨¼ ......
ÎļþÔÚÁ½¸öÎļþ¼Ð£º
inc/hello.h
main/hello.c, main.c, Makefile
ÎļþÄÚÈÝ£º
hello.h
void hello(char name[]);
hello.c
#include <stdio.h>
void hello(char name[])
{
printf("Hello %s!\n", name);
}
main.c
#include <stdio.h>
#include "../inc/hello.h"
// The second
int main( ......
°üº¬3¸öÎļþ¼Ð£¬ºÍÒ»¸öÎļþMakefile
Ŀ¼×éÖ¯½á¹¹ÈçÏ£º
Makefile
inc/hello.h
main/main.c
src/hello.c
MakefileÎļþÔÚÍâÃæ£¬ÕâÑùÉú³ÉµÄ.oºÍ¿ÉÖ´ÐÐÎļþ¶¼ÔÚÍâÃæ£¬cleanÖ®ºó»áºÜ¸É¾»£¬½á¹¹ÇåÎú
ÎļþÄÚÈÝÈçÏ£º
Makefile(Ö®ËùÒÔÓôóд£¬ÒòΪmake¿ÉÒÔʶ±ðMakefileºÍmakefile£¬Óôóд¿ÉÒÔÏÊÃ÷һЩ)::
# String declar ......
Linux
/ LinuxÎļþϵͳµÄÈë¿Ú£¬Ò²ÊÇ´¦ÓÚ×î¸ßÒ»¼¶µÄĿ¼£»
/bin »ù´¡ÏµÍ³ËùÐèÒªµÄÄÇЩÃüÁîλÓÚ´ËĿ¼£¬Ò²ÊÇ×îСϵͳËùÐèÒªµÄÃüÁ±ÈÈç ls¡¢cp¡¢mkdirµÈÃüÁ¹¦ÄܺÍ/usr/binÀàËÆ£¬Õâ¸öĿ¼ÖеÄÎļþ¶¼ÊÇ¿ÉÖ´Ðе쬯ÕͨÓû§¶¼¿ÉÒÔʹÓõÄÃüÁî¡£×öΪ»ù´¡ÏµÍ³ËùÐèÒªµÄ×î»ù´¡µÄÃüÁî¾ÍÊÇ·ÅÔÚÕâÀï¡£
/boot LinuxµÄÄں˼°Òýµ¼Ïµ ......