XScaleCrossToolsInstall 

Category: Stuffs, EmbeddedLinux,

  1. 1. °³¿ä
  2. 2. ¹«¾ùÀ» ±¸Çϴ°¡?
  3. 3. ¾îµð¼­ ±¸Çϴ°¡?
  4. 4. ¼³Ä¡ Àü ÀÛ¾÷
  5. 5. ¼³Ä¡ Àü ÁÖÀÇ »çÇ×
  6. 6. ÆÐÄ¡ È­ÀÏ ¼³Ä¡
  7. 7. GDB ÆÐÄÉÁö ¼³Ä¡
  8. 8. Binutils ÆÐÄÉÁö ¼³Ä¡
  9. 9. Ä¿³Î ¼Ò½º ¼³Ä¡ ¶Ç´Â ¼³Ä¡ Á¡°Ë ¹× ó¸® ³»¿ë
  10. 10. gcc ÆÐÄÉÁö ¼³Ä¡
  11. 11. glibc ÆÐÄÉÁö ¼³Ä¡
  12. 12. gcc À缳ġ
  13. 13. ½ÃÇè

¿ø¹® http://www.falinux.com/win/02_config/010_XScaleToolChain/index.htm

1. °³¿ä  

ÀÌ ¹®¼­´Â XScale ¿ë °³¹ß ȯ°æÀÎ Å©·Î½º Åø üÀÎÀ» ¼Ò½º ÆÐÄÉÁö·Î ¸¸µå´Â °Í¿¡ ´ëÇÑ ¹®¼­ÀÔ´Ï´Ù..

ÀÌ ¹®¼­´Â EZ-X5¸¦ À§ÇÑ XScale ¿ë Å©·Î½º ÄÄÆÄÀÏ È¯°æÀ» ±¸ÃàÇϱâ À§ÇÑ ¹æ¹ýÁß RPMÀ» ÀÌ¿ëÇÏ´Â ¹æ½ÄÀÌ ¾Æ´Ñ GNU¿¡¼­ Á¦°øÇÏ´Â ¼Ò½º ÆÐÄÉÁö¸¦ ÀÌ¿ëÇÏ¿© ±¸¼ºÇÏ´Â ¹æ½Ä¿¡ ´ëÇÏ¿© ±â¼úÇÑ ¹®¼­ÀÔ´Ï´Ù

ÀÌ ¹®¼­¿¡ ÀÇÇؼ­ ±¸ÃàµÈ Å©·Î½º ÄÄÆÄÀÏ·¯´Â ´ëºÎºÐÀÇ arm ±â¹Ý ÇÁ·Î¼¼½º¸¦ Áö¿øÇÕ´Ï´Ù.

2. ¹«¾ùÀ» ±¸Çϴ°¡?  

¸®´ª½º¸¦ ÀÌ¿ëÇÑ °³¹ßȯ°æÀ¸·Î ¼±ÅÃÇß´Ù¸é Å©·Î½º ÄÄÆÄÀÏ È¯°æÀ» ±¸ÃàÇÏ¿©¾ß ÇÕ´Ï´Ù.

ÀÌ Å©·Î½º ÄÄÆÄÀÏ È¯°æ¿¡ Æ÷ÇԵǴ °ÍÀº ´ÙÀ½°ú °°Àº ÆÐÄÉÁö°¡ ÇÊ¿ä·Î ÇÏ°í ÀÌ ÆÐÄÉÁöµéÀÇ ¸ðÀ½À» ÀϹÝÀûÀ¸·Î Å©·Î½º ÄÄÆÄÀÏ Åø üÀÎÀ̶ó°íµµ ÇÕ´Ï´Ù.

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 ¿¡¼­ Á¦°øµÇ´Â ¹®¼­¸¦ ±â¹ÝÀ¸·Î ¸¸µé¾î Á³À¾´Ï´Ù.

3. ¾îµð¼­ ±¸Çϴ°¡?  

°¡Àå °£´ÜÇÑ ¹æ¹ýÀº º» ȨÆäÀÌÁö ¿¡¼­ ±¸ÇÏ´Â ¹æ¹ýÀÔ´Ï´Ù.

¿Ö? º»°­»ç°¡ À̱ÛÀ» ¾´ ÈÄ¿¡ ´Ù¿î ¹ÞÀ»¼ö ÀÖ°Ô ÇÒ°ÍÀ̱⠶§¹®ÀÌÁö¿ä. ( º¸µå ÆǸŠ½ÃÁ¡ ºÎÅÍ)

¿ø·ÐÀûÀÎ ¹æ¹ýÀº ´ÙÀ½¿¡¼­ ±¸ÇÏ´Â °ÍÀÔ´Ï´Ù.

ÀÌ ¹®¼­´Â ÀÌ°÷¿¡¼­ ±¸ÇÏ´Â °ÍÀ» Âü°í ÇÒ°ÍÀÔ´Ï´Ù.

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

4. ¼³Ä¡ Àü ÀÛ¾÷  

´Ù¿î ¹ÞÀº È­ÀÏ ¸ñ·ÏÀ» Á¤¸®Çϸé

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/ ¿¡ ´Ù¿î ¹ÞÀº È­ÀÏÀ» °¡Á®´Ù ³õ½À´Ï´Ù.

5. ¼³Ä¡ Àü ÁÖÀÇ »çÇ×  

ÀÌÁ¦ºÎÅÍ ÁøÇàÇÏ´Â ¼ø¼­´Â ²À! ÁöÄÑ¾ß ÇÕ´Ï´Ù.

ÀÌÀ¯´Â °¢ ¼³Ä¡µÇ´Â ÆÐÄÉÁöµéÀÇ ÀÇÁ¸ °ü°è°¡ Àֱ⠶§¹®ÀÔ´Ï´Ù.

¼³Ä¡´Â root ±ÇÇÑÀ¸·Î ÇϽñ⠹ٶø´Ï´Ù

ÀÏ´Ü ÇöÀç º¸¿©µå¸®´Â /var/downloadÀÇ µð·ºÅ丮´Â ¸ð½ÀÀº ´ÙÀ½°ú °°½À´Ï´Ù.

¿©±â¼­ linux µð·ºÅ丮´Â Xscale(PXA255) ¿ëÀ¸·Î ÆÐÄ¡µÈ ¸®´ª½º Ä¿³Î µð·ºÅ丮 ÀÔ´Ï´Ù. ÀÌ ºÎºÐÀº Àڽſ¡°Ô ¸Â´Â arm Ä¿³ÎÀ» ±¸Çϼż­ ¼³Ä¡ ÇϽʽÿÀ

6. ÆÐÄ¡ È­ÀÏ ¼³Ä¡  

±âÁ¸ÀÇ ÅøüÀο¡´Â 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# 

7. GDB ÆÐÄÉÁö ¼³Ä¡  

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

¾Æ¸¶µµ º° ¿¡·¯ ¾øÀÌ ³¡³¯ °Í ÀÔ´Ï´Ù.

Á¦´ë·Î ¼³Ä¡µÇ¾ú´Ù¸é ´ÙÀ½°ú °°Àº ¸í·ÉÀ» Ä¡¸é ¾Æ·¡¿Í °°ÀÌ ³ª¿­µË´Ï´Ù.

8. Binutils ÆÐÄÉÁö ¼³Ä¡  

º»°­»ç°¡ Çϴ´ë·Î ±×³É µû¶ó¸¸ Çصµ º°¹«¸® ¾øÀÌ ¼³Ä¡ µÉ °ÍÀÔ´Ï´Ù.

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- ºÙ½À´Ï´Ù.

9. Ä¿³Î ¼Ò½º ¼³Ä¡ ¶Ç´Â ¼³Ä¡ Á¡°Ë ¹× ó¸® ³»¿ë  

Ä¿³Î ¼Ò½º¸¦ Binutils ÆÐÄÉÁö ´ÙÀ½¿¡ ¼³Ä¡ÇÏ´Â ÀÌÀ¯´Â Çì´õ È­ÀÏ ¶§¹®ÀÔ´Ï´Ù.

Å©·Î½º ÄÄÆÄÀÏ ¼³Ä¡ ¸ñÀûÀÌ ¾Ï¿ë À̶ó¸é Ä¿³Î ¼Ò½º´Â ¾Ï ÆÐÄ¡±îÁö ¼öÇàµÇ¾î¾ß ÇÕ´Ï´Ù.

¿©±â¼­ ¼³¸íÇÏ´Â °ÍÀº XScale ¿ëÀ̱⠶§¹®¿¡ XScaleÆÐÄ¡±îÁö´Â ¼öÇàµÇ¾îÁø ¼Ò½º¿©¾ß µË´Ï´Ù

ÀÌ¿¡ ´ëÇÑ ¹®¼­´Â ´Ù¸¥ ¹®¼­¸¦ ÂüÁ¶Çϱ⠹ٶø´Ï´Ù.

²À ÀÌ Ä¿³Î ¼Ò½º¸¦ ¼³Ä¡ÇÑ ÈÄ¿¡ ÁøÇàÇÏ¿©¾ß ÇÕ´Ï´Ù.

ÀÌ ¹®¼­¿¡¼­´Â

/var/download/linux/

¿¡ ¼³Ä¡µÇ¾î ÀÖ´Â °ÍÀ¸·Î ¼³¸íÇÕ´Ï´Ù.

root@armpro /# cd /var/download/linux
root@armpro /# make menuconfig 
½Ã½ºÅÛÀ» pxa255 ¿ëÀ¸·Î ¼³Á¤ÇÑ´Ù ( pxa250 ¿É¼ÇÀ» ¼±ÅÃÇÏ¸é µË´Ï´Ù. )

10. gcc ÆÐÄÉÁö ¼³Ä¡  

ÀÌÁ¦ ½ÇÁ¦ Å©·Î½º ÄÄÆÄÀÏ·¯¸¦ ¸¸µì´Ï´Ù.

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

ÀνºÅç±îÁö Á¤»óÀûÀ¸·Î ¼öÇà µÇ¾ú½À´Ï´Ù.

È®ÀÎÀ» À§Çؼ­ ´ÙÀ½°ú °°ÀÌ ¼öÇàÇØ º¾´Ï´Ù.

11. glibc ÆÐÄÉÁö ¼³Ä¡  

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 

12. gcc À缳ġ  

ÀÌÁ¦ ¸¶Áö¸·À¸·Î 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++ --nfp

root@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

13. ½ÃÇè  

Á¤»óÀûÀÎ ´ÙÀ½°ú °°ÀÌ ½ÃÇèÇØ º¸ÀÚ

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

Çϸé Áö¿øµÇ´Â ÇÁ·Î¼¼½º ¸ñ·ÏÀÌ º¸ÀÏ °ÍÀÌ´Ù.