Category: Stuffs, EmbeddedLinux, |
¿ø¹® http://www.falinux.com/win/02_config/010_XScaleToolChain/index.htm
ÀÌ ¹®¼´Â XScale ¿ë °³¹ß ȯ°æÀÎ Å©·Î½º Åø üÀÎÀ» ¼Ò½º ÆÐÄÉÁö·Î ¸¸µå´Â °Í¿¡ ´ëÇÑ ¹®¼ÀÔ´Ï´Ù..
ÀÌ ¹®¼´Â EZ-X5¸¦ À§ÇÑ XScale ¿ë Å©·Î½º ÄÄÆÄÀÏ È¯°æÀ» ±¸ÃàÇϱâ À§ÇÑ ¹æ¹ýÁß RPMÀ» ÀÌ¿ëÇÏ´Â ¹æ½ÄÀÌ ¾Æ´Ñ GNU¿¡¼ Á¦°øÇÏ´Â ¼Ò½º ÆÐÄÉÁö¸¦ ÀÌ¿ëÇÏ¿© ±¸¼ºÇÏ´Â ¹æ½Ä¿¡ ´ëÇÏ¿© ±â¼úÇÑ ¹®¼ÀÔ´Ï´Ù
ÀÌ ¹®¼¿¡ ÀÇÇؼ ±¸ÃàµÈ Å©·Î½º ÄÄÆÄÀÏ·¯´Â ´ëºÎºÐÀÇ arm ±â¹Ý ÇÁ·Î¼¼½º¸¦ Áö¿øÇÕ´Ï´Ù.
¸®´ª½º¸¦ ÀÌ¿ëÇÑ °³¹ßȯ°æÀ¸·Î ¼±ÅÃÇß´Ù¸é Å©·Î½º ÄÄÆÄÀÏ È¯°æÀ» ±¸ÃàÇÏ¿©¾ß ÇÕ´Ï´Ù.
ÀÌ Å©·Î½º ÄÄÆÄÀÏ È¯°æ¿¡ Æ÷ÇԵǴ °ÍÀº ´ÙÀ½°ú °°Àº ÆÐÄÉÁö°¡ ÇÊ¿ä·Î ÇÏ°í ÀÌ ÆÐÄÉÁöµéÀÇ ¸ðÀ½À» ÀϹÝÀûÀ¸·Î Å©·Î½º ÄÄÆÄÀÏ Åø üÀÎÀ̶ó°íµµ ÇÕ´Ï´Ù.
1) binutils : ¾î¼Àºí·¯ ¹× ·Î´õ ±âŸ Åø ( GNU ) 2) glibc : Å©·Î½º ÄÄÆÄÀÏ ±¸ÃàÀ» À§ÇÑ ¶óÀ̺귯¸® ¹× ÀÏ¹Ý ¶óÀ̺귯¸® 3) gcc : ÄÄÆÄÀÏ·¯ ( ½Ã±×³Ê½º ) 4) Ä¿³Î : Ä¿³Î ½î½º 5) gdb : µð¹ö°Å
ÀÌ ¹®¼´Â ftp://ftp.arm.linux.org.uk/pub/linux/arm/toolchain/Oerlikon-DevKit-XScalev2.tar.gz ¿¡¼ Á¦°øµÇ´Â ¹®¼¸¦ ±â¹ÝÀ¸·Î ¸¸µé¾î Á³À¾´Ï´Ù.
°¡Àå °£´ÜÇÑ ¹æ¹ýÀº º» ȨÆäÀÌÁö ¿¡¼ ±¸ÇÏ´Â ¹æ¹ýÀÔ´Ï´Ù.
¿Ö? º»°»ç°¡ À̱ÛÀ» ¾´ ÈÄ¿¡ ´Ù¿î ¹ÞÀ»¼ö ÀÖ°Ô ÇÒ°ÍÀ̱⠶§¹®ÀÌÁö¿ä. ( º¸µå ÆǸŠ½ÃÁ¡ ºÎÅÍ)
¿ø·ÐÀûÀÎ ¹æ¹ýÀº ´ÙÀ½¿¡¼ ±¸ÇÏ´Â °ÍÀÔ´Ï´Ù.
ÀÌ ¹®¼´Â ÀÌ°÷¿¡¼ ±¸ÇÏ´Â °ÍÀ» Âü°í ÇÒ°ÍÀÔ´Ï´Ù.
1) binutils : ¾î¼Àºí·¯ ¹× ·Î´õ ±âŸ Åø ( GNU )
±¸ÇÒ¼ö ÀÖ´Â °÷ °ú ÆÄÀÏ
http://www.ibiblio.org/pub/Linux/kernel.org/pub/linux/devel/binutils/binutils-2.13.90.0.16.tar.gz
2) glibc : Å©·Î½º ÄÄÆÄÀÏ ±¸ÃàÀ» À§ÇÑ ¶óÀ̺귯¸® ¹× ÀÏ¹Ý ¶óÀ̺귯¸®
±¸ÇÒ¼ö ÀÖ´Â °÷ °ú ÆÄÀÏ
ftp://ftp.gnu.org/gnu/glibc/glibc-2.3.1.tar.gz
ftp://ftp.gnu.org/gnu/glibc/glibc-linuxthreads-2.3.1.tar.gz
3) gcc : ÄÄÆÄÀÏ·¯ ( ½Ã±×³Ê½º )
±¸ÇÒ¼ö ÀÖ´Â °÷ °ú ÆÄÀÏ
ftp://ftp.gnu.org/gnu/gcc/gcc-3.2.1.tar.gz
4) Ä¿³Î : Ä¿³Î ½î½º
ÀÌ ºÎºÐÀº Ä¿³Î ¼Ò½º ±¸Çϱ⸦ ÂüÁ¶ ÇÒ°Í
5) gdb : µð¹ö°Å
±¸ÇÒ¼ö ÀÖ´Â °÷ °ú ÆÄÀÏ
http://pluto.cdpa.nsysu.edu.tw/sourceware/gdb/releases/gdb-5.3.tar.gz
6) ÆÐÄ¡ ÈÀÏ
±¸ÇÒ¼ö ÀÖ´Â °÷ °ú ÆÄÀÏ
ftp://ftp.arm.linux.org.uk/pub/linux/arm/toolchain/Oerlikon-DevKit-XScalev2.tar.gz
´Ù¿î ¹ÞÀº ÈÀÏ ¸ñ·ÏÀ» Á¤¸®Çϸé
1) binutils-2.13.90.0.16.tar.gz 2) diff-2.4.19-rmk7-pxa3.gz 2-1) patch-2.4.19-rmk7.gz 2-2) linux-2.4.19.tar.gz 3) gcc-3.2.1.tar.gz 4) glibc-2.3.1.tar.gz 5) glibc-linuxthreads-2.3.1.tar.gz 6) gdb-5.3.tar.gz 7) Oerlikon-DevKit-XScalev2.tar.gz
µî ÃÑ 9°³°¡ µË´Ï´Ù.
¼³Ä¡ÇÏ·Á°í ÇÏ´Â ¸®´ª½º ¸Ó½Å¿¡ ´ÙÀ½ µð·ºÅ丮¸¦ ¸¸µì´Ï´Ù.
mkdir -p /var/download/
( ÀÌ°ÍÀº º»°»ç°¡ »ç¿ëÇϱâ À§ÇÏ¿© ÆíÀÇ»ó ÇÑ°ÍÀÌÁö Àý´ëÀûÀΰÍÀº ¾Æ´Ï¹Ç·Î ¿©·¯ºÐÀº °¢ÀÚ Àû´çÇÑ µð·ºÅ丮¸íÀ» ¼±ÅÃÇÏ¸é µË´Ï´Ù.)
/var/download/ ¿¡ ´Ù¿î ¹ÞÀº ÈÀÏÀ» °¡Á®´Ù ³õ½À´Ï´Ù.
ÀÌÁ¦ºÎÅÍ ÁøÇàÇÏ´Â ¼ø¼´Â ²À! ÁöÄÑ¾ß ÇÕ´Ï´Ù.
ÀÌÀ¯´Â °¢ ¼³Ä¡µÇ´Â ÆÐÄÉÁöµéÀÇ ÀÇÁ¸ °ü°è°¡ Àֱ⠶§¹®ÀÔ´Ï´Ù.
¼³Ä¡´Â root ±ÇÇÑÀ¸·Î ÇϽñ⠹ٶø´Ï´Ù
ÀÏ´Ü ÇöÀç º¸¿©µå¸®´Â /var/downloadÀÇ µð·ºÅ丮´Â ¸ð½ÀÀº ´ÙÀ½°ú °°½À´Ï´Ù.
¿©±â¼ linux µð·ºÅ丮´Â Xscale(PXA255) ¿ëÀ¸·Î ÆÐÄ¡µÈ ¸®´ª½º Ä¿³Î µð·ºÅ丮 ÀÔ´Ï´Ù. ÀÌ ºÎºÐÀº Àڽſ¡°Ô ¸Â´Â arm Ä¿³ÎÀ» ±¸Çϼż ¼³Ä¡ ÇϽʽÿÀ
±âÁ¸ÀÇ ÅøüÀο¡´Â arm¿¡ °ü·ÃµÈ ¸î°¡Áö ¹ö±× µéÀÌ ÀÖÀ¾´Ï´Ù. ÀÌ ¹ö±×¿¡ ´ëÇÑ ÆÐÄ¡ ÈÀÏÀ» ¸ÕÀú ±¸ÇÏ¼Å¾ß ÇÕ´Ï´Ù.
´Ù¿î·ÎµåµÈ ÈÀÏÁß
Oerlikon-DevKit-XScalev2.tar.gz
¸¦ Ç®¸é °ü·Ã ÆÐÄ¡ ÈÀÏ°ú ÀÚµ¿È ½ºÅ©¸³Æ®°¡ ÀÖÀ¾´Ï´Ù.
ÀÌ ¹®¼µµ ÀÌ ÀÚµ¿È ½ºÅ©¸³Æ®ÀÇ ³»¿ëÀ» º¸°í ÂüÁ¶ ÇÑ °ÍÀÔ´Ï´Ù.
´ÙÀ½°ú °°ÀÌ ¼öÇàÇÏ¿© ÆÐÄ¡ ÈÀÏÀ» /var/download/ µð·ºÅ丮¿¡ ¿Å°Ü ³õ½À´Ï´Ù.
root@armpro download# tar zxvf Oerlikon-DevKit-XScalev2.tar.gz Oerlikon-DevKit-v2/ Oerlikon-DevKit-v2/INSTALL Oerlikon-DevKit-v2/binutils-2.13.90.0.16-oerlikon.patch Oerlikon-DevKit-v2/gcc-3.2.1-oerlikon.patch Oerlikon-DevKit-v2/build-Oerlikon-DevKit-v2.sh root@armpro download# cd Oerlikon-DevKit-v2/ root@armpro Oerlikon-DevKit-v2# cp binutils-2.13.90.0.16-oerlikon.patch ../ root@armpro Oerlikon-DevKit-v2# cp gcc-3.2.1-oerlikon.patch ../ root@armpro Oerlikon-DevKit-v2# cd .. root@armpro download#
GDB´Â Å©·Î½º ÄÄÆÄÀÏ ÅøüÀÎÀÇ ¼ø¼¿Í »ó°ü¾øÀÌ ¾ðÁ¦µçÁö ¼³Ä¡°¡ °¡´ÉÇÕ´Ï´Ù.
´ÙÀ½°ú °°ÀÌ ¼³Ä¡ÇÏ¸é µË´Ï´Ù.
root@armpro download# tar zxvf gdb-5.3.tar.gz
ÀÌ ¸í·ÉÀ» ¼öÇàÇϸé gdb-5.3 ¶õ µð·ºÅ丮°¡ »ý±é´Ï´Ù.
root@armpro download# cd gdb-5.3 root@armpro gdb-5.3# ./configure --target=arm-linux --build=i686-pc-linux-gnu --prefix=/usr root@armpro gdb-5.3# make root@armpro gdb-5.3# make install
¾Æ¸¶µµ º° ¿¡·¯ ¾øÀÌ ³¡³¯ °Í ÀÔ´Ï´Ù.
Á¦´ë·Î ¼³Ä¡µÇ¾ú´Ù¸é ´ÙÀ½°ú °°Àº ¸í·ÉÀ» Ä¡¸é ¾Æ·¡¿Í °°ÀÌ ³ª¿µË´Ï´Ù.
º»°»ç°¡ Çϴ´ë·Î ±×³É µû¶ó¸¸ Çصµ º°¹«¸® ¾øÀÌ ¼³Ä¡ µÉ °ÍÀÔ´Ï´Ù.
root@armpro /# cd /var/download/ root@armpro download# tar zxvf binutils-2.13.90.0.16.tar.gz root@armpro download# patch -p1 < binutils-2.13.90.0.16-oerlikon.patch root@armpro download# cd binutils-2.13.90.0.16 root@armpro binutils-2.13.90.0.16# ./configure --target=arm-linux --prefix=/usr --with-cpu=xscale --nfp root@armpro binutils-2.13.90.0.16# make root@armpro binutils-2.13.90.0.16# make install
¾Æ¸¶µµ º° ¹«¸®¾øÀÌ ³¡³µÀ» °ÍÀÔ´Ï´Ù.
ÀÌ ºÎºÐÀ» ¼öÇàÇÏ°í ³ª¸é /usr/arm-linux ¶õ µð·ºÅ丮°¡ »ý¼ºµË´Ï´Ù.
´ëºÎºÐÀÇ ½ÇÇàÈÀÏÀº /usr/bin¿¡ º¹»ç µË´Ï´Ù.
½ÇÇàÈÀϸíÀº ¾Õ¿¡ arm-linux- ºÙ½À´Ï´Ù.
Ä¿³Î ¼Ò½º¸¦ Binutils ÆÐÄÉÁö ´ÙÀ½¿¡ ¼³Ä¡ÇÏ´Â ÀÌÀ¯´Â Çì´õ ÈÀÏ ¶§¹®ÀÔ´Ï´Ù.
Å©·Î½º ÄÄÆÄÀÏ ¼³Ä¡ ¸ñÀûÀÌ ¾Ï¿ë À̶ó¸é Ä¿³Î ¼Ò½º´Â ¾Ï ÆÐÄ¡±îÁö ¼öÇàµÇ¾î¾ß ÇÕ´Ï´Ù.
¿©±â¼ ¼³¸íÇÏ´Â °ÍÀº XScale ¿ëÀ̱⠶§¹®¿¡ XScaleÆÐÄ¡±îÁö´Â ¼öÇàµÇ¾îÁø ¼Ò½º¿©¾ß µË´Ï´Ù
ÀÌ¿¡ ´ëÇÑ ¹®¼´Â ´Ù¸¥ ¹®¼¸¦ ÂüÁ¶Çϱ⠹ٶø´Ï´Ù.
²À ÀÌ Ä¿³Î ¼Ò½º¸¦ ¼³Ä¡ÇÑ ÈÄ¿¡ ÁøÇàÇÏ¿©¾ß ÇÕ´Ï´Ù.
ÀÌ ¹®¼¿¡¼´Â
/var/download/linux/
¿¡ ¼³Ä¡µÇ¾î ÀÖ´Â °ÍÀ¸·Î ¼³¸íÇÕ´Ï´Ù.
root@armpro /# cd /var/download/linux root@armpro /# make menuconfig½Ã½ºÅÛÀ» pxa255 ¿ëÀ¸·Î ¼³Á¤ÇÑ´Ù ( pxa250 ¿É¼ÇÀ» ¼±ÅÃÇÏ¸é µË´Ï´Ù. )
ÀÌÁ¦ ½ÇÁ¦ Å©·Î½º ÄÄÆÄÀÏ·¯¸¦ ¸¸µì´Ï´Ù.
root@armpro /# cd /var/download/ root@armpro download# tar zxvf gcc-3.2.1.tar.gz
ÆÐÄ¡¸¦ °¡ÇÕ´Ï´Ù.
root@armpro download# patch -p1 < gcc-3.2.1-oerlikon.patch
¸î°¡Áö ÈÀÏÀ» ¼öÁ¤ÇÕ´Ï´Ù.
root@armpro download# cd gcc-3.2.1 root@armpro gcc-3.2.1# perl -pi -e 's/^(TARGET_LIBGCC2_CFLAGS.*)/$1 -Dinhibit_libc -D__gthr_posix_h/' gcc/config/arm/t-linux root@armpro gcc-3.2.1# echo 'T_CFLAGS = -Dinhibit_libc -D__gthr_posix_h' >> gcc/config/arm/t-linuxÀÌ°ÍÀº ½ÇÁ¦·Î ´ÙÀ½°ú °°ÀÌ ÈÀÏÀ» Á÷Á¢ °íÄ¡´Â °Í°ú µ¿ÀÏ ÇÑ °ÍÀÔ´Ï´Ù.
=====ÆíÁý±â¸¦ »ç¿ëÇßÀ»¶§======================================================================
root@armpro gcc-3.2.1# cd gcc/config/arm/ root@armpro arm# vi t-linux=====ÆíÁý±â¸¦ »ç¿ëÇßÀ»¶§======================================================================t-linux ÈÀÏÀ» ¼öÁ¤ÇÕ´Ï´Ù.
root@armpro gcc-3.2# cd gcc/config/arm/ root@armpro arm# vi t-linux
t-linux ÀÇ ¼±µÎ¿¡ º¸¸é
TARGET_LIBGCC2_CFLAGS = -fomit-frame-pointer -fPIC À̶õ ³»¿ëÀÌ Àִµ¥ ÀÌ°ÍÀ» TARGET_LIBGCC2_CFLAGS = -fomit-frame-pointer -fPIC -Dinhibit_libc -D__gthr_posix_h À¸·Î ¹Ù²ãÁÝ´Ï´Ù.
´ÙÀ½À» Ãß°¡ ÇÕ´Ï´Ù.
T_CFLAGS = -Dinhibit_libc -D__gthr_posix_h
root@armpro arm# cd /var/download/gcc-3.2.1
ÀÌÁ¦ ȯ°æ ¼³Á¤°ú ÄÄÆÄÀÏÀ» ¼öÇàÇÕ´Ï´Ù.
root@armpro gcc-3.2.1# ./configure --target=arm-linux --prefix=/usr --with-headers=/var/download/linux/include --disable-shared --disable-threads --enable-languages="c" --nfp --with-cpu=xscale --without-fp --with-softfloat-support=internalÀνºÅç±îÁö Á¤»óÀûÀ¸·Î ¼öÇà µÇ¾ú½À´Ï´Ù.root@armpro gcc-3.2.1# make root@armpro gcc-3.2.1# make install
È®ÀÎÀ» À§Çؼ ´ÙÀ½°ú °°ÀÌ ¼öÇàÇØ º¾´Ï´Ù.
root@armpro /# cd /var/download/ root@armpro download# tar zxvf glibc-2.3.1.tar.gz root@armpro download# tar -C glibc-2.3.1 -zxf glibc-linuxthreads-2.3.1.tar.gz root@armpro download# cd glibc-2.3.1 root@armpro glibc-2.3.1# ./configure arm-linux --build=i686-pc-linux-gnu --with-headers=/var/download/linux/include --enable-add-ons --enable-shared --prefix=/usr/arm-linux --with-cpu=xscale --without-fp --enable-kernel=2.4.19 root@armpro glibc-2.3.1# make root@armpro glibc-2.3.1# make install
ÀÌÁ¦ ¸¶Áö¸·À¸·Î gcc¸¦ À缳ġÇÏ¿©¾ß ÇÑ´Ù.
¹°·Ð ¿É¼ÇÀÌ ´Þ¶óÁø´Ù.
root@armpro /# cd /var/download/ root@armpro download# rm -rf gcc-3.2.1 root@armpro download# tar zxvf gcc-3.2.1.tar.gz root@armpro download# patch -p1 < gcc-3.2.1-oerlikon.patch root@armpro download# cd gcc-3.2.1 root@armpro gcc-3.2.1# ./configure --target=arm-linux --prefix=/usr --with-headers=/var/download/linux/include --with-cpu=xscale --with-softfloat-support=internal --enable-languages=c,c++ --nfproot@armpro gcc-3.2.1# perl -pi -e 's/int namelen/unsigned int namelen/' libjava/java/net/natInetAddress.cc
root@armpro gcc-3.2.1# make root@armpro gcc-3.2.1# make install
Á¤»óÀûÀÎ ´ÙÀ½°ú °°ÀÌ ½ÃÇèÇØ º¸ÀÚ
test.c ¶õ ÈÀÏÀ» Çϳª ¸¸µç´Ù.
´ÙÀ½°ú °°ÀÌ ÄÄÆÄÀÏ ÇÑ´Ù.
arm-linux-gcc -o test test.c
´ÙÀ½°ú °°ÀÌ ³ª¿À¸é Á¤»óÀÌ´Ù.
root@armpro tmp# file test
test: ELF 32-bit LSB executable, ARM, version 1 (ARM), dynamically linked (uses shared libs), not stripped
ÀÌ·¸°Ô ±¸ÃàÇÑ Å©·Î½º ÄÄÆÄÀÏ·¯´Â ´ç¿¬È÷ xscaleµµ ÄÄÆÄÀÏÀÌ µÇ¸ç ±×¿Ü arm °èÅëÀº ¸ðµÎ ÄÄÆÄÀÏ µÈ´Ù.
¾î¶² ÇÁ·Î¼¼½ºµéÀ» Áö¿øÇϴ°¡¸¦ º¸°í ½Í´Ù¸é
arm-linux-gcc -dumpspecs
Çϸé Áö¿øµÇ´Â ÇÁ·Î¼¼½º ¸ñ·ÏÀÌ º¸ÀÏ °ÍÀÌ´Ù.