Ò׽ؽØͼÈí¼þ¡¢µ¥Îļþ¡¢Ãâ°²×°¡¢´¿ÂÌÉ«¡¢½ö160KB

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ÌØÐÔÏà¹ØµÄ´úÂë


Ïà¹ØÎĵµ£º

linuxÏÂCÓïÑÔ¶àÏ̱߳à³ÌʵÀý

ѧ¶«Î÷£¬ÍùÍùʵÀý²ÅÊÇ×îÈÃÈ˸ÐÐËȤµÄ£¬ÀÏÊÇѧ»ù´¡ÀíÂÛ£¬²»¶¯ÊÖ£¬¸Ð¾õûÓгɾ͸У¬ºÇºÇ¡£
ÏÂÃæÏÈÀ´Ò»¸öʵÀý¡£ÎÒÃÇͨ¹ý´´½¨Á½¸öÏß³ÌÀ´ÊµÏÖ¶ÔÒ»¸öÊýµÄµÝ¼Ó¡£
»òÐíÕâ¸öʵÀýûÓÐʵ¼ÊÔËÓõļÛÖµ£¬µ«ÊÇÉÔ΢¸Ä¶¯Ò»Ï£¬ÎÒÃǾͿÉÒÔÓõ½ÆäËûµØ·½È¥À­¡£
ÏÂÃæÊÇÎÒÃǵĴúÂ룺
/*thread_example.c :  c multiple thread programmi ......

linuxϵͳʱ¼ä

  ·¢ÏÖ·þÎñÆ÷ϵͳʱ¼äºÍ±ê׼ʱ¼ä²îÁË10¶à·ÖÖÓ,È»ºóÁãµãµÄʱ¼äµ÷ÕûÁËÏÂʱ¼ä¡£¹ýÁ˲¶àÒ»¸öÀñ°Ý·¢Õ¹Êý¾Ý¿âÖмǼµÄʱ¼ä»¹ÊDz»¶Ô£¬ÈçÊÇÓüӰàµ÷ÕûÁËÏÂʱ¼ä¡£¹ýÁË2ÌìÒ»¿´»¹ÊÇʱ¼ä²»¶Ô£¬Ò»²é²Å·¢ÏÖ£º 
   »úÆ÷ÀïÓÐÁ½¸öʱÖÓ¡£Ó²¼þʱÖÓ´Ó¸ù±¾ÉϽ²ÊÇCMOSʱÖÓ£»¶øϵͳʱÖÓÊÇÓÉÄÚºËά»¤µÄ£¬ËüÊÇ´Ó1969ÄêÄ©£¨¼ ......

Linux GCC makeÎļþµÄд·¨2

ÎļþÔÚÁ½¸öÎļþ¼Ð£º
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( ......

linuxÇý¶¯Ö®makefileÏê½â

# If KERNELRELEASE is defined, we've been invoked from the
# kernel build system and can use its language.
ifneq ($(KERNELRELEASE),)
    obj-m := hello.o
# Otherwise we were called directly from the command
# line; invoke the kernel build system.
else
    ......

Linux GCC makeÎļþµÄд·¨3

 °üº¬3¸öÎļþ¼Ð
Ŀ¼×éÖ¯½á¹¹ÈçÏ£º
inc/hello.h
main/main.c, Makefile
src/hello.c
ÎļþÄÚÈÝÈçÏ£º
hello.h:
void hello(char name[]);
main.c:
#include <stdio.h>
#include "../inc/hello.h"
// The second hello.h should in ""
int main()
{
hello("GCC");
printf("Haha Linux Ub ......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØͼ | ¸ÓICP±¸09004571ºÅ