|
http://www.hackerschool.org/HS_Boards/zboard.php?AllArticle=true&no=2033 [º¹»ç]
¾È³çÇϼ¼¿ä. C ¾ð¾î °Á¸¦ ¿Ã¸®·Á°í ÇÕ´Ï´Ù.
¾à 10¿©³âÀ» embedded software °³¹ßÀ» ÇØ¿À¸é¼
¾Ë°ÔµÈ Áö½ÄµéÀ» ȸ¿ø ¿©·¯ºÐ°ú ÇÔ²² °øÀ¯ÇÏ·Á°í ÇÕ´Ï´Ù.
Ȥ½Ã¶óµµ °Á¿¡ ¿À·ù³ª ±Ã±ÝÇÑ Á¡Àº ¾ðÁ¦¶óµµ ¾Ë·ÁÁֽñ⠹ٶø´Ï´Ù.
C¾ð¾î¸¦ °øºÎÇÏ´Ù º¸¸é, C/C++ Compiler Tool ChainÀ̶ó´Â ¸»À» Á¢ÇÏ°Ô µË´Ï´Ù.
À̹ø °Á¿¡¼´Â Compiler Tool ChainÀ̶õ ¹«¾ùÀΰ¡¿¡ ´ëÇØ¼ »ìÆìº¸µµ·Ï ÇϰڽÀ´Ï´Ù.
# Compiler Tool Chain
- C code¸¦ ½ÇÇà°¡´ÉÇÑ binary·Î ¸¸µé±â À§Çؼ ÇÊ¿äÇÑ tool µéÀÇ ÁýÇÕ
Tool ChainÀº ±âº»ÀûÀ¸·Î ´ÙÀ½°ú °°Àº ÆÄÀϵéÀ» Æ÷ÇÔÇϰí ÀÖ´Ù.
- compiler, linker ½ÇÇàÆÄÀÏ
- ±âŸ source build¸¦ À§ÇÑ utility ½ÇÇà ÆÄÀϵé
- Á¦°øÇÏ´Â library ¹× header ÆÄÀϵé
- ¹®¼
Source Code´Â compiler¿¡ ÀÇÇØ¼ object code ÇüÅ·Πº¯È¯ÀÌ µÇ°í,
object code´Â linker¿¡ ÀÇÇØ¼ ½ÇÇà °¡´ÉÇÑ binary ¶Ç´Â library·Î º¯È¯ÀÌ µË´Ï´Ù.
¿¹¸¦ µé¾î¼ window pc¿¡¼ c programmingÀ» Çϱâ À§Çؼ´Â
compiler tool chainÀÌ ÇÊ¿äÇÕ´Ï´Ù.
http://www.mingw.org/ ¿¡¼ mingw¶ó´Â ¹«·á c compiler tool chainÀ» ´Ù¿î¹Þ¾Æ¼ »ç¿ëÇÒ ¼öµµ ÀÖ°í,
Microsoft VC++À» ¼³Ä¡Çؼ »ç¿ëÇÒ ¼öµµ ÀÖ½À´Ï´Ù.
À̰æ¿ì¿¡´Â window pc¿¡¼ Build(Compile & Link)ÇÑ °á°ú¹°ÀÌ .exe ÆÄÀÏ ÇüÅÂÀÇ
½ÇÇàÆÄÀÏ·Î ³ª¿À°ÔµÇ¸ç, À̰ÍÀº window pc¿¡¼¸¸ ½ÇÇàµÉ ¼ö ÀÖ½À´Ï´Ù.
Note:
IDE(Integrated Development Environment)¿Í Compiler Tool ChainÀº ´Ù¸¥ ÀÇ¹Ì ÀÔ´Ï´Ù.
mingw´Â ¼ø¼öÇÑ compiler tool chain¸¸ Áö¿øÇÕ´Ï´Ù.
VC++Àº IDE¸¦ ¼³Ä¡ÇϰԵǸé, IDE¿Í compiler tool chainÀÌ ÀÚµ¿ÀûÀ¸·Î °°ÀÌ ¼³Ä¡µË´Ï´Ù.
IDE´Â compiler tool chain + source code editor + debugging ȯ°æ µîÀ» GUI applicationÀ¸·Î
ÅëÇÕÀûÀ¸·Î ¸¸µé¾î ³õÀº °³¹ß tool ÀÔ´Ï´Ù.
IDE´Â Mouse click ¹× ¸Þ´º Á¶ÀÛÀ¸·Î source code¸¦ ½±°Ô build(compile & link) ÇÒ ¼ö ÀÖµµ·Ï
¸¸µé¾î ³õÀº application À̸ç, ÃÖÁ¾ÀûÀ¸·Î´Â compiler tool chainÀ» ½ÇÇà½ÃÄѼ build¸¦ ¼öÇàÇÕ´Ï´Ù.
¹Ý¸é¿¡, compiler tool chainÀº GUI¸¦ Áö¿øÇÏÁö ¾Ê´Â console application µéÀÇ ÁýÇÕÀÔ´Ï´Ù.
(IDE¸¦ »ç¿ëÇÏÁö ¾Ê°íµµ dos â¿¡¼ Á÷Á¢ compiler tool chainÀ» ÀÌ¿ëÇØ¼ build°¡ °¡´É...)
¶ÇÇÑ, ARM core¿¡¼ ±¸µ¿µÇ´Â software(firmware)¸¦ ¸¸µé±â À§Çؼ´Â
ÇØ´ç ARM core¸¦ À§ÇÑ compiler tool chainÀÌ ÇÊ¿äÇÕ´Ï´Ù.
ÀÌ °æ¿ì¿¡´Â window pc¿¡¼ ÇØ´ç compiler tool chainÀ» ÀÌ¿ëÇØ¼,
ARM core¸¦ À§ÇÑ software(firmware)¸¦ buildÇϰí,
build ÇÑ °á°ú¹°Àº ÇØ´ç ARM core¿¡¼¸¸ ½ÇÇà(±¸µ¿) µÉ ¼ö ÀÖ½À´Ï´Ù.
ÀÌ·¯ÇÑ °æ¿ì¿¡´Â Cross Compiler Tool ChainÀ̶ó°í ÇÕ´Ï´Ù.
(BuildÇÏ´Â system(PC)¿Í ½ÇÇàµÇ´Â system(ARM core)ÀÌ ¼·Î ´Ù¸¦ °æ¿ì...)
Compiler¸¦ ±¸µ¿Çϱâ À§ÇÑ ÀÔ·ÂÀº Å©°Ô source file°ú optionÀÔ´Ï´Ù.
¿¹¸¦ µé¾î¼,
compiler.exe source.c source.obj option1 option2 ...
À̶ó°í ¸í·ÉÀ» Ä¡¸é, source.c´Â ÇØ´ç option¿¡ ÀÇÇØ¼ source.obj ·Î compileÀÌ µË´Ï´Ù.
À̶§¿¡ optionÀº °¢°¢ÀÇ compiler¸¶´Ù ´Ù¸¨´Ï´Ù.
µû¶ó¼, °³¹ßÀÚ´Â »ç¿ëÇϰíÀÚ ÇÏ´Â compiler tool chainÀÇ ¹®¼¸¦ º¸°í,
¾î¶°ÇÑ optionÀÌ ¾î¶»°Ô »ç¿ëÀÌ µÇ´ÂÁö ¹Ì¸® È®ÀÎÀ» ÇØ¾ß ÇÕ´Ï´Ù.
Linker¸¦ ±¸µ¿Çϱâ À§ÇÑ ÀÔ·ÂÀº Å©°Ô object file°ú option, ±×¸®°í linker command fileÀÔ´Ï´Ù.
linker.exe obj1 obj2 obj3... option1 option2 ... linkerCommandFIle
À̶ó°í ¸í·ÉÀ» Ä¡¸é, °¢°¢ÀÇ obj1,2,3..°¡ ¸ðµÎ linker¿¡ ÀÇÇØ¼ linkingÀÌ µÇ¾î
ÇϳªÀÇ ½ÇÇà°¡´ÉÇÑ ÆÄÀÏ·Î º¯È¯ÀÌ µË´Ï´Ù.
À̶§¿¡, option ¶ÇÇÑ compiler tool chain¸¶´Ù ¾à°£¾¿ ´Ù¸£±â ¶§¹®¿¡,
°³¹ßÀÚ´Â Á¦°øµÇ´Â ¹®¼¸¦ ¹Ì¸® °øºÎÇØ¾ß ÇÕ´Ï´Ù.
Linker command fileÀ̶ó´Â °ÍÀº °³¹ßÀÚ°¡ ¿øÇÏ´Â memory allocationÀ» linker¿¡°Ô ¾Ë·ÁÁÝ´Ï´Ù.
Linker command file Å©°Ô µÎ°¡Áö·Î ±¸¼ºÀÌ µË´Ï´Ù.
- memory description
BuildµÈ ½ÇÇàÆÄÀÏÀÌ µ¹¾Æ°¥ systemÀÇ memory ±¸Á¶¸¦ linker¿¡°Ô ¾Ë·ÁÁÜ
- memory allocation
½ÇÇàÆÄÀÏÀÌ ¸¸µé¾î Áú ¶§ °³¹ßÀÚ°¡ ¿øÇÏ´Â ÇüÅ·Πmemory allocationÀ» ¼³Á¤ÇÒ ¼ö ÀÖÀ½
StackÀÇ À§Ä¡ ¹× Å©±â
HeapÀÇ À§Ä¡ ¹× Å©±â
CodeÀÇ À§Ä¡ ¹× Å©±â
±âŸ Global º¯¼öµéÀÇ À§Ä¡ ÁöÁ¤µî
Linker command fileÀÇ ¹®¹ý ¶ÇÇÑ °¢°¢ÀÇ tool chain¸¶´Ù ¼·Î ´Ù¸¨´Ï´Ù.
°³¹ßÀÚ´Â Á¦°øµÇ´Â ¹®¼¸¦ °øºÎÇØ¾ß¸¸ ÇÕ´Ï´Ù.
ÇϳªÀÇ core processor¿¡ ´ëÇØ¼µµ ¼·Î ´Ù¸¥ Compiler Tool ChainµéÀÌ Á¸ÀçÇÒ ¼ö ÀÖÀ¸¸ç,
´ëºÎºÐÀÇ compiler tool chainÀº ±âº»ÀûÀÎ »ç¿ë¹ýÀÌ °°Áö¸¸,
Áö¿øÇÏ´Â optionÀ̳ª ¹®¹ýµî¿¡¼ ¾à°£ÀÇ Â÷À̰¡ ÀÖÀ» ¼ö°¡ ÀÖ½À´Ï´Ù.
µû¶ó¼, °³¹ßÀÚ´Â Ç×»ó °°ÀÌ Á¦°øµÇ´Â ¹®¼¸¦ ¸ÕÀú study ÇÏ´Â ½À°üÀ» µé¿©¾ß ÇÒ °Í °°½À´Ï´Ù.
±×·¯ÇÑ ¹®¼¸¦ Á÷Á¢ Àо¸é¼ ¾ò´Â Áö½ÄµéÀÌ¾ß ¸»·Î ÂüÁö½ÄÀÎ °Í °°½À´Ï´Ù.
ÀüüÀûÀÎ Å« ±×¸²À» ºÁ¾ß ÇÕ´Ï´Ù.
¿äÁòÀº ´ëºÎºÐ VC++°ú °°Àº IDE¸¦ Á¦°øÇϱ⠶§¹®¿¡,
make file ±îÁö °øºÎÇÏÁö´Â ¾Ê´õ¶óµµ,
IDE¿¡¼ menu ¼³Á¤ ¹× clickÀ» ÇßÀ»¶§¿¡,
compiler tool chain¿¡¼ ¾î¶°ÇÑ µ¿ÀÛµéÀÌ ÀÌ·ç¾îÁö°Ô µÇ´ÂÁö
Å« ±×¸²À» ±×¸± ¼ö ÀÖ¾î¾ß ÇÕ´Ï´Ù.
¶ÇÇÑ, ÀÚ½ÅÀÌ »ç¿ëÇϰí ÀÖ´Â compiler tool chain¿¡ ´ëÇÑ ¹®¼¸¦ °øºÎÇØ¾ß¸¸,
IDE¸¦ »ç¿ëÇÒ ¶§¿¡, GUI¿¡ ÀÇÇØ¼ ¼³Á¤µÇ´Â optionµéÀ» Àß »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.
IDE´Â »ç¿ëÇÏ´Ù°¡ º¸¸é ÀÚ¿¬½º·´°Ô Å͵æµÇÁö¸¸,
compiler tool chainÀÇ ÀÚ¼¼ÇÑ »ç¿ë¹ýÀº ¹®¼¸¦ ÀÚ¼¼È÷ ºÁ¾ß ÇÕ´Ï´Ù.
ÀÌ·¸°Ô ÇϳªÀÇ tool chain¿¡ ´ëÇØ¼ ½ÀµæÀÌ µÇ¸é,
´Ù¸¥ processor³ª ´Ù¸¥ compiler tool chainÀ» »ç¿ëÇÏ°Ô µÇ´õ¶óµµ,
ºü¸¥ ½Ã°£ ¾È¿¡ ½±°Ô ÀûÀÀ(?)ÀÌ °¡´ÉÇÏ°Ô µË´Ï´Ù.
ÀÌ»óÀ¸·Î À̹ø °ÀÇ´Â ¸¶Ä¨´Ï´Ù.
Best Regards,
Wolverine
|
Hit : 9637 Date : 2012/07/04 11:12
|