ºìÁªLinuxÃÅ»§
Linux°ïÖú

»ùÓÚ2.6.19ÄÚºËСÐÍLinuxϵͳÖÆ×÷ÓëÒÆÖ²

·¢²¼Ê±¼ä:2007-09-08 00:00:38À´Ô´:ºìÁª×÷Õß:Cromise
¡¡¡¡ARM9 S3C2410΢´¦ÀíÆ÷ÓëLinuxµÄ½áºÏÔ½À´Ô½½ôÃÜ£¬Öð½¥ÔÚǶÈëʽÁìÓòµÃµ½¹ã·¶µÄÓ¦Óá£Ä¿Ç°£¬ÔÚ±ãЯʽÏû·ÑÀàµç×Ó²úÆ·¡¢ÎÞÏßÉ豸¡¢Æû³µ¡¢ÍøÂç¡¢´æ´¢²úÆ·µÈ¶¼¿ÉÒÔ¿´µ½S3C2410ÓëLinuxÏà½áºÏµÄÉíÓ°¡£

¡¡¡¡S3C2410΢´¦ÀíÆ÷ÊÇÒ»¿îÓÉSamsung¹«Ë¾ÎªÊÖ³ÖÖÕ¶ËÉè¼ÆµÄµÍ¼Û¸ñ¡¢µÍ¹¦ºÄ¡¢¸ßÐÔÄÜ£¬»ùÓÚARM920TºËµÄ΢´¦ÀíÆ÷¡£Ëü´øÓÐÄÚ´æ¹ÜÀíµ¥Ôª(MMU)£¬²ÉÓÃ0.18mm¹¤ÒÕºÍAMBAÐÂÐÍ×ÜÏ߽ṹ£¬Ö÷Ƶ¿É´ï203MHz¡£Í¬Ê±£¬ËüÖ§³ÖThumb 16λѹËõÖ¸Á£¬´Ó¶øÄÜÒÔ½ÏСµÄ´æ´¢¿Õ¼ä»ñµÃ32λµÄϵͳÐÔÄÜ¡£

¡¡¡¡ÔÚÖÚ¶àǶÈëʽ²Ù×÷ϵͳÖУ¬LinuxÄ¿Ç°·¢Õ¹×î¿ì¡¢Ó¦ÓÃ×îΪ¹ã·º[1]¡£ÐÔÄÜÓÅÁ¼¡¢Ô´Â뿪·ÅµÄLinux¾ßÓÐÌå»ýС¡¢Äں˿ɲüõ¡¢ÍøÂ繦ÄÜÍêÉÆ¡¢¿ÉÒÆÖ²ÐÔÇ¿µÈÖî¶àÓŵ㣬·Ç³£ÊʺÏ×÷ΪǶÈëʽ²Ù×÷ϵͳ¡£Ò»¸ö×î»ù±¾µÄLinux²Ù×÷ϵͳӦ¸Ã°üÀ¨£ºÒýµ¼³ÌÐò¡¢ÄÚºËÓë¸ùÎļþϵͳÈý²¿·Ö¡£

¡¡¡¡ÓëLinux2.4ÄÚºËÏà±È£¬2.6ÄÚºËÎüÊÕÁË×îеļ¼Êõ£¬ÔÚÐÔÄÜ¡¢¿É²âÁ¿ÐÔ¡¢Æ÷¼þÖ§³ÖºÍ¿ÉÓÃÐÔ·½ÃæÓÐÁË´ó·ù¶ÈÌá¸ß£»Ö§³Ö¸ü¶àµÄÌåϵ½á¹¹¡¢´¦ÀíÆ÷¡¢×ÜÏß¡¢½Ó¿ÚºÍÉ豸£»±ê×¼»¯ÁËÄÚ²¿½Ó¿Ú£»¼ò»¯ÁËÀ©Õ¹»òÌí¼ÓÐÂÉ豸µÄ²½ÖèµÈ¡£

¡¡¡¡±¾ÎÄ×ÅÖؽéÉÜÈçºÎÖÆ×÷Ò»¸ö»ùÓÚlinux-2.6.19Äں˵ÄСÐÍLinux²Ù×÷ϵͳ£¬²¢½«ËüÒÆÖ²µ½S3C2410¿ª·Å°åÉÏ¡£ÄÚÈÝ°üÀ¨½»²æ±àÒë»·¾³µÄ½¨Á¢£¬Òýµ¼³ÌÐò¡¢2.6.19Äںˡ¢¸ùÎļþϵͳµÄÐ޸ġ¢ÅäÖᢱàÒë¡¢ÒÆÖ²µÈ¡£

¡¡¡¡ÏµÍ³µÄÖÆ×÷ÒÆÖ²

¡¡¡¡½¨Á¢½»²æ±àÒë»·¾³

¡¡¡¡ÒªÒÆÖ²¡¢¿ª·¢Ð¡ÐÍLinuxϵͳ£¬Ê×ÏÈÒªÔÚ°²×°ÁËRedHat9»ò¸ü¸ß°æ±¾Linux²Ù×÷ϵͳµÄÖ÷»úÉÏÅäÖý»²æ¿ª·¢»·¾³¡£½»²æ¿ª·¢ÊÇÖ¸ÔÚ¿ª·¢Ö÷»úÉÏ°²×°¿ª·¢¹¤¾ß£¬±à¼­¡¢±àÒëÄ¿±ê°åµÄÒýµ¼³ÌÐò¡¢Äں˺ÍÎļþϵͳ£¬Ê¹ÆäÄÜÔÚÄ¿±ê°åÉÏÔËÐС£

¡¡¡¡Õë¶Ô±¾´Î¿ª·¢£¬ÐèÒª°²×°arm-linux-gcc-3.4.1ÒÔ¼°armv4l-tools¹¤¾ßÁ´¡£ÔÚ°²×°Íê±Ïºó£¬ÇмÇÒª½«Á½Õߵķ¾¶·Ö±ðÌí¼Óµ½ÏµÍ³Â·¾¶$PATHÖС£

¡¡¡¡Òýµ¼³ÌÐò

¡¡¡¡¶ÔÓÚ¼ÆËã»úϵͳÀ´Ëµ£¬´Ó¿ª»úÉϵ絽²Ù×÷ϵͳÆô¶¯ÐèÒªÒ»¸öÒýµ¼³ÌÐò¡£Ç¶ÈëʽlinuxϵͳͬÑùÀë²»¿ªÒýµ¼³ÌÐò£¬Õâ¸öÒýµ¼³ÌÐò½Ð×öBootloader[1]¡£Í¨¹ýÕâ¶ÎС³ÌÐò£¬¿ÉÒÔ³õʼ»¯Ó²¼þÉ豸¡¢½¨Á¢ÄÚ´æ¿Õ¼äµÄÓ³Éä±í£¬´Ó¶ø½¨Á¢Êʵ±µÄϵͳӲ¼þ»·¾³£¬Îª×îÖÕµ÷ÓòÙ×÷ϵͳÄÚºË×öºÃ×¼±¸¡£

¡¡¡¡vivi[4]ÊǺ«¹úMIZI¹«Ë¾ÎªÆäARM9ϵÁвúÆ·¶øÑз¢µÄBootloader£¬Ð¡¶øÁéÇÉ£¬ÕâÀïÑ¡ÓÃËü×÷ΪСÐÍLinuxϵͳµÄBootloader¡£

¡¡¡¡Ê×ÏÈÒªÐÞ¸ÄviviÔ´´úÂëÖеÄFlash·ÖÇøÐÅÏ¢£¬ÐµķÖÇøÐÅÏ¢Èç±í1Ëùʾ¡£

¡¡¡¡¸ù¾Ý±í1£¬ÔÚviviÔ´Âëarch/s3c2410/smdk.cÎļþÖÐ×÷³öÏàÓ¦µÄÐ޸ġ£

¡¡¡¡È»ºóÔÚÅäÖò˵¥Öе¼Èësmdk2410µÄĬÈÏÅäÖ㬱àÒë³É¹¦½«ÔÚviviÔ´´úÂëĿ¼ÏÂÉú³ÉËùÐèµÄBootloaderÎļþ£¬ÎļþÃûΪvivi¡£

¡¡¡¡½Ó×Å£¬±ã¿É°ÑviviÏÂÔص½Ä¿±ê°åFlashµÄÏàӦλÖá£

¡¡¡¡ÄÚºË

¡¡¡¡ÐÞ¸ÄÄÚºË
¡¡¡¡
¡¡¡¡Ê×ÏÈ£¬ÐÞ¸ÄÄÚºËÔ´Âëlinux-2.6.19ϵÄMakefileÎļþ£¬Ö¸¶¨Ä¿±ê´úÂëÀàÐÍÓë±àÒëÆ÷£ºSUBARCH :=arm£»CROSS_COMPILE:=/usr/local/arm/3.4.1/bin/arm-linux-¡£

¡¡¡¡È»ºó£¬ÔÚlinux-2.6.19/arch/arm/mach-s3c2410/common-smdk.cÖиù¾Ý±í1ÐÞ¸ÄÄÚºËÖеÄFlash·ÖÇøÐÅÏ¢¡£ÕâÀïÌáÐѶÁÕߣ¬2.6.16(º¬)ÒÔÇ°Äں˵ÄÔ´ÂëÖÐûÓÐFlash·ÖÇøÐÅÏ¢£¬ËùÒÔÐèÒªÔö¼ÓеķÖÇøÐÅÏ¢£»¶øÔÚ2.6.17(º¬)ÒÔºóÄں˵ÄÔ´ÂëÖÐÒѺ¬Flash·ÖÇøÐÅÏ¢£¬ÐèÒªµÄÖ»ÊÇÐ޸ķÖÇøÐÅÏ¢¡£

¡¡¡¡ÄÚºËFlash·ÖÇøÐÅÏ¢±ØÐëÓëviviµÄFlash·ÖÇøÐÅÏ¢ÏàÒ»Ö¡£ÒòΪ£¬viviµÄFlash·ÖÇøÖеĵØÖ·ÊÇÄں˼°ÎļþϵͳÏÂÔص½Nand flashµÄÕæÕýµØÖ·£»¶øÄÚºËÔÚÆô¶¯Ê±¶ÁµÄÈ´ÊÇÄÚºËFlash·ÖÇøÉ趨µÄµØÖ·£»ËùÒÔ£¬ÈôÁ½Õß²»Í¬£¬ÔòºÜ¿ÉÄܵ¼Ö²»ÄÜÕý³£Æô¶¯Äں˻ò¶ÁÈ¡Îļþϵͳ¡£

¡¡¡¡×îºó£¬ÐÞ¸Älinux-2.6.19/drivers/mtd/nand/s3c2410.c£¬½ûÖ¹Nand flash²î´í¼ì²â£º chip->eccmode = NAND_ECC_NONE;¡£

¡¡¡¡Äں˵ÄÅäÖñàÒë

¡¡¡¡ÔÚÅäÖò˵¥Öе¼ÈëÄں˶Ôsmdk2410µÄĬÈÏÅäÖã¬ÔÙÔÚ´Ë»ù´¡ÉÏÑ¡ÔñËùÐèµÄ¹¦ÄÜ¡£ÈçNand Flash¼°MTDÉ豸µÄÖ§³Ö£¬CramfsÎļþϵͳµÄÖ§³ÖµÈ¡£

¡¡¡¡ÅäÖÃÍê±Ï£¬ÔÚÖÕ¶ËÊäÈë±àÒëÃüÁî¡°make¡±½øÐбàÒë¡£ÈôÄÚºËÔ´Âë±àÒë³É¹¦£¬½«ÔÚlinux-2.6.19/arch/arm/boot/ÏÂÉú³ÉÄÚºËÓ³ÏñÎļþzImage¡£

¡¡¡¡×îºó£¬ÔÚviviÃüÁîÌáʾģʽÏÂʹÓÃÏÂÔØÃüÁ½«ÄÚºËÓ³ÏñzImage¼ÓÔص½¿ª·¢°åFlashÖеÄÊʵ±µØÖ·¡£

¡¡¡¡¸ùÎļþϵͳ

¡¡¡¡LinuxϵͳÖеÄÎļþºÍÉ豸ÊÇͨ¹ýÎļþϵͳÀ´×éÖ¯µÄ¡£ÎļþϵͳµÄ´æÔÚʹµÃÊý¾ÝºÍÉ豸¿ÉÒÔ±»ÓÐЧ¶ø͸Ã÷µØ´æÈ¡·ÃÎÊ¡£Ò»¸ölinuxµÄ×î¼ò¸ùÎļþϵͳӦ¸Ã°üÀ¨Ö§³ÖlinuxϵͳÕý³£ÔËÐеĻù±¾ÄÚÈÝ£¬°üÀ¨ÏµÍ³Ê¹ÓõÄÈí¼þºÍ¿â£¬ÒÔ¼°ËùÓÐÓÃÀ´ÎªÓû§Ìṩ»ù±¾Ö§³ÖµÄ¼Ü¹¹ºÍÖ¸Áî¡£

¡¡¡¡ÔÚ¸ùÎļþĿ¼rootfsϽ¨Á¢bin¡¢dev¡¢etc¡¢lib¡¢proc¡¢sbin¡¢root¡¢tmpµÈһϵÁбر¸µÄĿ¼£¬°ÑËùÐèµÄÅäÖÃÎļþ¡¢¶¯Ì¬º¯Êý¿â·Åµ½ÏàÓ¦µÄĿ¼¡£²ÉÓÃBusyBoxÊÇËõС¸ùÎļþϵͳµÄºÃ°ì·¨¡£BusyBoxÒÔºÜСµÄÌå»ý¼¯³ÉÁË×î³£ÓõÄlinuxÃüÁîºÍÓ¦ÓóÌÐò£¬´ó´ó¼ò»¯ÁËÖÆ×÷linux¸ùÎļþϵͳµÄ¹ý³Ì¡£

¡¡¡¡ÓÐÒ»µã±ØÐëÖ¸³öµÄÊÇ£¬ÔÚ2.6.12(º¬)֮ǰµÄÄÚºËͨ³£ÊÇÓÃdevfsÀ´¹ÜÀíλÓÚ/devϵÄËùÓпéÉ豸ºÍ×Ö·ûÉ豸£»µ«ÔÚ2.6.13(º¬)Ö®ºóµÄÄÚºËÒѲ»Ö§³Ödevfs£¬¶øתÓÃudevÀ´¹ÜÀí/devϵÄÉ豸£¬Ïê¼û[5]¡£ËùÒÔ£¬Õë¶Ô2.6.19Äںˣ¬ÒªÊ¹ÏµÍ³Æô¶¯ºó½øÈëBusyBox¿ØÖÆ̨£¬»¹ÐèÔÚ/rootfs/devÏÂÌí¼Ó¿ØÖÆ̨É豸Îļþ£º¡°[root@localhost dev]# mknod -m 600 console c 5 1¡±¡£

¡¡¡¡Ä¿Ç°£¬linuxÒѾ­Äܹ»Ö§³Ö¼¸Ê®ÖÖÎļþϵͳ¸ñʽ£¬Èç³£ÓõÄCramfs¡¢Jfss2¡¢YaffsµÈ¡£Cramfs ÊÇÒ»ÖÖÖ»¶ÁµÄÉÁ´æÎļþϵͳ£¬¿ÉÒÔ±£»¤ÏµÍ³µÄ»ù±¾ÉèÖò»±»¸ü¸Ä¡£¸ùÎļþϵͳ¾ÍʹÓÃCramfs¸ñʽ¡£

¡¡¡¡Ê¹ÓÃCramfsÖÆ×÷¹¤¾ßmkcramfs°Ñ¸ùÎļþĿ¼ÖÆ×÷³ÉÓ³ÏñÎļþ£ºrootfs.cramfs¡£

¡¡¡¡¸ùÎļþϵͳÖÆ×÷Íê³É£¬ÔÚviviÃüÁîģʽÏ°Ñrootfs.cramfsÏÂÔص½FlashµÄºÏÊÊλÖá£

¡¡¡¡ÖÁ´Ë£¬Ò»¸ö»ùÓÚ2.6.19Äں˵ÄСÐÍLinuxϵͳ±ã³É¹¦µØÖÆ×÷Íê±Ï£¬²¢ÒÆÖ²µ½S3C2410¿ª·¢°åÉÏÁË¡£

¡¡¡¡°å×Ó¼Óµçºó±ã¿É¿´µ½ÏµÍ³µÄÆô¶¯ÐÅÏ¢£¬×îÖÕ½øÈëBusyBox¿ØÖÆ̨¡£

¡¡¡¡½áÓï

¡¡¡¡»ùÓÚ2.6Äں˵ÄLinuxƾ½èÆäÍ»³öµÄǶÈëʽÌØÐÔÓëÐÔÄÜÓÅÔ½µÄARM9 S3C2410Ïà½áºÏ£¬ÔÚǶÈëʽÁìÓòÓÐ׏ãÀ«µÄÓ¦ÓÃÌìµØ¡£ÎÄÕ½éÉÜÁËÈçºÎÖÆ×÷Ò»¸ö»ùÓÚLinux2.6.19Äں˵ÄСÐÍLinuxϵͳ£¬²¢½«ÆäÒÆÖ²µ½S3C2410¿ª·¢°åÉÏ¡£Ð¡ÐÍϵͳµÄÖÆ×÷ÓëÒÆÖ²ÊǽøÐÐǶÈëʽ¿ª·¢µÄ»ù´¡£¬±ØÐëÊìÁ·ÕÆÎÕ¡£
ÎÄÕÂÆÀÂÛ

¹²ÓÐ 0 ÌõÆÀÂÛ