[[Calendar(blog,noweek)]] [[TableOfContents]] = u-boot porting to PXA270 = == ÀÌ ¹®¼­ÀÇ ¸ñÀû == ÀÌ ¹®¼­´Â ±è±â¿À´ÔÀÇ U-boot 1.1.2 Porting Guide to PXA270À» Âü°íÇÏ¿© ½ÇÁ¦·Î pxa270 º¸µå¿¡ u-boot¸¦ Æ÷Æà ÀÛ¾÷À» ÇÏ´Â °úÁ¤À» ¸Þ¸ðÇÑ °ÍÀÔ´Ï´Ù. ÇöÀç ÁøÇàÁßÀÔ´Ï´Ù. == START == * u-boot-1.1.4ÀÇ lubbock board¸¦ ¼öÁ¤ÇÏ¿© pxa270 ¼³Á¤ÆÄÀϵéÀ» »ý¼º. * boot.bin ÆÄÀÏ »ý¼º ¼º°ø * ±×·¯³ª lubbock´Â pxa250À» »ç¿ëÇϹǷΠ³»°¡ »ç¿ëÇÒ pxa270 SKKUº¸µå¿Í´Â Â÷ÀÌ°¡ ÀÖ´Ù. * ¸Þ¸ð¸® ¸Ê ¼³Á¤, ¸Þ¸ð¸® ÄÁÆ®·Ñ·¯ ¼³Á¤, ³×Æ®¿öÅ© µð¹ÙÀ̽º ¼³Á¤ ¼öÁ¤ * ÇÁ·Î¼¼¼­ ¼Óµµ°¡ »¡¶óÁ³°í ¸Þ¸ð¸® Ŭ·°µµ »¡¶óÁ³À¸¹Ç·Î Ŭ·°°ü·Ã ÄÚµå ¼öÁ¤ == 2006.03.03 == *''' Äڵ带 ¼öÁ¤Çϱ⿡ ¾Õ¼­ Çϵå¿þ¾î¿¡ °üÇÑ ÀÌÇØ°¡ ±âº»µÇ¾î¾ß ÇÔ.''' * ÂüÁ¶ : PXA27x Processor Family Developer's Manual * SDRAM : K4S561632C_TL75(64MByte = 32MByte X 2) ||½ÃÀÛÁÖ¼Ò||||0xa400 0000|||| ||Å©±â ||||64MByte |||| * ¼Óµµ¼³Á¤ : PXA270Àº ÃÖ´ë 104MHzÀÇ ¸Þ¸ð¸® Ŭ·°À» Áö¿ø * ÇÁ·Î¼¼¼­´Â 520MHzÀÇ Åͺ¸¸ðµå°¡ µÇ¾î¾ß ÇÏ°í ½Ã½ºÅÛ¹ö½º´Â 208MHz * ¸Þ¸ð¸® ÄÁÆ®·Ñ·¯¿¡ ÀԷµǴ Ŭ·°ÀÌ 208MHz°¡ µÇ¾î¾ß SDRAMŬ·°ÀÌ 104MHz * Ç÷¡½Ã ¸Þ¸ð¸® * ÇÁ·Î¼¼¼­ÀÇ ¼Óµµ * ¼³¸íÀ» ºÁµµ ¹«½¼ ¼Ò¸®ÀÎÁö Àß ¸ð¸£°ÚÁö¸¸ ÀÏ´Ü ÄÚµå¼öÁ¤Çϸ鼭 ÀÌÇØÇϵµ·Ï ÇÑ´Ù. === include/configs/skku.h === * ÀÌ ÆÄÀÏÀ» ÀÌÇØÇϱâ À§ÇØ ºêÆ®·Î´õ ¼Ò½º¿¡ ÀÖ´Â README¸¦ Àо´Ù. * Àǹ®Á¡ * ¿Ö Ä¿³ÎÀÌ ·ÎµåµÉ ÁÖ¼Ò°¡ 0xa4008000 ~ 0xa4080000Àΰ¡? * SDRAMÀÇ ½ÃÀÛÁÖ¼Ò´Â 0xa4000000Àε¥ ARM°è¿­ ÇÁ·Î¼¼¼­¿¡¼­´Â ¹Ýµå½Ã SDRAMÀÇ ½ÃÀÛ ¹°¸®ÁÖ¼Ò + 0x8000À¸·Î ÇؾßÇÑ´Ù. * ¼öÁ¤¿Ï·á === ÃʱâÈ­ ÄÚµå ¼öÁ¤Çϱâ === * board/skku/memsetup.S : ¸Þ¸ð¸® ÄÁÆ®·Ñ·¯ ¼³Á¤. * SDRAM¼Óµµ, ¸®ÇÁ·¹½Ã ÁÖ±â, Ç÷¡½Ã ¸Þ¸ð¸® µ¿ÀÛ ¼³Á¤ * board/skku/skku.c : ƯÁ¤ º¸µå¿¡ ¸Â´Â Çϵå¿þ¾î ¼³Á¤ * Ä¿³Î¿¡ ³Ñ±â±â À§ÇÑ ºÎÆà ÆĶó¹ÌÅÍÀÇ ÁÖ¼Ò ¼³Á¤ * SDRAMÀÇ ½ÃÀÛ ÁÖ¼Ò¿Í Å©±â¸¦ ¼³Á¤(ARM¿ë ¸®´ª½ºÄ¿³Î¿¡¼­´Â SDRAM½ÃÀÛÁÖ¼Ò + 0x100¹øÁö¿¡) * board/skku/flash.c : º¸µå¿¡¼­ »ç¿ëÇÏ´Â Ç÷¡½Ã ¸Þ¸ð¸®ÀÇ µ¿ÀÛ¿¡ °ü·ÃµÈ ÇÔ¼öµé * u-boot¿¡¼­´Â flash_init, flash_erase, flash_print_info, write_buff¸¦ °øÅëÀ¸·Î ÀÛ¼º * common/flash.c & common/cmd_flash.c¿¡¼­ ÇÔ¼ö »ç¿ë * cpu/pxa270/start.S : ÇÁ·Î¼¼¼­ÀÇ ¼Óµµ¼³Á¤°ú SDRAMÀ¸·Î ºÎÆ®·Î´õ ÀÚ½ÅÀ» º¹»ç ---- * ½ÇÇà¼ø¼­ * start.S¿¡¼­ memsetup.S È£Ãâ, ¸Þ¸ð¸® ÄÁÆ®·Ñ·¯ ¼³Á¤ * ºÎÆ®·Î´õ ÀÚ½ÅÀ» SDRAMÀ¸·Î º¹»çÇÏ°í SDRAMÀ¸·Î Á¡ÇÁ. * lib_arm/board.cÀÇ start_armbootÇÔ¼ö°¡ ½ÇÇà * include/configs/skku.h¿¡¼­ ¼³Á¤ÇÑ ³»¿ë¿¡ µû¶ó ³ª¸ÓÁö Çϵå¿þ¾îµé¿¡ ´ëÇÑ ¼³Á¤ * »ç¿ëÀÚÀÇ ¸í·É ´ë±â * »ç¿ëÀÚ°¡ Ä¿³ÎÀ» ·ÎµåÇϵµ·Ï ¸í·É * lib_arm/armlinux.c¿¡ ÀÖ´Â do_bootm_linuxÇÔ¼ö°¡ È£Ãâ * Ä¿³Î À̹ÌÁö¸¦ ·ÎµåÇÏ°í Ä¿³Î·Î Á¡ÇÁÇÑ´Ù. ==== cpu/pxa270/start.S ==== {{{#!vim asm .globl _start _start: b reset }}} ÀÌ ºÎºÐÀº ÆÄÀÏÀÇ ½ÃÀÛ ÁöÁ¡À¸·Î ¹°¸®ÀûÀ¸·Î 0x00000000¹øÁö¿¡ ³õÀÌ°Ô µÈ´Ù. 0x00000000¹øÁö¿¡´Â Ç÷¡½¬ ¸Þ¸ð¸®°¡ ³õ¿© ÀÖ´Ù. Áï, _start ÁöÁ¡ÀÌ 0x00000000 ¹øÁö¿¡ ³õÀÌ°Ô µÇ¸ç, "b reset" ¸í·É¾î´Â 0x00000000 ¹øÁö¿¡ ³õÀÌ´Â ÃÖÁ¶ÀÇ ¸í·É¾î°¡ µÈ´Ù. ÀÌ ¸í·É¾î¿¡ ÀÇÇØ CPU´Â reset À§Ä¡·Î ¶Ú´Ù. ".globl _start"¿¡¼­ .globlÀº Àüü ¸ñÀû ÆÄÀÏÀ» ¸µÅ©ÇÒ ¶§ _start ½É¹úÀ» ¸µÄ¿,·Î´õ°¡ º¼¼ö ÀÖµµ·Ï ÇÏ´Â ¿ªÈ°À» ÇÑ´Ù. {{{#!vim asm .balignl 16,0xdeadbeef }}} ÀÌ ºÎºÐÀº ´ÙÀ½¿¡ ¿Ã Äڵ带 16 ¹ÙÀÌÆ® °æ°è(¹ÙÀδõ¸®ÀÎÁö ¸ðÀÎÁö, word´ÜÀ§·Î ¸ÂÃߴ°Í)¿¡ ³õ°í Áß°£¿¡ ºñ°Ô µÇ´Â ºÎºÐÀ» 4¹ÙÀÌÆ® Å©±âÀÇ 0xdeadbeef°ªÀ¸·Î ä¿ì¶ó´Â ¾î¼Àºí·¯ Áö½Ã¾î. {{{#!vim asm reset: mrs r0,cpsr bic r0,r0,#0x1f orr r0,r0,#0xd3 msr cpsr,r0 }}} ¿©±â´Â cpsr ·¹Áö½ºÅÍÀÇ °ªÀ» r0 ·¹Áö½ºÅÍ·Î Àоî¿ÂÈÄ, r0 ·¹Áö½ºÅÍÀÇ ÇÏÀ§ ´Ù¼¸ ºñÆ®¸¦ ÀÌÁø¼ö 00000À¸·Î ä¿ì°í ´Ù½Ã ÇÏÀ§ 5 ºñÆ®¿Í 5,6,7¹ø ºñÆ®¸¦ ÀÌÁø¼ö 11010011(0xd3) °ªÀ¸·Î ä¿îÈÄ, ¼öÁ¤ÇÑ r0 ·¹Áö½ºÅÍÀÇ °ªÀ» cpsr ·¹Áö½ºÅÍ¿¡ ¾²´Â ºÎºÐÀÌ´Ù. ÀÌ ºÎºÐÀº CPU¸¦ SVC32 mode·Î ÀüȯÀ» Çϸç, IRQ¿Í FIQ¸¦ ²ô´Â ¿ªÈ°À» ÇÑ´Ù. == 2006.03.04 == * start.S ÄÚµå ¼öÁ¤ ¿Ï·á. === board/skku/memsetup.S === * u-boot°¡ ¹öÀü¾÷ÀÌ µÇ¸é¼­ memsetup.S°¡ lowlevel_init.S·Î ÆÄÀϸíÀÌ º¯°æ됬À½. ÇÏÁö¸¸ ÄÚµåÀÇ ³»¿ëÀº Àü°ú µ¿ÀÏ. * Äڵ带 ±×´ë·Î µû¶ó¼­ ¼öÁ¤¸¸ ÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó ¿Ö ÀÌ·± ½ÄÀ¸·Î ¼³Á¤ÀÌ µÇ´ÂÁö ÀÌÇØ°¡ ÇÊ¿ä. ÀÏ´Ü ¸Þ´º¾óÀ» º¸°í ÀÖÀ¸³ª ÀÌÇØ°¡ ¾È°¨. * ¸Þ¸ð¸®¸¦ ¼ÂÆÃÇϴµ¥ À־ SDRAM°ú FlashÀÇ Á¤È®ÇÑ '''µ¿ÀÛ¿ø¸®'''¿¡ ´ëÇÑ ÀÌÇØ°¡ ÇÊ¿äÇÔ. ==== Synchronous DRAM ==== Synchronous DRAM? * SDRAMÀº cpuÀÇ Å¸Àֿ̹¡ ¸ÂÃß¾î µ¿±âÈ­µÇµµ·Ï µðÀÚÀÎµÈ ÃÖÃÊÀÇ DRAM ±â¼úÀÌ´Ù. SDRAMÀº ±Ô°Ý SDRAM Äھ ¹ÙÅÁÀ¸·Î Çß°í, ±Ô°Ý DRAM°ú À¯»çÇÏ°Ô ÀÛµ¿ÇÏÁö¸¸, À̵éÀ» Çõ½ÅÀûÀ¸·Î ¸¸µå´Â ¸î°¡ÁöÀÇ ±¸º°µÇ´Â Ư¡µéÀ» °¡Áö°í ÀÖ´Ù. * Synchoronous Operation : Æò¹üÇÏ°í AsynchronousÀÎ DRAM°ú ´Þ¸® SDRAMÀº ¸¶ÀÌÅ©·ÎÇÁ·Î¼¼¼­ÀÇ ´Ü°èº° ¿î¿ëÀ» Á¶Á¤ÇÏ´Â ½Ã½ºÅÛ Å¬·°ÀÌ SDRAM¿î¿ëÀ» Á¶Á¤ÇÒ ¼ö ÀÖ°Ô Å¬·° ÀÔ·ÂÀÌ µÇ¾îÀÖ´Ù. ÀÌ°ÍÀº ¸Þ¸ð¸® ÄÜÆ®·Ñ·¯°¡ ¾ðÁ¦ ¿äûÇÑ Á¤º¸°¡ ¿Ï·áµÇ¾ú´Â°¡ÀÇ Á¤È®ÇÑ Å¬·° »çÀÌŬÀ» ¾Ë°í ÀÖ´Ù´Â °ÍÀ» ÀǸ¶ÇÑ´Ù. ÀÌ°ÍÀ¸·Î ÀÎÇØ, ÇÁ·Î¼¼¼­°¡ ¸Þ¸ð¸® ¿¢¼¼½º µ¿¾È ±â´Ù¸®´Â °ÍÀ» ¾ø¾Ö ÁØ´Ù. * ½ÇÁ¦·Î SKKU board¿¡¼­µµ PXA270¿¡¼­ SDCLK1À» SDRAM¿¡ °ø±ÞÇؼ­ SDRAMÀÇ ¼Óµµ¸¦ Á¶Á¤ÇÑ´Ù. * SDRAM Interface * CLK : clock ÇÁ·Î¼¼¼­¿¡¼­ »ý¼º * CLK : clock enable * nCS : chip selector * A0:A12 : addresss * BA0:BA1 : bank address * DQ0:DQ15 : data * nRAS : Row Strobe * nCAS : Column Strobe * nWE : write enable * DQM : DQ input/output Mask * »ç½Ç ÇÁ·Î¼¼¼­¿¡ SDRAM ÄÁÆ®·Ñ·¯°¡ ÀÖ¾î º¹ÀâÇÑ ³»ºÎ µ¿ÀÛÀº ¾Ë¾Æ¼­ ó¸®ÇØÁØ´Ù. ÇÁ·Î¼¼¼­¿¡´Â ÀÌ SDRAM ÄÁÆ®·Ñ·¯¸¦ Á¦¾îÇÏ´Â ½Ã½ºÅÛ ·¹Áö½ºÅÍ°¡ ÀÖ°í ÀÌ ·¹Áö½ºÅ͸¦ Á¶ÀÛÇÏ´Â ¹ýÀ» ¾Ë¾Æ¾ß ÇÑ´Ù. ===== SDRAM ¾îµå·¹½Ì ±âº»¿ø¸® ===== * column address, row address, bank address°¡ (x, y, z)°¡ µÇ¾î Á÷À°¸éüÀÇ ¾î´À ÇÑ°÷(=1Byte)¸¦ ÁöÁ¤ÇÏ°Ô µÈ´Ù. ±×¸®°í column°ú row µÎ ÁÖ¼Ò¸¦ ½Ã°£ Â÷À̸¦ µÎ¾î A0:A12 ÇÉ¿¡´Ù°¡ ½Ç¾îÁÖ°í(À̸¦ À§ÇØ RAS,CAS°¡ ÀÖ´Ù.) bank address´Â 2ÇÉÀÌ´Ï, BA0, BA1À» »ç¿ëÇÏ´Â °ÍÀÌ´Ù. * µ¿ÀÛ¼ø¼­´Â nCS¿Í RAS½ÅÈ£¸¦ È°¼ºÈ­ ½ÃÄѼ­ Row Address¸¦ ÁÖ¼Ò¹ö½º¿¡ ½Ç¾îÁØ´Ù. ±× ´ÙÀ½ RAS¸¦ ºñÈ°¼ºÈ­ ½ÃÅ°°í CAS½ÅÈ£¸¦ È°¼ºÈ­ ½ÃÅ°°í, Àб⳪ ¾²±â µ¿ÀÛ¿¡ µû¶ó¼­ nWE½ÅÈ£¸¦ ÁÖ¸é µÇ´Â °ÍÀÌ´Ù. °á±¹, ¿øÇϴ ƯÁ¤ÁÖ¼Ò¸¦ ÁöÁ¤ÇÏ°í ³ª¸é, °Å±â¼­ºÎÅÍ Column Address¸¦ Çϳª¾¿ Áõ°¡½ÃÄÑ°¡¸ç µ¥ÀÌÅ͸¦ ¹ö½ºÆ®ÇÏ°Ô ¾×¼¼½ºÇÏ´Â °ÍÀÌ´Ù. ¸ðµç µ¿ÀÛÀº CLKÀÇ positive edge¿¡ µ¿±âµÇ¾î µ¿ÀÛÇÑ´Ù. == 2006.03.08 == * ¿©ÀüÈ÷ ºÎÆ®·Î´õ µ¿ÀÛ ºÒ´É. ¼±¹è°¡ ¸¸µç À̹ÌÁö¸¦ ¿Ã·ÈÀ»¶§ Á¤»óÀûÀ¸·Î µ¿ÀÛÇÏ´Â °ÍÀ¸·Î ºÁ¼­´Â ¿ª½Ã ÄÚµù»óÀÇ ½Ç¼öÀεí. ¹®¼­·Î µÇ¾îÀÖ´Â °ÍÀ» ±×´ë·Î º¸°í º£³¢´Âµ¥µµ ¾È µÈ´Ù´Ï... ´Ù½Ã Çѹø Äڵ带 º¸¸é¼­ Çϵå¿þ¾î ¼³Á¤¿¡ °üÇÑ ÀÌÇظ¦ ÇÏ°í, serial_test.S¸¦ ÂüÁ¶ÇÏ¿© ºÎÆ® ´Ü°è´Ü°è¸¶´Ù °£´ÜÇÑ ½Ã¸®¾ó Ãâ·ÂÇÏ´Â Äڵ带 Áý¾î³Ö¾î ¾î´À ´Ü°è°¡ À߸øµÇ¾ú´ÂÁö °ËÃâÇؾßÇÔ. * ¿ø·¡ÀÇ start.S¸¦ start.S_·Î ¹é¾÷Çسõ°í start.S¸¦ ¼öÁ¤ÇÔ. === start.S ¼öÁ¤ === * ¸ñÇ¥ : ¸Ç óÀ½¿¡ ÀÏ´Ü ½Ã¸®¾óÀ» ¼³Á¤ÇÏ°í ½Ã¸®¾ó Ãâ·ÂÀ» ÀÌ¿ëÇؼ­ °¢ ´Ü°è´Ü°è¸¦ È®ÀÎÇÑ´Ù. == 2006.03.10 == * Ãæ°Ý : FFUART¸¦ »ç¿ëÇϱâ À§Çؼ± GPIO¸¦ ¼³Á¤ÇØ¾ß Çϴµ¥ ±×³É ¹«Åδë°í FFUART¸¸ ¼³Á¤ÇÏ°í ¿Ö ½Ã¸®¾óÀÌ ¾È ³ª¿À³ª ÇÏ°í ÀÖ¾úÀ½. == 2006.03.15 == * u-boot µ¿ÀÛ ¼º°ø. ÀÏ´Ü Ä¿³ÎÀº ¿Ã¸®Áö ¾Ê°í ±×Àü±îÁöÀÇ µ¿ÀÛÀº ½Ã¸®¾óÀ» ÅëÇؼ­ È®ÀÎÇß½À´Ï´Ù. * µ¿ÀÛÀ» ¾È Çß´ø ¿øÀÎÀº * ÀÏ´Ü u-boot 1.1.2 porting guide to pxa270 ¹®¼­»ó¿¡´Â À߸øµÈ ¿À·ù¶óµçÁö ÇÏ´Â °ÍÀÌ ÀüÇô ¾ø½À´Ï´Ù. * À§¿¡ Á¦°¡ Âü°íÇÑ Æ÷Æù®¼­´Â u-boot-1.1.2¸¦ ±â¹ÝÀ¸·Î ÇÏ°í ¹®¼­¿¡ º¸½Ã¸é ELDK 3.1.1À» »ç¿ëÇÏ°í ÀÖ½À´Ï´Ù. ±×·¯³ª Àú´Â ELDK 4.0 ÃֽŹöÀüÀ» »ç¿ëÇÏ¿© Æ÷ÆÃÀ» ÇÏ°íÀÚ Çß½À´Ï´Ù. * cpu/cpuname/config.mk ÆÄÀϾÈÀÇ °¢ cpuÀÇ Å¸ÀÔ¿¡ ¸Â°Ô cc flas¸¦ ¼³Á¤Çϴµ¥ ÀÌ·¯ÇÑ ¿É¼ÇµéÀÌ ¹öÀü¾÷ÀÌ µÇ¸é¼­ º¯°æÀÌ µÇ¾ú´Ù. ¹®¼­»óÀÇ ¿É¼ÇÀ» º¸ÀÚ¸é {{{ }}} = °Ô½ÃÆÇ = [[comment(@PAGE)]] ---- ¾ÆÁ÷µµ start.S ·Î ºÎÆÃÀÌ ºÒ°¡´ÉÇϽÅÁö¿ä? -- jachin [[Date(2006-03-12T20:47:52)]] ---- ÀÏ´Ü ¼º°øÀº ÇϱäÇߴµ¥¿ä. Á» ÀÌ»óÇÑÁ¡ÀÌ ÀÖ±º¿ä. Áö±ÝÀº ÀÏ´Ü ¸®´ª½º µð¹ÙÀ̽º µå¶óÀ̹ö °øºÎ¿¡ ÁýÁßÀÔ´Ï´Ù. -- [bluster] [[DateTime(2006-04-07T19:01:13)]]