ÒªÔÚǶÈëʽLinuxÏÂʹÓö¯Ì¬ÓïÑÔ£¬Ê×ÏÈÒª½â¾öµÄÊÇÓïÑÔ½âÊÍÆ÷»òÖ´ÐÐÒýÇæµÄ½»²æ±àÒëÎÊÌâ¡£
½»²æ±àÒëͨ³£ÓÐÒÔϼ¸ÖÖ;¾¶£º
1. Ö±½Óͨ¹ý½»²æ±àÒ빤¾ß£¬ÊÖ¹¤ÅäÖý»²æ±àÒë¡£½»²æ±àÒ빤¾ß¿ÉÒÔÀûÓÃÕâ¸ö½Å±¾À´×Ô¶¯Éú³É£º
http://kegel.com/crosstool/
´Ë·½·¨µÄºÃ´¦ÊǼò±ã¿ì½Ý£¬Ò»µ©crosstool×öºÃÒÔºó£¬ÐèҪʲô°üÖ±½Ó±àÒë¼´¿É£¬¶øÇÒ¿É¿ØÐÔºÜÇ¿¡£È±µãÊǶԸ÷ÖÖÅäÖòÎÊýÒªºÜÁ˽⣬¶øÇÒ×Ô¼ºÐèÒª¿¼ÂǰüÒÀÀµ£¬ÒÔ¼°°ü°²×°ÎÊÌâ¡£¶ÔÓÚÒª±àÒë°üÒÀÀµ±È½Ï¶àµÄÈí¼þ£¬±ÈÈçÎÒÒª±àÒëruby½âÊÍÆ÷£¬ÒÔ¼°Ðí¶àext°ü£¬ÄǾͱȽÏÂé·³ÁË£¬Ò»°ã²»ÍƼö¡£
2. ÀûÓÃscratchbox¹¤¾ß£ºhttp://www.scratchbox.org/
scratchboxÊÇÒ»¸öºÜ²»´íµÄ½»²æ±àÒëϵͳ£¬¶øÇÒ¿ÉÒÔÔÚqemuµÄÖ§³ÖÏÂÔÚpcÉÏÖ±½Ó·ÂÕæÔËÐС£scratchboxµÄʹÓÃÒ²Ï൱¼òµ¥¡£Î¨Ò»È±º¶µÄÊÇ£¬1.x°æ±¾ÐèÒªÇл»Óû§À´±àÒ룬¶øÇÒ¸÷ÖÖ¿â²»¹»ÓÅ»¯£¬ÐèÒª×Ô¼º×ÐϸÂýÂýµØµ÷Õû²ÅÐС£2.x°æÄ¿Ç°ÎĵµÈ±·¦£¬²»¹»³ÉÊì¡£
3. ÀûÓÃOpenEmbedded¹¤¾ß£ºhttp://www.openembedded.org/
OEÊÇÊôÓڱȽÏÖØÁ¿Ð͵Ľ»²æ±àÒëϵͳ¹¤¾ß£¬Óкܶà³ÉÊìµÄLinuxÉ豸¶¼ÊÇÓÃËüÀ´¹¹½¨£¬ÈçSharp Zarus, Nokia 770, OpenMokoµÈ¡£OE²ÉÓÃÁË½Ï‘ÌØ±ð’µÄ°ü¹ÜÀí¹¤¾ßºÍ°æ±¾¹ÜÀí¹¤¾ß£¬ÓкܶàÏȽøµÄ ......
Ò»¡¢UbootÉÕ¼
1¡¢Á¬½Ójtag¡¢ÍøÏß¡¢´®¿Ú
2¡¢°Ñtftpd32.exe·Åµ½ubootÉÕ¼µÄĿ¼Àï
3¡¢Æô¶¯tftpd32.exe
4¡¢Æô¶¯ttermpro.exe
5¡¢Ë«»÷uboot.bat
6¡¢µÈµ½´°¿Úµ¯³öÀ´
8¡¢ÔÚ´®¿Ú¹¤¾ßÖÐ
1¡¢ Ö´ÐÐprint ÃüÁ²é¿´»·¾³±äÁ¿
2¡¢Ö´ÐÐsetenv serverip ¾ßÌåIP µØÖ·£¬ÅäÖÃtftp server µÄµØÖ·µÈ
3¡¢Ö´ÐÐsetenv loadaddr 82000000£¬ÉèÖÃuboot.bin µÄ¼ÓÔØÄÚ´æÎ»ÖÃΪ0x82000000
4¡¢Ö´ÐÐsavenv, ±£´æÉÏÊöÐÞ¸Ä
9¡¢ÉÕ¼£º
tftpboot 82000000 u-boot.bin
sf probe 2
sf erase 0 60000
sf write 82000000 0 60000
×¢Ò⣺Èç¹û°å×ÓÉÏÒѾÉÕ¹ýuboot£¬´ÓµÚ8²½¿ªÊ¼
¶þ¡¢KernelÉÕ¼
1¡¢°ÑucImageÎļþ·ÅÔÚtftpd32.exeÏàͬµÄĿ¼ÏÂ
2¡¢Æô¶¯tftpd32.exe
3¡¢Æô¶¯´®¿Úµ÷ÊÔ¹¤¾ß ttermpro.exe
ÏÂÃæ²Ù×÷¶¼ÊÇÔÚ´®¿Ú¹¤¾ßÖнøÐеģº
4¡¢ÊäÈë nand erase ²Á³ýnandÀïµÄÄÚÈÝ
5¡¢tftp ucImage ¼ÓÔØµ½ÄÚ´æ
6¡¢nand write 0x82000000 0x40000 0x400000 дÈënandÖÐ
7¡¢ set bootcmd 'nand read 0x82000000 0x40000 0x400000;bootm 82000000' ÉèÖÃbootcmd
×¢Ò⣺ÏÂÔØÖ®Ç°×¢ÒâÅäÖÃÕýÈ·µÄipºÍ·þÎñÆ÷
Èý¡¢¼ÓÔØÎļþϵͳ
1¡¢bootargÉèÖà £¬ÉèÖÃÖ®ºóÐ ......
1. I/O Port
¡¡¡¡ºÍÓ²¼þ´ò½»µÀÀë²»¿ªI/O Port£¬ÀϵÄISAÉ豸¾³£ÊÇÕ¼ÓÃʵ¼ÊµÄI/O¶Ë¿Ú£¬ÔÚlinuxÏ£¬²Ù×÷ϵͳûÓжÔI/O¿ÚÆÁ±Î£¬Ò²¾ÍÊÇ˵£¬ÈκÎÇý¶¯³ÌÐò¶¼¿É¶ÔÈÎÒâµÄI/O¿Ú²Ù×÷£¬ÕâÑù¾ÍºÜÈÝÒ×ÒýÆð»ìÂÒ¡£Ã¿¸öÇý¶¯³ÌÐòÓ¦¸Ã×Ô¼º±ÜÃâÎóÓö˿ڡ£
¡¡¡¡ÓÐÁ½¸öÖØÒªµÄkernelº¯Êý¿ÉÒÔ±£Ö¤Çý¶¯³ÌÐò×öµ½ÕâÒ»µã¡£
¡¡¡¡1£©check_region(int io_port£¬ int off_set)
¡¡¡¡Õâ¸öº¯Êý²ì¿´ÏµÍ³µÄI/O±í£¬¿´ÊÇ·ñÓбðµÄÇý¶¯³ÌÐòÕ¼ÓÃijһ¶ÎI/O¿Ú¡£
¡¡¡¡²ÎÊý1£ºI/O¶Ë¿ÚµÄ»ùµØÖ·£¬
¡¡¡¡²ÎÊý2£ºI/O¶Ë¿ÚÕ¼Óõķ¶Î§¡£
¡¡¡¡·µ»ØÖµ£º0 ûÓÐÕ¼Ó㬠·Ç0£¬ÒѾ±»Õ¼Óá£
¡¡¡¡2£©request_region(int io_port£¬ int off_set£¬char *devname)
¡¡¡¡Èç¹ûÕâ¶ÎI/O¶Ë¿ÚûÓб»Õ¼Óã¬ÔÚÎÒÃǵÄÇý¶¯³ÌÐòÖоͿÉÒÔʹÓÃËü¡£ÔÚʹÓÃ֮ǰ£¬±ØÐëÏòϵͳµÇ¼Ç£¬ÒÔ·ÀÖ¹±»ÆäËû³ÌÐòÕ¼ÓᣵǼǺó£¬ÔÚ/proc/ioportsÎļþÖпÉÒÔ¿´µ½ÄãµÇ¼ÇµÄI/O¿Ú¡£
¡¡¡¡²ÎÊý1£ºio¶Ë¿ÚµÄ»ùµØÖ·¡£
¡¡¡¡²ÎÊý2£ºio¶Ë¿ÚÕ¼Óõķ¶Î§¡£
¡¡¡¡²ÎÊý3£ºÊ¹ÓÃÕâ¶ÎioµØÖ·µÄÉ豸Ãû¡£
¡¡¡¡ÔÚ¶ÔI/ ......
½ø³ÌÀàËÆÓÚÈËÉú£ºËüÃDZ»²úÉú£¬Óлò¶à»òÉÙÓÐЧµÄÉúÃü£¬¿ÉÒÔ²úÉúÒ»¸ö»ò¶à¸ö×Ó½ø³Ì£¬×îÖÕ¶¼ÒªËÀÍö¡£Ò»¸ö΢СµÄ²îÒìÊǽø³ÌÖ®¼äûÓÐÐÔ±ð²îÒ엗ÿ¸ö½ø³Ì¶¼Ö»ÓÐÒ»¸ö¸¸Çס£ÄÇô£¬²Ù×÷ϵͳÓÐÒ»¸öÖØÒªµÄ¸ÅÄî——Ị̈߳¬ÔÚLinuxÉÏÊÇÔõôʵÏÖµÄÄØ£¿¿ÉÒÔÃ÷È·µÄ¸æËßÄ㣬Linux²¢Ã»ÓÐÏß³ÌÕâ¸ö¸ÅÄî¡£ºÇºÇ£¬ÊDz»ÊÇLinuxºÜÂäºóÄØ£¬²»ÊÇ£¬Ç¡Ç¡Ïà·´£¬LinuxÌṩÁËÁíÒ»¸ö¸ÅÄî——Çá½ø³Ì£¬Æä¸ü¾ßÓÐÀ©Õ¹ÐÔ£¬¸üΰ´ó¡£
LinuxÊÇÖ§³Ö¶àÏ̵߳ŦÄܵģ¬Ö»²»¹ýÊÇͨ¹ýÒ»¸ö¸ÅÄî——ÇáÁ¿¼¶½ø³ÌÀ´ÊµÏֵġ£
´ÓÄں˹۵㿴£¬½ø³ÌµÄÄ¿µÄ¾ÍÊǵ£µ±·ÖÅäϵͳ×ÊÔ´£¨CPUʱ¼ä¡¢ÄÚ´æµÈ£©µÄʵÌå¡£µ±Ò»¸ö½ø³Ì´´½¨Ê±£¬Ëü¼¸ºõÓ븸½ø³ÌÏàͬ¡£Ëü½ÓÊܸ¸½ø³ÌµØÖ·¿Õ¼äµÄÒ»¸ö£¨Âß¼£©¿½±´£¬²¢´Ó½ø³Ì´´½¨ÏµÍ³µ÷Óã¨fork£©µÄÏÂÒ»ÌõÖ¸ÁʼִÐÐÓ븸½ø³ÌÏàͬµÄ´úÂë¡£¾¡¹Ü¸¸×Ó½ø³Ì¿ÉÒÔ¹²Ïíº¬ÓгÌÐò´úÂ루ÕýÎÄ£©µÄÒ³£¬µ«ÊÇËüÃǸ÷×ÔÓжÀÁ¢µÄÊý¾Ý¿½±´£¨°üÀ¨¶ÑºÍÕ»£¬Ð´Ê±ÔÙ¿½±´£©£¬Òò´Ë×Ó½ø³Ì¶ÔÒ»¸öÄÚ´æµ¥ÔªµÄÐ޸ĶԸ¸½ø³ÌÊDz»¿É¼ûµÄ¡£
Èç½ñµÄUNIXÄÚºËÔçÒѰÚÍÑÁËÕâÖÖ¼òµ¥µÄ½ø³Ì´´½¨Ä£Ê½£¬´ó¶àÊýUNIXϵͳ֧³Ö¶àÏß³ÌÓ¦ÓóÌÐò£ºÓµÓкܶàÏà¶Ô¶ÀÁ¢Ö´ÐÐÁ÷µÄÓû§³ÌÐò¹²ÏíÓ¦ÓóÌÐòµÄ´ó²¿·ÖÊý¾Ý½á¹¹¡£ÔÚÕâÑùµÄ ......
fg¡¢bg¡¢jobs¡¢&¡¢ctrl + z¶¼ÊǸúϵͳÈÎÎñÓйصģ¬ËäÈ»ÏÖÔÚ»ù±¾Éϲ»ÔõôÐèÒªÓõ½ÕâЩÃüÁµ«Ñ§»áÁËÒ²ÊǺÜʵÓõÄ
Ò»¡£& ×î¾³£±»Óõ½
Õâ¸öÓÃÔÚÒ»¸öÃüÁîµÄ×îºó£¬¿ÉÒÔ°ÑÕâ¸öÃüÁî·Åµ½ºǫִ́ÐÐ
¶þ¡£ctrl + z
¿ÉÒÔ½«Ò»¸öÕýÔÚǰִ̨ÐеÄÃüÁî·Åµ½ºǫ́£¬²¢ÇÒÔÝÍ£
Èý¡£jobs
²é¿´µ±Ç°ÓжàÉÙÔÚºǫ́ÔËÐеÄÃüÁî
ËÄ¡£fg
½«ºǫ́ÖеÄÃüÁîµ÷ÖÁǰ̨¼ÌÐøÔËÐÐ
Èç¹ûºǫ́ÖÐÓжà¸öÃüÁ¿ÉÒÔÓà fg %jobnumber½«Ñ¡ÖеÄÃüÁîµ÷³ö£¬%jobnumberÊÇͨ¹ýjobsÃüÁî²éµ½µÄºǫ́ÕýÔÚÖ´ÐеÄÃüÁîµÄÐòºÅ(²»ÊÇpid)
Îå¡£bg
½«Ò»¸öÔÚºǫ́ÔÝÍ£µÄÃüÁ±ä³É¼ÌÐøÖ´ÐÐ
Èç¹ûºǫ́ÖÐÓжà¸öÃüÁ¿ÉÒÔÓÃbg %jobnumber½«Ñ¡ÖеÄÃüÁîµ÷³ö£¬%jobnumberÊÇͨ¹ýjobsÃüÁî²éµ½µÄºǫ́ÕýÔÚÖ´ÐеÄÃüÁîµÄÐòºÅ(²»ÊÇpid)
LinuxÏÂʹÓÃShellÃüÁî¿ØÖÆÈÎÎñJobsÖ´ÐÐ
ÏÂÁÐÃüÁî¿ÉÒÔÓÃÀ´²Ù×ݽø³ÌÈÎÎñ£º
ps Áгöϵͳ ÖÐÕýÔÚÔËÐеĽø³Ì£»
kill ·¢ËÍÐźŸøÒ»¸ö»ò¶à¸ö½ø³Ì£¨¾³£ÓÃÀ´É±ËÀÒ»¸ö½ø³Ì£©£»
jobs Áгöµ±Ç°shell»·¾³ÖÐÒÑÆô¶¯µÄÈÎÎñ״̬£¬Èôδָ¶¨jobsid£¬ÔòÏÔʾËùÓлµÄÈÎÎñ״̬ÐÅÏ¢£»Èç¹û±¨¸æÁËÒ»¸öÈÎÎñµÄÖÕÖ¹(¼´ÈÎÎñµÄ״̬±»±ê¼ÇΪ Terminated)£¬shell ´Óµ±Ç°µÄshell»·¾³ ÒÑÖªµÄÁбíÖÐɾ³ýÈÎÎñµÄ½ø³Ì±êʶ£»
bg ½«½ø³Ì° ......
•ËùÓбàÒëµ÷ÊÔÃüÁî¶¼ÔÚui_ref/trunk/bld_xxxÏÂÃæÖ´ÐÐ,¾ßÌåÄĸöbldÒª¸ù¾ÝÄúʹÓõİå×Ó¾ö¶¨;
•Make #±àÒëÈ«²¿,°üÀ¨kernel, busybox, packagesµÈ;
•Make root #±àÒëÎļþϵͳ;
•Make yaffs#°ÑÎļþϵͳ´ò°üÉú³ÉyaffsÎļþϵͳµÄÓ³Ïñrootfs.yaffsimage,²¢±£´æÔÚbuildĿ¼;
•±àÒëÄÚºË
▫Make k.menuconfig#ÅäÖÃÄÚºË,¾ßÌåÅäÖ÷½·¨ºÍÖ±½ÓÅäÖÃÄÚºËÒ»ÖÂ,ͬʱҲ¿ÉÒÔʹÓÃmake k.config, make k.xconfigµÈ;
▫Make k#±àÒëÄÚºË;
▫Make k.modules#±àÒëÄÚºËÄ£¿é,²¢×Ô¶¯°²×°µ½Ö¸¶¨µÄROOTFS/lib/modulesĿ¼;
▫Make k.clean#ɾ³ýÄں˱àÒëµÄÁÙʱÎļþ,Èç¹ûÄÚºË×öÁË´óµÄ¸Ä¶¯»ò¸üÐÂ,ÐèÒªÕâô×ö,ÒÔ·ÀÖ¹²¥·Å²¿·ÖûÓÐÖØÐ±àÒëµ¼ÖÂÎÊÌâ;
•±àÒëbusybox
▫Make b.menuconfig#ÅäÖÃbusybox
▫Make b#±àÒëbusybox
▫Make b.xxx#µ÷ÓÃbusyboxÄÚ²¿µÄÃüÁî,°üÀ¨clean,install;µÈ
•±àÒëpackages(Èí¼þ°ü)
▫Make p.menuconfig#ÅäÖÃÈí¼þ°ü
▫Make p#±àÒëÈí¼þ°ü;
▫Make p.clean#ɾ³ý±àÒëÉú³ÉµÄÎļþ.
▫Make p.distclean#ɾ³ýÕû¸ö±àÒëÉú³ÉµÄpackagesĿ¼;
▫Make p.${PACKAGES_NAME}.all#±àÒë¾ßÌåµ ......