µ±Ç°Î»ÖÃ: Ê×Ò³ >> ¿ªÔ´²Ù×÷ϵͳ >> ǶÈëʽlinuxÆô¶¯ÐÅÏ¢ÍêȫעÊÍ
 

ǶÈëʽlinuxÆô¶¯ÐÅÏ¢ÍêȫעÊÍ

×÷Õߣº      À´Ô´£ºzz     ·¢±íʱ¼ä£º2007-07-21     ä¯ÀÀ´ÎÊý£º      ×ֺţº´ó  ÖР Ð¡

ÕªÒª

ÎÒÃÇÔÚÕâÀïÌÖÂÛµÄÊǶÔǶÈëʽlinuxϵͳµÄÆô¶¯¹ý³ÌµÄÊä³öÐÅÏ¢µÄ×¢ÊÍ£¬Í¨¹ýÎÒÃǵÄÌÖÂÛ£¬´ó¼Ò»á¶ÔǶÈëʽlinuxÆô¶¯¹ý³ÌÖгöÏֵġ¢ÒÔǰ¸Ð¾õÊìϤµÄ¡¢µ«È´ÓÖËÆÊǶø·ÇµÄ¶«Î÷ÓÐÒ»¸öÈ·ÇеÄÁ˽⣬²¢ÇÒÄÜÁ˽⵽ÕâЩÊä³öÐÅÏ¢µÄÀ´ÁúÈ¥Âö¡£

ǶÈëʽlinuxµÄÆô¶¯ÐÅÏ¢ÊÇÒ»¸öºÜÖµµÃÎÒÃÇÈ¥ºÃºÃÑо¿µÄ¶«Î÷£¬ËüÄܽ«Ò»·ùËõӰͼ³ÊÏÖÔÚÎÒÃÇÃæÇ°£¬À´Ö¸µ¼ÎÒÃǸü¼ÓÉîÈëµØÀí½âlinuxÄںˡ£

 

¹Ø¼ü×Ö£ºlinux£¬Ç¶Èëʽ£¬Æô¶¯£¬bootloader

ÕýÎÄ

×÷ΪһÃûǶÈëϵͳ¿ª·¢Õߣ¬ÄãÒ»¶¨Óöµ½¹ýÏÂÃæµÄÇé¾°£º

ÔÚijÂÛ̳ÉÏ¿´µ½Ò»ÆªÌû×Ó£¬ÉÏÃæÌù×ÅǶÈëʽlinux¿ª·¢°åÆô¶¯Ê±µÄÓйØÐÅÏ¢£¬È»ºó´ó¼ÒÔÚÌû×ÓÀïÌÖÂÛ×ÅÕâ¸öÆô¶¯¹ý³ÌÖгöÏÖµÄÎÊÌâ£¬Ëæ»ú¾ÙÀýÈçÏ£º

Linux version 2.4.20-uc0 (root@Local) (gcc version 2.95.3
20010315 (release)(ColdFire patches - 20010318 from http://f
(uClinux XIP and shared lib patches from http://www.snapgear.com/)) #20
Èý 6ÔÂ 1
8 00:58:31 CST 2003
Processor: Samsung S3C4510B revision 6
Architecture: SNDS100
On node 0 totalpages: 4096
zone(0): 0 pages.
zone(1): 4096 pages.
zone(2): 0 pages.
Kernel command line: root=/dev/rom0
Calibrating delay loop... 49.76 BogoMIPS
Memory: 16MB = 16MB total
Memory: 14348KB available (1615K code, 156K data, 40K init)
Dentry cache hash table entries: 2048 (order: 2, 16384 bytes)
Inode cache hash table entries: 1024 (order: 1,
Mount-cache hash table entries: 512 (order: 0, 4096 bytes)
Buffer-cache hash table entries: 1024 (order: 0, 4096 bytes)
Page-cache hash table entries: 4096 (order: 2, 16384 bytes)
POSIX conformance testing by UNIFIX
Linux NET4.0 for Linux 2.4
Based upon Swansea University Computer Society NET3.039
Initializing RT netlink socket
Starting kswapd
Samsung S3C4510 Serial driver version 0.9 (2001-12-27) with no serial options en
abled
ttyS00 at 0x3ffd000 (irq = 5) is a S3C4510B
ttyS01 at 0x3ffe000 (irq = 7) is a S3C451
Blkmem copyright 1998,1999 D. Jeff Dionne
Blkmem copyright 1998 Kenneth Albanowski
Blkmem 1 disk images:
0: BE558-1A5D57 [VIRTUAL BE558-1A5D57] (RO)
RAMDISK driver initialized: 16 RAM disks of 1024K size 1024 blocksize
Samsung S3C4510 Ethernet driver version 0.1 (2002-02-20) <mac@os.nctu.edu.tw>
eth0: 00:40:95:36:35:34
NET4: Linux TCP/IP 1.0 for NET4.0
IP Protocols: ICMP, UDP, TCP
IP: routing cache hash table of 512 buckets, 4Kbytes
TCP: Hash tables configured (established 1024 bind 1024)
VFS: Mounted root (romfs
Freeing init memory: 40K

ÉÏÃæµÄÕâЩÊä³öÐÅÏ¢£¬Ò²¿ÉÄܰüÀ¨Äã×Ô¼ºÕýÔÚ×öµÄǶÈëʽlinux¿ª·¢°åµÄÊä³öÐÅÏ¢£¬ÆäÖеÄÿһÐУ¬Ã¿Ò»¸ö×ֵĺ¬Ò壬ÄãÊÇ·ñÉ¹ý£¬»òÕß˵´ó²¿·ÖµÄº¬ÒåÄãÄÜÈ·ÇеØÖªµÀµÄ£¿±¾ÈËÏëÔÚÕâÀï½áºÏ±¾ÈËÔÚʵ¼ùÖÐһЩÌå»áÀ´ºÍ¹ã´óǶÈëʽlinuxµÄ¿ª·¢ÕßÒ»Æð¶Á¶®ÕâЩÐÅÏ¢¡£

ÎÒÃÇÔÚÕâÀォÒÔÒ»¸öÕæÊµµÄǶÈëʽlinuxϵͳµÄÆô¶¯¹ý³ÌΪÀý£¬À´·ÖÎöÕâЩÊä³öÐÅÏ¢¡£Æô¶¯ÐÅÏ¢µÄԭʼÄÚÈݽ«Óñê¼Ç±ê³ö£¬ÒÔÇø±ðÓë×¢ÊÍ¡£

 

ǶÈëʽlinuxµÄÆô¶¯Ö÷Òª·ÖΪÁ½¸ö½×¶Î£º

¢Ù     µÚÒ»²¿·ÖbootloaderÆô¶¯½×¶Î

¢Ú     µÚ¶þ²¿·Ölinux Äں˳õʼ»¯ºÍÆô¶¯½×¶Î

µÚÒ»½Ú£ºstart_kernel

µÚ¶þ½Ú£ºÓû§Ä£Ê½( user_mode )¿ªÊ¼£¬start_kernel½áÊø

µÚÈý½Ú£º¼ÓÔØlinuxÄÚºËÍê±Ï£¬×ªÈëcpu_idle½ø³Ì

 

µÚÒ»²¿·Ö : bootloaderÆô¶¯

Boot loader v0.12

NOTE: this boot loader is designed to boot kernels made with the

2.4.xx releases

bootloader for XV

Built at Nov 20 2005 10:12:35

BootloaderÍ·ÐÅÏ¢£¬°æ±¾£¬±àÒëʱ¼äµÈ£¬Õâ¸öÒò²»Í¬µÄbootloaderµÄÉè¼Æ¶øÓÐËù²»Í¬£¬ÓÉ´ËÄãÄÜ¿´³öbootloaderµÄ°æ±¾ÐÅÏ¢£¬ÓкܶàʹÓõÄÊÇͨÓõÄbootloader£¬Èçu-boot£¬redbootµÈ¡£

Loaded to 0x90060000

½«bootloader¼ÓÔØµ½ÄÚ´æramÖеÄ0x90060000´¦£¬¼´½«bootloader¼ÓÔØµ½ÄÚ´æµÄ¸ß¶ËµØÖ·´¦¡£

LinuxÄں˽«±»bootloader¼ÓÔØµ½0x90090000´¦¡£

 

Found boot configuration

²éÕÒµ½ÁËÆô¶¯bootµÄÅäÖÃÐÅÏ¢

 

Booted from parallel flash

´ÓflashÖÐÆô¶¯´úÂ룬´Ë´¦µÄflashΪ²¢ÐÐÉÁ´æ¡£FlashµÄ·ÖÀàÁоÙÈçÏ£º

ÉÁ´æ·ÖÈýÀࣺ²¢ÐУ¬´®ÐУ¬²»¿É²Á³ý¡£

¢Ù²¢ÐÐParallel flash

¡¡NOR Flash£¬IntelÓÚ1988Äê·¢Ã÷£®Ëæ»ú¶ÁÈ¡µÄËÙ¶È±È½Ï¿ì£¬Ëæ»ú°´×Ö½Úд£¬Ã¿´Î¿ÉÒÔ´«Êä8Bit¡£Ò»°ãÊʺÏÓ¦ÓÃÓÚÊý¾Ý/³ÌÐòµÄ´æÖüÓ¦ÓÃÖУ®NOR»¹¿ÉÒÔÆ¬ÄÚÖ´ÐÐ(execute-in-place)XIP£®Ð´ÈëºÍ²Á³ýËٶȺܵ͡£

¡¡NAND Flash£¬1989Ä꣬¶«Ö¥¹«Ë¾·¢Ã÷£®ÊÇÒÔ¿éºÍҳΪµ¥Î»À´¶ÁдµÄ£¬²»ÄÜËæ»ú·ÃÎÊij¸öÖ¸¶¨µÄµã.Òò¶øÏà¶ÔÀ´Ëµ¶ÁÈ¡ËٶȽÏÂý£¬¶ø²Á³ýºÍдÈëµÄËÙ¶ÈÔò±È½Ï¿ì,ÿ´Î¿ÉÒÔ´«Êä16Bit,Ò»°ãÊÊÓÃÔÚ´óÈÝÁ¿µÄ¶àýÌåÓ¦ÓÃÖУ¬ÈÝÁ¿´ó¡£È磺CF£¬SM.

¢Ú´®ÐÐSerial Flash ÊÇÒÔ×Ö½Ú½øÐд«ÊäµÄ£¬Ã¿´Î¿ÉÒÔ´«Êä1-2Bit.È磺MMC,SD,MS¿¨£®´®ÐÐÉÁ´æÆ÷¼þÌå»ýС£¬Òý½ÅÒ²ÉÙ£¬³É±¾Ïà¶ÔÒ²¸üµÍÁ®¡£¡¡

¢Û²»¿É²Á³ýMask Rom FlashµÄÌØµãÊÇÒ»´ÎÐÔ¼ÈëÊý¾Ý£¬¾ßÓв»¿É¸ü¸ÄÐÔ£¬¾­³£ÔËÓÃÓÚÓÎÏ·ºÍÐè°æÈ¨±£»¤ÎļþµÈµÄ¼Èë¡£ÆäÏÔÖøÌØµãÊdzɱ¾µÍ¡£

×¢Ò⣺ÈκÎflashÆ÷¼þµÄдÈë²Ù×÷Ö»ÄÜÔÚ¿Õ»òÒѲÁ³ýµÄµ¥ÔªÄÚ½øÐУ¬ËùÒÔ´ó¶àÊýÇé¿öÏ£¬ÔÚ½øÐÐдÈë²Ù×÷֮ǰ±ØÐëÏÈÖ´ÐвÁ³ý¡£NANDÆ÷¼þÖ´ÐвÁ³ý²Ù×÷ÊÇÊ®·Ö¼òµ¥µÄ£¬¶øNORÔòÒªÇóÔÚ½øÐвÁ³ýǰÏÈÒª½«Ä¿±ê¿éÄÚËùÓеÄλ¶¼Ð´Îª0¡£

´ÓÉÏÃæµÄÐÅÏ¢£¬ÎÒÃÇ¿ÉÒÔ¶ÔflashÀàÐÍÌØµãÓиö±È½ÏÃ÷È·µÄÁ˽⡣

 

CPU clock rate: 200 MHz

¿ª·¢°åÉÏËùʹÓõÄCPUµÄÖ÷ƵΪ200MHZ£®

 

DRAM size is 128MB (128MB/0MB)

¶¯Ì¬ÄÚ´æram´óСΪ128M¡£ÕâÀïÎÒÃÇÁоÙÒ»ÏÂÄÚ´æµÄÀàÐͼ°¹¤×÷Ô­Àí¡£

¸ù¾ÝÄÚ´æµÄ¹¤×÷Ô­Àí¿ÉÒÔ»®·Ö³öÁ½ÖÖÄڴ棺DRAMºÍSRAM

¢ÙDRAM±íʾ¶¯Ì¬Ëæ»ú´æÈ¡´æ´¢Æ÷¡£ÕâÊÇÒ»ÖÖÒÔµçºÉÐÎʽ½øÐд洢µÄ°ëµ¼Ìå´æ´¢Æ÷¡£DRAMÖеÄÿ¸ö´æ´¢µ¥ÔªÓÉÒ»¸ö¾§Ìå¹ÜºÍÒ»¸öµçÈÝÆ÷×é³É¡£Êý¾Ý´æ´¢ÔÚµçÈÝÆ÷ÖС£µçÈÝÆ÷»áÓÉÓÚ©µç¶øµ¼ÖµçºÉ¶ªÊ§£¬Òò¶øDRAMÆ÷¼þÊDz»Îȶ¨µÄ¡£ÎªÁ˽«Êý¾Ý±£´æÔÚ´æ´¢Æ÷ÖУ¬DRAMÆ÷¼þ±ØÐëÓйæÂɵؽøÐÐˢС£

¢ÚSRAMÊǾ²Ì¬µÄ£¬Òò´ËÖ»Òª¹©µçËü¾Í»á±£³ÖÒ»¸öÖµ¡£Ò»°ã¶øÑÔ£¬SRAM ±ÈDRAMÒª¿ì£¬ÕâÊÇÒòΪSRAMûÓÐË¢ÐÂÖÜÆÚ¡£Ã¿¸öSRAM´æ´¢µ¥ÔªÓÉ6¸ö¾§Ìå¹Ü×é³É£¬¶øDRAM´æ´¢µ¥ÔªÓÉÒ»¸ö¾§Ìå¹ÜºÍÒ»¸öµçÈÝÆ÷×é³É¡£Ïà±È¶øÑÔ£¬DRAM±ÈSRAMÿ¸ö´æ´¢µ¥ÔªµÄ³É±¾Òª¸ß¡£ÕÕ´ËÍÆÀí£¬¿ÉÒԶ϶¨ÔÚ¸ø¶¨µÄ¹Ì¶¨ÇøÓòÄÚDRAMµÄÃܶȱÈSRAM µÄÃܶÈÒª´ó¡£

 

SRAM³£³£ÓÃÓÚ¸ßËÙ»º³å´æ´¢Æ÷£¬ÒòΪËüÓиü¸ßµÄËÙÂÊ£»¶øDRAM³£³£ÓÃÓÚPCÖеÄÖ÷´æ´¢Æ÷£¬ÒòΪÆäÓµÓиü¸ßµÄÃܶȡ£

ÔÚǶÈëʽϵͳÖÐʹÓÃDRAMÄÚ´æµÄÉè¼Æ±È½Ï¹ã·º¡£

 

µØÖ·¸¨Öú˵Ã÷£º

ÏÈ˵Ã÷Ò»ÏÂÄÚ´æµØÖ·Êý×ÖÇé¿ö£¬Ö÷ÒªÊÇΪÁË·½±ã¼ÇÒä¡£

¿ÉÒÔ·ÃÎʵÄÄÚ´æÎª4G¡£

0x40000000ÊÇ1GB´¦£»0x00040000ÊÇ256K´¦£¬0x00020000ÊÇ128K´¦£¬0x90000000ÊÇ2GB¶àµÄµØ·½¡£

1M->0x00100000,

2M->0x00200000,

8M->0x00800000

16M->0x01000000,

32M->0x02000000

256M->0x10000000

64K->0x00010000

4K->0x00001000

Õâ¸öÊǸö¿ìËÙ¼ÇÒäµÄ·½·¨£¬Äã¿ÉÒÔ¸ù¾ÝµØÖ·ÖÐ1µÄλÖÃºÍÆäºó0µÄ¸öÊýÀ´¿ìËÙÖªµÀ»»ËãºóµÄµØÖ·ÊÇÔÚ¶àÉÙÕ׵ĵط½¡£±ÈÈ磬1µÄºóÃæ5¸ö0£¬´ú±í1MµÄ´óС£¬6¸ö0£¬´ú±í16M£¬ÒÔ´ËÀàÍÆ¡£



ROMFS found at 0x46040000, Volume name = rom 43f291aa

romfs,Ö»¶ÁÎļþϵͳËùÔڵĵØÖ·Îª£º0x46040000 (flashÓ³ÉäºóµÄµÚ3·ÖÇø)¡£

¾íÃûΪrom¡£

romfsºÍrootfs¸ÅÄîÉÏÓÐËùÇø±ð¡£

 

flashÔÚÄÚ´æÖÐµÄµÄÆðʼµØÖ·Îª0x46000000,¶øROMFSÔÚflash·ÖÇøÉÏµÄÆðʼλÖÃΪ0x00040000£¬ËùÒÔROMFSÔÚÄÚ´æµØÖ·ÖеÄλÖþÍΪ0x46040000¡£Õâ¸öϸ½ÚµÄ²¿·Ö¿ÉÒԲο¼flash·ÖÇøÊ±µÄµØ·½£¬Creating 3 MTD partitions¡£

 

romfsÖаüÀ¨kernelºÍappÓ¦Ó㬲»°üÀ¨bootloaderºÍfirmwareÐÅϢͷ¡£romfsÖ»¶ÁÎļþϵͳÀïµÄÄÚÈÝÓкܶàÖÖ·ÖÀà·½·¨£¬ÎÒÃÇ¿ÉÒÔ½«kernelºÍappͬʱ·ÅÀïÃæ£¬×÷Ϊ¸ùÎļþϵͳϵÄÒ»¸öÎļþ£¬Ò²¿ÉÒÔÔÚflashÉÏÁíÍâ»®·ÖÇøÓòÀ´·Ö±ð´æ·Å¡£

 

VFSÐéÄâÎļþϵͳ½»»»Æ÷

ÔÚlinuxϵͳÖУ¬Ä¿Ç°ÒѾ­¿ª·¢³ö¶àÖÖÎļþϵͳ£¬ÄÇôÈçºÎÈÃÕâЩÎļþϵͳÄܹ²´æÔÚÒ»¸öϵͳÖÐÄØ£¬´Ólinux 2.0¿ªÊ¼£¬ÒýÈëÁËÐéÄâÎļþϵͳ¹ÜÀíÆ÷ VFSµÄ¸ÅÄî¡£

Linux ϵÄÎļþϵͳÖ÷Òª¿É·ÖΪÈý´ó¿é£º

¢Ù     Ò»ÊÇÉϲãµÄÎļþϵͳµÄϵͳµ÷Óã¬

¢Ú     ¶þÊÇÐéÄâÎļþϵͳ½»»»Æ÷ VFS(Virtual Filesystem Switch)£¬

¢Û     ÈýÊǹÒÔØµ½ VFS Öеĸ÷ʵ¼ÊÎļþϵͳ£¬ÀýÈç ext2£¬jffs µÈ¡£

VFSµÄÈ·Çнз¨ÊÇVirtual Filesystem SwitchÐéÄâÎļþϵͳ½»»»Æ÷£¬ÕâÀïµÄVFSÖеġ°S¡±ÊÇÖ¸µÄswitch£¬Õâ¸öÐèҪǿµ÷һϵģ¬ËüºÜÈÝÒ×±»»ìÏý³É¡°system¡±£¬Èç¹ûÀí½â³É¡°system¡±½«ÊDz»ÕýÈ·µÄ£¬Çë¶à¼Ó×¢Òâ¡£

VFSÊǾßÌåÎļþϵͳfilesystemµÄÒ»¸ö¹ÜÀíÆ÷¡£

VFSÊÇLinuxÄÚºËÖеÄÒ»¸öÈí¼þ²ã£¬Ò»ÖÖÈí¼þ»úÖÆ£¬ËüÒ²ÌṩÁËÄÚºËÖеÄÒ»¸ö³éÏó¹¦ÄÜ£¬ÔÊÐí²»Í¬µÄÎļþϵͳ¹²´æ£¬¿ÉÒÔ³ÆËüΪ Linux µÄÎļþϵͳ¹ÜÀíÕߣ¬ÓëËüÏà¹ØµÄÊý¾Ý½á¹¹Ö»´æÔÚÓÚÎïÀíÄÚ´æµ±ÖС£ËùÒÔÔÚÿ´Îϵͳ³õʼ»¯ÆÚ¼ä£¬Linux ¶¼Ê×ÏÈÒªÔÚÄÚ´æµ±Öй¹ÔìÒ»¿Ã VFS µÄĿ¼Ê÷¡£VFS Öеĸ÷Ŀ¼ÆäÖ÷ÒªÓÃ;ÊÇÓÃÀ´Ìṩʵ¼ÊÎļþϵͳµÄ¹ÒÔØµã¡£¶ørootfs½«ÊÇÕâ¸öĿ¼Ê÷µÄ¸ù½áµãµÄ£¨root£©£¬¼´ "/"Ŀ¼£¬VFSµÄ½á¹¹¾ÍÊÇ´ÓÕâ¸örootfs¿ªÊ¼µÄ¡£ÓÐÁËVFS£¬ÄÇô¶ÔÎļþµÄ²Ù×÷½«Ê¹ÓÃͳһµÄ½Ó¿Ú£¬½«À´Í¨¹ýÎļþϵͳµ÷ÓÃ¶Ô VFS ·¢ÆðµÄÎļþ²Ù×÷µÈÖ¸Á±» rootfs ÎļþϵͳÖÐÏàÓ¦µÄº¯Êý½Ó¿ÚËù½Ó¹Ü¡£

 

×¢Ò⣺rootfs²¢²»ÊÇÒ»¸ö¾ßÌåµÄÎļþϵͳÀàÐÍ£¬Èçjffs¡£ËüÖ»ÊÇÒ»¸öÀíÂÛÉϵĸÅÄî¡£ÔÚ¾ßÌåµÄǶÈëϵͳʵÀýÖУ¬¿ÉÒÔ½«Ä³ÖÖ¾ßÌåµÄÎļþϵͳÉèÖÃΪ¸ùÎļþϵͳrootfs£¬ÈçÎÒÃÇ¿ÉÒÔÉèÖÃromfsΪ¸ùÎļþϵͳ£¬Ò²¿ÉÒÔÉèÖÃjffsΪ¸ùÎļþϵͳ¡£

 

ÕâÀïµÄROMFSÖ»¶ÁÎļþϵͳֻÊÇÒ»ÖÖ¾ßÌåµÄÎļþϵͳÀàÐÍ£¬Ò²ÊÇÔÚǶÈëϵͳÖо­³£Ê¹Óõ½µÄÀàÐÍ¡£

 

¿´ÍêÁËÉÏÃæµÄÄÚÈÝ£¬ÒÔºóÄã¶Ô³öÏÖµÄÀàËÆ¡°kernel Panic:VFS:Unable to mount root fs on 0:00¡±µÄº¬ÒåÓ¦¸ÃÒѾ­Á˽âÁË¡£ÆäÖС°VFS:¡±¾ÍÊÇÐéÄâÎļþϵͳ¹ÜÀíÆ÷²Ù×÷ʱµÄÊä³öÐÅÏ¢ÁË¡£

File linux.bin.gz found

linux kernelÄÚºËÎļþÃû£¬ËüÊÇÔÚÖ»¶ÁÎļþϵͳromfsÉϵÄÒ»¸ö×é³É²¿·Ö¡£

Unzipping image from 0x4639DE60 to 0x90090000, size = 1316021

½«romfsÖеÄlinux kernel½âѹËõµ½0x90090000,Ö®ºó»á´ÓÕâ¸öÄÚ´æµØÖ·Æô¶¯Äںˡ£romfsΪѹËõ¸ñʽÎļþ,ʹÓÃѹËõµÄÖ»¶ÁÎļþϵͳ£¬ÊÇΪÁ˱£³ÖÖÆ×÷³öÀ´µÄÕû¸öϵͳËùÕ¼ÓõÄflash¿Õ¼ä¼õС¡£Õâ¸öÄں˵ĴóСΪ1.3M×óÓÒ£¬ÕâÒ²ÊÇĿǰ´ó¶àÊýǶÈëϵͳËùʹÓõķ½·¨¡£

Inptr = 0x00000014(20)

Inflating....

ÊÍ·Å£¬½âѹÖС£¡£¡££¨±ä´ó£¬³äÆø, ÅòÕÍ£©

Outcnt = 0x0030e7c8(3205064)

Final Inptr = 0x001414ad(1316013)

Original CRC = 0xcbd73adb

Computed CRC = 0xcbd73adb

×öÊͷźóµÄCRC¼ì²é

Boot kernel at 0x90090000 with ROMFS at 0x46040000

kernelÒѾ­±»´ÓromfsÖÐÊͷŵ½ÄÚ´æµØÖ·0x90090000´¦£¬¿ÉÒÔÌø×ªµ½´Ë´¦Æô¶¯kernelÁË£¬ÕâÀïÊÇÖ¸¶¨µÄkernelµÄÆðʼµØÖ·

Press 'enter' to boot

ϵͳµÈ´ýÆô¶¯£¬ºóÃæ½«¿´µ½linux kernelµÄÆô¶¯¹ý³ÌÁË¡£

 

µÚ¶þ²¿·Ö : linuxÄں˳õʼ»¯ÒÔ¼°Æô¶¯

µÚÒ»½Ú£ºstart_kernel

LinuxµÄÔ´´úÂë¿ÉÒÔ´Ówww.kernel.orgµÃµ½£¬»òÕßÄã¿ÉÒԲ鿴linux´úÂë½»²æÒýÓÃÍøÕ¾£ºhttp://lxr.linux.no/ ½øÐÐÔÚÏߵĴúÂë²é¿´£¬ÕâÊÇÒ»¸öºÜºÃµÄ¹¤¾ßÍøÕ¾¡£

ÔÚstart_kernelÖн«µ÷Óõ½´óÁ¿µÄinitº¯Êý£¬À´Íê³ÉÄں˵ĸ÷ÖÖ³õʼ»¯¡£È磺

page_address_init();

sched_init();

page_alloc_init();

init_IRQ();

softirq_init();

console_init();

calibrate_delay();

vfs_caches_init(num_physpages);

rest_init();

¾ßÌåÄÚÈÝ¿ÉÒԲο¼[http://lxr.linux.no/source/init/main.c]

Linux version 2.4.22-uc0 (root@local) (gcc version 2.95.3 20010315 (release)) #33 .?1.. 20 12:09:106

ÉÏÃæµÄ´úÂëÊä³öÐÅÏ¢£¬ÊǸú×Ùlinux´úÂë·ÖÎöºóµÃµ½µÄ£¬½øÈëinitĿ¼ÏµÄmain.cµÄstart_kernelÆô¶¯º¯Êý.

ǶÈëʽlinuxʹÓõÄÊÇlinuxÄں˰汾Ϊ2.4.22

linux source code´úÂëÖÐstart_kernelÖÐÊä³öµÄlinux_bannerÐÅÏ¢¡£Õâ¸öÐÅÏ¢ÊÇÿ¸ölinux kernel¶¼»á´òӡһϵÄÐÅÏ¢£¬Èç¹ûÄãûÓаÑÕâ¾äÈ¥µôµÄ»°¡£

 

Found bootloader memory map at 0x10000fc0.

bootloader¾­¹ýÄÚ´æÓ³ÉäºóµÄµØÖ·Îª£º0x10000fc0, °´ÉÏÃæµÄµØÖ·»»Ëã·½·¨£¬1ºóÃæÓÐ7¸ö0£¬ÄÇôÐéÄâµØÖ·256M×óÓÒ´¦¡£

Processor: ARM pt110 revision 0

pT110ÊÇARM΢´¦ÀíÆ÷armºËµÄÒ»ÖÖ£¬ÁíÒ»ÖÖΪpT100¡£´Ë´¦ÎªÏÔʾARMµÄÀàÐÍ¡£

On node 0 totalpages: 20480

zone(0): 20480 pages.

zone(0): Set minimum memory threshold to 12288KB

Warning: wrong zone alignment (0x90080000, 0x0000000c, 0x00001000)

zone(1): 0 pages.

zone(2): 0 pages.

Ô¤ÁôÄÚ´æ´óС£¬ÔÚ½Úµã0ÉÏ×ܹ²20Ò³, zone(0) ÉèÖÃ×îСÄÚ´æÎª12MB, zone(1)ºÍzone(2)Ϊ0Ò³¡£¾¯¸æ£º¶ÔÆë²»ÕýÈ·

Kernel command line: root=/dev/mtdblock3

Kernel Æô¶¯ÃüÁîÉèΪ£º/dev/mtdblock3£¨ÔÚºóÃæµÄ˵Ã÷Öлῴµ½mtdblock3ÊÇÖ¸µÄflashÉϵÄromfs·ÖÇø¡££©£¬ÓÃÀ´Ö¸¶¨¸ùÎļþϵͳËùÔÚµÄλÖã¬kernel»á½«¿éÉ豸mtdblock3µ±×÷ÎļþϵͳÀ´´¦Àí¡£

Ò²¾ÍÊÇ˵£¬Äں˻á¸ù¾ÝÉÏÃæµÄkernelÃüÁîÐУ¬ÖªµÀÖ»¶ÁÎļþϵͳromfs½«ÊǸùÎļþϵͳrootfs¡£

start_kernel(void)ÖÐÊä³öµÄÉÏÃæµÄÕâ¾äÐÅÏ¢¡£

ÕâÐÐÃüÁîÊÇÔÚlinuxÄÚºËÆô¶¯¹ý³ÌÖж¼»áÊä³öµÄÒ»¾ä¡£

Console: colour dummy device 80x30

´úÂëÖÐconsole_init()µÄÊä³öÐÅÏ¢, ÏÔʾ¿ØÖÆÌ¨ÊôÐÔ£ºÒ»°ãʹÓÃVGA text console£¬±ê×¼ÊÇ80 X 25ÐÐÁеÄÎı¾¿ØÖÆÌ¨£¬ÕâÀïÊǶÔÊôÐÔ½øÐÐÁËÉèÖá£

serial_xx: setup_console @ 115

´®¿ÚÉèÖÃֵΪ115200£¬´ËΪ²¨ÌØÂÊÊä³öÐÅÏ¢¡£¶Ô´®¿ÚÉèÖõÄÐÅÏ¢×öÒ»¸ö´òÓ¡µÄ¶¯×÷£¬ÔÚµ÷ÊÔʱ»á·Ç³£ÓÐÓá£

Calibrating delay loop... 82.94 BogoMIPS

Calibrate:У׼, ½øÈëʱÑÓУ׼ѭ»·¡£¼ì²éCPUµÄMIPS(ÿÃë°ÙÍòÌõÖ¸Áî)£¬BogoÊÇBogus(α)µÄÒâ˼¡£ÕâÀïÊǶÔCPU½øÐÐÒ»¸öʵʱ²âÊÔ£¬À´µÃµ½Ò»¸ö´óÌåµÄMIPSÊýÖµ

Bogomips,ÊÇÓÉlinus TorvaldsдµÄ, ÊÇLinux²Ù×÷ϵͳÖкâÁ¿¼ÆËã»ú´¦ÀíÆ÷ÔËÐÐËٶȵÄÒ»Öֳ߶ȡ£ÌṩÕâÖÖ¶ÈÁ¿µÄ³ÌÐò±»³ÆÎªBogoMips£¬µ±Æô¶¯¼ÆËã»úʱ£¬BogoMipsÄÜÏÔʾϵͳѡÏîÊÇ·ñ´¦ÓÚ×î¼ÑÐÔÄÜ¡£

linuxÄÚºËÖÐÓÐÒ»¸öº¯Êýcalibrate_delay£¨£©,Ëü¿ÉÒÔ¼ÆËã³öcpuÔÚÒ»ÃëÖÓÄÚÖ´ÐÐÁ˶àÉÙ´ÎÒ»¸ö¼«¶ÌµÄÑ­»·£¬¼ÆËã³öÀ´µÄÖµ¾­¹ý´¦ÀíºóµÃµ½BogoMIPSÖµ

Äã¿ÉÒÔ½«¼ÆËã»úµÄbogomipsÓë¼ÆËã»ú´¦ÀíÆ÷µÄbogomips½øÐбȽϡ£Torvalds³ÆÕâ¸ö³ÌÐòΪBogoMipsÀ´°µÊ¾Á½Ì¨¼ÆËã»ú¼äµÄÐÔÄܶÈÁ¿ÊÇ´íÎóµÄ£¬ÒòΪ²¢·ÇËùÓÐÆð×÷ÓÃÒòËØ¶¼Äܱ»ÏÔʾ³öÀ´»ò±»ÈϿɡ£¾¡¹Ü¼ÆËã»ú»ù×¼Öо­³£Óõ½MIPS£¬µ«»·¾³µÄ±ä»¯ÈÝÒ×µ¼Ö¶ÈÁ¿µÄ´íÎó¡£BogomipsÄܲâ³öÒ»ÃëÖÓÄÚij³ÌÐòÔËÐÐÁ˶àÉٴΡ£

²ì¿´/proc/cpuinfoÎļþÖеÄ×îºóÒ»ÐÐÒ²Äܵõ½Õâ¸öÊýÖµ¡£

ÉÏÃæÕâ¸öÊä³ö£¬ÔÚËùÓеÄlinuxϵͳÆô¶¯Öж¼»á´òÓ¡³öÀ´¡£

 

½øÈëÄÚ´æ³õʼ»¯

mem_init(void), [arch/i386/mm/init.c]

Memory: 80MB = 80MB total

Memory: 76592KB available (1724K code, 2565K data, 72K init)

µ±Ç°ÄÚ´æÊ¹ÓÃÇé¿ö£¬½«Áгö×ܵÄÄÚ´æ´óС, ¼°·ÖÅ䏸Äں˵ÄÄÚ´æ´óС:°üÀ¨´úÂ벿·Ö£¬Êý¾Ý²¿·Ö£¬³õʼ»¯²¿·Ö,×ܹ²¸ÕºÃ4M¡£ÇëÁôÒâ´Ë´¦µÄÄں˵ÄÄÚ´æ´óСµÄ¸÷¸öÖµ¡£

 

½øÈëÐéÄâÎļþϵͳVFS³õʼ»¯

vfs_caches_init()

Dentry cache hash table entries: 16384 (order: 5, 131072 bytes)

Inode cache hash table entries: 8192 (order: 4, 65536 bytes)

Mount cache hash table entries: 512 (order: 0, 4096 bytes)

Buffer cache hash table entries: 4096 (order: 2, 16384 bytes)

Page-cache hash table entries: 32768 (order: 5, 131072 bytes)

Ãû´Ê£º

¢Ù     Dentry£ºÄ¿Â¼Êý¾Ý½á¹¹

¢Ú     Inode£ºi½Úµã

¢Û     Mount cache£ºÎļþϵͳ¼ÓÔØ»º³å

¢Ü     buffer cache£ºÄڴ滺³åÇø

¢Ý     Page Cache£ºÒ³»º³åÇø

DentryĿ¼Êý¾Ý½á¹¹(Ŀ¼Èë¿Ú»º´æ),ÌṩÁËÒ»¸ö½«Â·¾¶Ãûת»¯ÎªÌض¨µÄdentryµÄÒ»¸ö¿ìµÄ²éÕÒ»úÖÆ,DentryÖ»´æÔÚÓÚRAMÖУ»

i½Úµã(inode)Êý¾Ý½á¹¹´æ·Å´ÅÅÌÉϵÄÒ»¸öÎļþ»òĿ¼µÄÐÅÏ¢£¬i½Úµã´æÔÚÓÚ´ÅÅÌÇý¶¯Æ÷ÉÏ;´æÔÚÓÚRAMÖеÄi½Úµã¾ÍÊÇVFSµÄi½Úµã£¬dentryËù°üº¬µÄÖ¸ÕëÖ¸ÏòµÄ¾ÍÊÇËü£»

buffer cacheÄڴ滺³åÇø£¬ÀàËÆkupdated£¬ÓÃÀ´ÔÚÄÚ´æÓë´ÅÅ̼ä×ö»º³å´¦Àí£»

Page Cache ÓÃÀ´¼Ó¿ì¶Ô´ÅÅÌÉÏÓ³ÏñºÍÊý¾ÝµÄ·ÃÎÊ¡£

ÔÚÄÚ´æÖн¨Á¢¸÷¸ö»º³åhash±í£¬Îªkernel¶ÔÎļþϵͳµÄ·ÃÎÊ×ö×¼±¸¡£

VFS£¨virtual filesystem switch£©ÐéÄâÎļþÇл»Ä¿Â¼Ê÷ÓÐÓõ½ÀàËÆÕâÑùµÄ½á¹¹±í¡£

ÉÏÃæµÄÊä³öÐÅÏ¢£¬ÔÚÒ»°ãµÄlinuxÆô¶¯¹ý³ÌÖж¼»á¿´µ½¡£

POSIX conformance testing by UNIFIX

conformance:˳Ӧ, Ò»Ö¡£¼´POSIXÊÊÓ¦ÐÔ¼ì²â¡£UNIFIXÊÇÒ»¼ÒµÂ¹úµÄ¼¼Êõ¹«Ë¾£¬Linux Ô­±¾Òª»ùÓÚ POSIX.1 µÄ, µ«ÊÇ POSIX ²»ÊÇÃâ·ÑµÄ, ¶øÇÒ POSIX.1 Ö¤ÊéÏ൱°º¹ó. ÕâʹµÃ Linux »ùÓÚ POSIX ¿ª·¢Ï൱À§ÄÑ. Unifix¹«Ë¾(Braunschweig, µÂ¹ú) ¿ª·¢ÁËÒ»¸ö»ñµÃÁË FIPS 151-2 Ö¤ÊéµÄ Linux ϵͳ. ÕâÖÖ¼¼ÊõÓÃÓÚ Unifix µÄ·¢Ðаæ Unifix Linux 2.0 ºÍ Lasermoon µÄ Linux-FT¡£

ÔÚ2.6µÄÄÚºËÖоͽ«ÉÏÃæµÄÕâ¾äÊä³ö¸øÄõôÁË¡£

 

µÚ¶þ½Ú£ºÓû§Ä£Ê½( user_mode )¿ªÊ¼£¬start_kernel½áÊø

PCI: bus0: Fast back to back transfers disabled

PCI: Configured XX as a PCI slave with 128MB PCI memory

PCI: Each Region size is 16384KB

PCI: Reserved memory from 0x10080000 to 0x15080000 for DMA and mapped to 0x12000000

É豸µÄ³õʼ»¯ init()--->do_basic_init()--->pci_init()£¬³õʼ»¯PCI£¬¼ì²âϵͳµÄPCIÉ豸¡£

Linux NET4.0 for Linux 2.4

Based upon Swansea University Computer Society NET3.039

Ó¢¹úÍþ¶ûÊ¿£¬Ë¹ÍúÎ÷´óѧµÄNET3.039, TCP/IP ЭÒéÕ»

´ËÐÅÏ¢£¬ÔÚlinuxÆô¶¯¹ý³ÌÖж¼»á³öÏÖ¡£

Initializing RT netlink socket

¶ÔSocketµÄ³õʼ»¯£¬socket_init()£¬Netlink Ò»ÖÖ·ÓÉÆ÷¹ÜÀíЭÒé(linux-2.4.22\net\core\Rtnetlink.c£¬Routing netlink socket interface: protocol independent part¡£ ÆäÖÐRTÊÇroute·ÓɵÄÒâ˼¡£Õâ¾äÊä³öÊÇÔÚcreate²úÉúrtnetlinkµÄsocketÌ×½Ó×ÖʱµÄÒ»¸öµ÷ÊÔÊä³ö¡£)

´ËÐÅÏ¢£¬ÔÚlinuxÆô¶¯¹ý³ÌÖж¼»á³öÏÖ¡£

Starting kswapd

Æô¶¯½»»»ÊØ»¤½ø³Ìkswapd£¬½ø³ÌIO²Ù×÷Àý³Ìkpiod

kswapd¿ÉÒÔÅäºÏkpiodÔËÐС£½ø³ÌÓÐʱºòÎÞÊ¿É×ö£¬µ±ËüÔËÐÐʱҲ²»Ò»¶¨ÐèÒª°ÑÆäËùÓеĴúÂëºÍÊý¾Ý¶¼·ÅÔÚÄÚ´æÖС£Õâ¾ÍÒâζ×ÅÎÒÃÇ¿ÉÒÔͨ¹ý°ÑÔËÐÐÖгÌÐò²»ÓõÄÄÚÈÝÇл»µ½½»»»·ÖÇøÀ´¸üºÃµÄÊÇÀûÓÃÄÚ´æ¡£´óԼÿ¸ô1Ã룬kswapdÐÑÀ´²¢¼ì²éÄÚ´æÇé¿ö¡£Èç¹ûÔÚÓ²Å̵Ķ«Î÷Òª¶ÁÈëÄڴ棬»òÕßÄÚ´æ¿ÉÓÿռ䲻×㣬kpiod¾Í»á±»µ÷ÓÃÀ´×öÒÆÈë/ÒÆ³ö²Ù×÷¡£kswapd¸ºÔð¼ì²é£¬kpiod¸ºÔðÒÆ¶¯¡£

Journalled Block Device driver loaded

¼ÓÔØÈÕÖ¾¿éÉ豸Çý¶¯¡£

ÈÕÖ¾¿éÉ豸ÊÇÓÃÀ´¶ÔÎļþϵͳ½øÐÐÈÕÖ¾¼Ç¼µÄÒ»¸ö¿éÉ豸¡£ÈÕÖ¾ÎļþϵͳÊÇÔÚ´«Í³ÎļþϵͳµÄ»ù´¡ÉÏ£¬¼ÓÈëÎļþϵͳ¸ü¸ÄµÄÈÕÖ¾¼Ç¼¡£

ËüµÄÉè¼ÆË¼ÏëÊÇ£º¸ú×ټǼÎļþϵͳµÄ±ä»¯£¬²¢½«±ä»¯ÄÚÈݼǼÈëÈÕÖ¾¡£ÈÕÖ¾ÎļþϵͳÔÚ´ÅÅÌ·ÖÇøÖб£´æÓÐÈÕÖ¾¼Ç¼£¬Ð´²Ù×÷Ê×ÏÈÊǶԼǼÎļþ½øÐвÙ×÷£¬ÈôÕû¸öд²Ù×÷ÓÉÓÚijÖÖÔ­Òò(Èçϵͳµôµç)¶øÖжϣ¬ÏµÍ³ÖØÆôʱ£¬»á¸ù¾ÝÈÕÖ¾¼Ç¼À´»Ö¸´ÖжÏǰµÄд²Ù×÷¡£ÔÚÈÕÖ¾ÎļþϵͳÖУ¬ËùÓеÄÎļþϵͳµÄ±ä»¯¶¼±»¼Ç¼µ½ÈÕÖ¾£¬Ã¿¸ôÒ»¶¨Ê±¼ä£¬Îļþϵͳ»á½«¸üкóµÄÔªÊý¾Ý¼°ÎļþÄÚÈÝдÈë´ÅÅÌ¡£ÔÚ¶ÔÔªÊý¾Ý×öÈκθıäÒÔǰ£¬ÎļþϵͳÇý¶¯³ÌÐò»áÏòÈÕÖ¾ÖÐдÈëÒ»¸öÌõÄ¿£¬Õâ¸öÌõÄ¿ÃèÊöÁËËü½«Òª×öЩʲô£¬È»ºóËüÐÞ¸ÄÔªÊý¾Ý¡£

devfs: v1.12c (20020818) Richard Gooch (rgooch@atnf.csiro.au)

devfs: boot_options: 0x1

DevfsÄ£¿éµÄÊä³öÐÅÏ¢¡£

É豸Îļþϵͳdevfs£¬°æ±¾1.12c£¬

pty: 256 Unix98 ptys configured

PtyÄ£¿éµÄÊä³öÐÅÏ¢£¬Óë¿ØÖÆÌ¨²Ù×÷ÓйصÄÉèÖá£

½«Í¨¹ý devpts ÎļþϵͳʹÓà Unix98 PTYs£¬£¨Pseudo-ttys (telnet etc) deviceÊÇαttysÉ豸µÄËõд¡£

¢Ù              TTY(/dev/tty)ÊÇTeleTYpeµÄÒ»¸öÀÏËõд£¬ÎªÓû§ÊäÈëÌṩ²»Í¬¿ØÖÆÌ¨µÄÉ豸Çý¶¯³ÌÐò¡£ËüµÄÃû×ÖÀ´Ô´ÓÚʵ¼Ê¹Ò½Óµ½ UNIXϵͳµÄ¡¢±»³ÆÎªµç´«´ò×Ö»ú(teletype)µÄÖÕ¶Ë¡£ÔÚLinuxÏ£¬ÕâЩÎļþÌṩ¶ÔÐéÄâ¿ØÖÆÌ¨µÄÖ§³Ö£¬¿ÉÒÔͨ¹ý°´£¼Alt-F1£¾µ½£¼Alt-F6£¾¼üÀ´·ÃÎÊÕâЩÐéÄâ¿ØÖÆÌ¨¡£ÕâЩÐéÄâ¿ØÖÆÌ¨Ìṩ¶ÀÁ¢µÄ¡¢Í¬Ê±½øÐеı¾µØµÇ¼¶Ô»°¹ý³Ì

¢Ú              ttys(/dev/ttys)ÊǼÆËã»úÖն˵Ĵ®Ðнӿڡ£/dev/ttyS0¶ÔÓ¦MS-DOSÏ嵀 COM1¡£


ʹÓà make dev½Å±¾MAKEDEVÀ´½¨Á¢ptyÎļþ¡£ÕâÑùϵͳÄں˾ÍÖ§³ÖUnix98·ç¸ñµÄptyÁË¡£ÔÚ½øÐÐTelnetµÇ¼ʱ½«ÒªÓõ½/dev/ptyÉ豸¡£ ptyÊÇαÖÕ¶ËÉ豸£¬ÔÚÔ¶³ÌµÇ¼µÈÐèÒªÒÔÖÕ¶Ë·½Ê½½øÐÐÁ¬½Ó£¬µ«ÓÖ²¢·ÇÕæÊµÖն˵ÄÓ¦ÓóÌÐòÖбØÐëʹÓÃÕâÖÖÉ豸£¬Èçtelnet»òxtermµÈ³ÌÐò¡£Linux 2.2ÒÔºóÔöÌíÁËUNIX98·ç¸ñµÄPtyÉ豸£¬ËüʹÓÃÒ»¸öеÄÎļþϵͳ(devptsÕë¶ÔαÖն˵ÄÎļþϵͳ)ºÍÒ»¸ö¿Ë¡µÄÉ豸cloning deviceÀ´ÊµÏ֯书ÄÜ¡£

linux-2.4.22\drivers\char\Pty.c, ÔÚdevfs_mk_dir (NULL, "pts", NULL);ʱ»áÊä³öÉÏÃæµÄÐÅÏ¢¡£

 

loop: loaded (max 8 devices)

¼ÓÔØ·µ»¹¿éÉ豸Çý¶¯£¬×î¶àÖ§³Ö8¸öÉ豸

 

8139too Fast Ethernet driver 0.9.27

eth0: RealTek RTL8139 at 0x60112000, 00:10:0d:42:a0:03, IRQ 14

eth0: Identified 8139 chip type 'RTL-8100B/8139D'

Íø¿¨Çý¶¯£¬»ùµØÖ·Îª£º0x60112000£¬ MACµØÖ·:00:10:0d:42:a0:03, ÖжϺţº14

RTL8139 µÄ½ÓÊÕ·¾¶Éè¼Æ³ÉÒ»¸ö»·Ðλº³åÇø£¨Ò»¶ÎÏßÐÔµÄÄڴ棬ӳÉä³ÉÒ»¸ö»·ÐÎÄڴ棩¡£µ±É豸½ÓÊÕµ½Êý¾Ýʱ£¬Êý¾ÝµÄÄÚÈݾͱ£´æÔÚÕâ¸ö»·Ðλº³åÇøÄÚ²¢¸üÐÂϸö´æ´¢Êý¾ÝµÄµØÖ·£¨µÚÒ»¸öÊý¾Ý°üµÄ¿ªÊ¼µØÖ·£«µÚÒ»¸öÊý¾Ý°üµÄ³¤¶È£©¡£É豸»áÒ»Ö±±£Áô»º³åÇøÄÚµÄÊý¾ÝÖ±µ½Õû¸ö»º³åÇøºÄ¾¡¡£ÕâÑù£¬É豸»áÔÙ´ÎÖØÐ´»º³åÇøÄÚÆðʼλÖõÄÄÚÈÝ£¬¾ÍÏñÒ»¸ö»·ÄÇÑù¡£

´Ó 2.2 °æÄÚºËÉý¼¶µ½ 2.4 °æÊ±, RTL-8139 Ö§³ÖÄ£¿éÒѲ»ÔٽРrtl8139£¬¶ø½ÐËü 8139too£¬ÏÖÔÚÄãÔÙ¿´µ½8139too¾Í²»»á²»Ã÷°×ËüµÄÀ´ÓÉÁ˰ɡ£

SCSI subsystem driver Revision: 1.00

USBÉ豸ÐÅÏ¢£¬USB»á±»µ±×öSCSIÀ´´¦Àí¡£

mumk_register_tasklet: (1) tasklet 0x905bf9c0 status @0x9025e974

ÈíÖжÏÐÅÏ¢Êä³ö¡£TaskletÊÇÔÚ2.4ÖвųöÏÖ£¬ËüÊÇΪÁ˸üºÃµØÀûÓöàCPU¡£

 

Probing XX Flash Memory

̽²â XXµÄÉÁ´æ£¨Flash Memory£©,"NOR NAND Flash Memory Technology"

 

Amd/Fujitsu Extended Query Table v1.3 at 0x0040

number of CFI chips: 1

AMDÓ븻ʿͨºÏ×ÊÉèÁ¢µÄFlash¹©»õÉÌSpansion¡£AMDÒò»ñÀû²»¼Ñ,ÒѾ­Í˳öFlashÊг¡£¬ºóÐøÓÉSpansionºÏ×ʹ«Ë¾¾­Óª.Ö÷ÒªÉú²úNORÀàÐ͵Äflash,ÌØµãÊÇÈÝÁ¿Ð¡£¬Ëٶȿ졣SpansionÉ̱êµÄflash£¬ÔÚÎÒÃÇ¿ª·¢Öлᾭ³£¿´µ½¡£ÒÔºó´ó¼Ò¿´µ½SpansionµÄоƬ£¬¾ÍÄÜÁ˽⵽ËüºÍAMD»¹Óи»Ê¿Í¨µÄÀ´ÁúÈ¥ÂöÁË¡£

Common flash Interface (CFI)ÊÇÖ¸Ò»¸öͳһµÄflash·ÃÎʽӿڣ¬±íʾÕâÖÖflashÊÇÕâÖÖ½Ó¿ÚÀàÐ͵ġ£

Using buffer write method

ʹÓÃflashд»º³å·½Ê½

flashÌṩÁËдBUFFERµÄÃüÁîÀ´¼Ó¿ì¶ÔflashÉÏ¿éµÄ²Ù×÷¡£¶ÔFlash²Á³ýºÍдÊý¾ÝÊǺÜÂýµÄ¡£Èç¹ûÓÃдBUFFERµÄÃüÁî»á¿ìÒ»µã¡£¾ÝÊÖ²áÉÏ˵£¬»á¿ì20±¶¡£Buffer Size £º5 bytesµÄbuffer»º³å²»ÊÇÿ¸ö¿é¶¼ÓУ¬ÊÇÕû¸öflashÖ»ÓÐÒ»¸ö5 bytesµÄbuffer£¬ÓÃдBUFFERÃüÁî¶ÔËùÓÐµÄ¿é½øÐÐд²Ù×÷£¬¶¼ÒªÓÃͬһ¸öbuffer,дBufferÊÇÖ÷Òª¼ì²ébufferÊÇ·ñavailable£¬ÆäʵbufferÆð»º³å×÷Óã¬À´Ìá¸ß¹¤×÷ЧÂÊ¡£

±ÈÈçijflashÓÐ128¸ö128K×Ö½Ú¿é¡£ÔÊÐíÓû§¶ÔÈÎÒâ¿é½øÐÐ×Ö½Ú±à³ÌºÍд»º³åÆ÷×Ö½Ú±à³Ì²Ù×÷£¬Ã¿×Ö½Ú±à³Ìʱ¼äΪ210¦Ìs£»Èô²ÉÓÃд»º³åÆ÷×Ö½Ú±à³Ì·½Ê½£¬32×Ö½Ú±à³Ì¹²Ðè218¦Ìs£¬Ã¿×Ö½Ú±à³Ìʱ¼ä½öΪ6.8¦Ìs¡£Ð¾Æ¬µÄ¿é²Á³ýʱ¼äΪ1s£¬ÔÊÐíÔÚ±à³Ì»ò¿é²Á³ý²Ù×÷µÄͬʱ½øÐÐÐü¹ÒÖжÏÈ¥½øÐжÁ²Ù×÷£¬´ý¶Á²Ù×÷Íê³Éºó£¬Ð´ÈëÐü¹Ò»Ö¸´ÃüÁÔÙ¼ÌÐø±à³Ì»ò¿é²Á³ý¡£

 

Creating 3 MTD partitions on "XX mapped flash":

0x00000000-0x00020000 : "BootLoader"

0x00020000-0x00040000 : "Config"

0x00040000-0x01000000 : "Romfs"

´Ë´¦ÎªÖØÒªÐÅÏ¢²¿·Ö£¬ÐèÒªÌØ±ðÁôÒâ¡£

ÔÚÄÚ´æÖÐÓ³Éä¹ýµÄflash,´´½¨Èý¸öMTD·ÖÇø£º

flashÉϵÄÄÚÈݽ«±»Ó³Éäµ½ÄÚ´æÖеĶÔÓ¦µØÖ·

ǰ128KΪBootLoader--->0x00000000-0x00020000

½Ó×ŵÄ128KΪϵͳÅäÖÃÐÅÏ¢Config´æ·ÅµÄλÖÃ--->0x00020000-0x00040000

ÔÙºóÃæµÄ 16M - 2X128K ΪromfsµÄ´æ·Å´¦.--->0x00040000-0x01000000

ÉÏÃæµÄÄÚÈÝ£¬´ó¼Ò¿ÉÒÔ¸ù¾ÝÇ°ÃæµÄ»»Ë㹫ʽµÃµ½¡£

 

A> ±àÒëµÄbootloaderÒ»°ã´óСԼ50K×óÓÒ£»

B> ÔÚ´Ë´¦¾ÍÖªµÀÁËÅäÖÃÐÅÏ¢configÊÇ·ÅÔÚµÚ2·ÖÇøÖеģ»

C> ÖÆ×÷µÄromfsµÄ´óС,Ò»°ãΪ8M»ò10M×óÓÒ£¬ËùÒÔÄܷŵÃÏ£»

 

ǶÈëʽLinuxÄں˵ĿéÉ豸Çý¶¯£º

¶ÔÓÚlinux µÄ¸ùÎļþϵͳ£¬Ä¿Ç°ÓÐÈýÖÖ¿éÉ豸µÄÇý¶¯¿ÉÒÔÑ¡Ôñ£¬ËüÃÇ·Ö±ðÊÇ£º

a£© Blkmem Çý¶¯

b£© MTD Çý¶¯

c) RAM disk Çý¶¯

Blkmem Çý¶¯ÊÇרÃÅΪǶÈëʽlinux ¿ª·¢µÄÒ»ÖÖ¿éÉ豸Çý¶¯£¬ËüÊÇǶÈëʽlinuxϵͳÖÐ×îΪ¹ÅÀϺÍͨÓõĿéÉ豸Çý¶¯¡£ËüÔ­ÀíÏà¶Ô¼òµ¥µ«ÊÇÅäÖñȽϸ´ÔÓ£¬ÐèÒª¸ù¾ÝÄã¼´µÄFlashµÄ·ÖÇøÊ¹ÓÃÇé¿öÀ´Ð޸ĴúÂë¡£µ±È»Ð޸ĵĽá¹ûÊÇËü¿ÉÒÔ¶ÔһЩNORÐ͵ÄFlash½øÐжÁд²Ù×÷¡£²»¹ýĿǰ֧³ÖµÄFlashÀàÐͲ»¹»¶à¡£Èç¹ûмÓÈë¶ÔÒ»ÖÖFlashµÄÖ§³ÖÐèÒª×÷µÄ¹¤×÷Á¿±È½Ï´ó¡£

LinuxµÄMTDÇý¶¯ÊDZê×¼LinuxµÄFlashÇý¶¯¡£ËüÖ§³Ö´óÁ¿µÄÉ豸£¬ÓÐ×ã¹»µÄ¹¦ÄÜÀ´¶¨ÒåFlashµÄ·ÖÇø£¬½øÐеØÖ·Ó³ÉäµÈµÈ¡£Ê¹ÓÃMTDÄã¿ÉÒÔÔÚÒ»¸öϵͳÖÐʹÓò»Í¬ÀàÐ͵ÄFlash¡£Ëü¿ÉÒÔ½«²»Í¬µÄFlash×éºÏ³ÉÒ»¸öÏßÐԵĵØÖ·ÈÃÄãÀ´Ê¹Óá£

ÔÚ±ê×¼µÄLinux 2.4ÄÚºËÖÐMTDÓÐһϵÁеÄÑ¡ÏÄã¿ÉÒÔ¸ù¾Ý¸öÈËϵͳµÄÐèÒªÀ´Ñ¡Ôñ£¬¶¨ÖÆ¡£

ÁíÍâÒ»ÖÖÑ¡Ôñ¾ÍÊÇRAM disk Çý¶¯¡£ÔÚPCÉÏËü¾­³£ÓÃÓÚûÓÐÓ²Å̵ÄLinuxµÄÆô¶¯¹ý³Ì¡£ËüºÍFlashûÓÐÖ±½ÓµÄ¹ØÏµ¡£²»¹ýµ±FlashÉÏÆô¶¯µÄÊǾ­¹ýѹËõµÄÄÚºËʱ¡£RAM disk ¿ÉÒÔ×÷Ϊ¸ùÎļþϵͳ¡£

MTD Çý¶¯ÌṩÁ˶ÔFlashÇ¿´óµÄÖ§³Ö,Äãͨ¹ýËüÉõÖÁ¿ÉÒÔÔÚFlashÉÏÔËÐÐÒ»¸ö¿ÉÒÔ¶ÁдµÄÕæÕýµÄÎļþϵͳ£¬±ÈÈçJFFS2¡£¶øBlkmemÇý¶¯ÔòÍû³¾Äª¼°¡£

NET4: Linux TCP/IP 1.0 for NET4.0

µ÷ÓÃinet_init [ linux-2.4.22\net\ipv4\Af_inet.c ]ʱµÄÊä³öÐÅÏ¢, ÔÚÆô¶¯¹ý³ÌÖб»socket.cµ÷Óõ½¡£

IP Protocols: ICMP, UDP, TCP, IGMP

Áгö¿ÉÒÔÖ§³ÖµÄIPЭÒ飬´Ë´¦ÎªkernelÔ´´úÂëinet_add_protocol(p);µÄÊä³ö¡£

ÔÚlinuxÆô¶¯¹ý³ÌÖУ¬¶¼»á¿´µ½Õâ¾äµÄÊä³ö¡£

IP: routing cache hash table of 512 buckets, 4Kbytes

IP·ÓÉ´úÂëµÄÊä³öÐÅÏ¢¡£

ip_rt_init [ linux-2.4.22\net\ipv4£ÜRoute.c ]£¬Set the IP module up£¬Â·ÓÉ»º³åhash±í

TCP: Hash tables configured (established 8192 bind 8192)

TCPЭÒé³õʼ»¯Êä³öÐÅÏ¢¡£tcp_init [ linux-2.4.22\net\ipv4\Tcp.c ],

NET4: Unix domain sockets 1.0/SMP for Linux NET4.0.

UNIXÍøÂçЭÒéÐÅÏ¢¡£

af_unix_init[ linux-2.4.22\net\unix\Af_unix.c ], ¶àÖÖÁ¬½ÓµÄÒ»ÖÖ(IPv4, UNIX¡¡domain sockets, IPv6ºÍIrDA). SMP¡¡¶Ô³Æ¶à´¦ÀíÆ÷¡ªSymmetrical Multi¡¡Processing£¬ÕâÀïÖ÷ÒªÊÇÖ¸UNIXµÄÒ»Ð©ÍøÂçЭÒ飮

 

ÉÏÃæµÄ¹ØÓÚÍøÂçµÄÊä³öÐÅÏ¢ÊÇÔÚlinuxÆô¶¯ÐÅÏ¢Öж¼»á³öÏֵġ£

¼ÓÔØ¸÷ÖÖÎļþϵͳ

cramfs: wrong magic

»á³öÏÖ¡°cramfs: wrong magic¡±£¬±ðµ£ÐÄÕâûÓÐʲôº¦´¦£¬Õâ¸öÊÇkernelµÄÊéдbug£¬ÔÚ2.6ÖÐÓÐÐÞ¸ÄÖ®£¬ËüÊÇÒ»¸ö¾¯¸æÐÅÏ¢£¬ÓÃÀ´¼ì²écramfsµÄsuperblock³¬¼¶¿éµÄ¡£superblockÒ²ÊÇVFSÒªÓõ½µÄÊý¾Ý½á¹¹¡£

´úÂëlinux-2.4.22\fs\cramfs\Inode.c£º

2.4

cramfs_read_super£¨¡£¡£¡££©

/* Do sanity checks on the superblock */

       if (super.magic != CRAMFS_MAGIC) {

              /* check at 512 byte offset */

              memcpy(&super, cramfs_read(sb, 512, sizeof(super)), sizeof(super));

              if (super.magic != CRAMFS_MAGIC) {

                     printk(KERN_ERR "cramfs: wrong magic\n");

                     goto out;

              }

       }

 

2.6

if (super.magic != CRAMFS_MAGIC) {

                         if (!silent)

                                 printk(KERN_ERR "cramfs: wrong magic\n");

                         goto out;

                 }

³¬¼¶¿éÊÇÎļþϵͳµÄ¡°Í·²¿¡±¡£Ëü°üº¬ÎļþϵͳµÄ״̬¡¢³ß´çºÍ¿ÕÏдÅÅÌ¿éµÈÐÅÏ¢¡£Èç¹ûËð»µÁËÒ»¸öÎļþϵͳµÄ³