經過前面的 build 過程, 已經可以製作出 MSP430 toolchain 了 , 不過正確性還不知道 ,
需要經過多個案子使用後才能確定, 所以請大家試試看吧 !!
首先 , 我將整個 source tree 放在
https://www.openfoundry.org/svn/msp430gcctoolch/gcc-4.6.3_ver/
上 , 可以自行去下載 .
編譯環境是使用 Fedora 20 .
使用方式 , 先執行 $> source build/setenv.sh 設定環境 , 接著 直接執行 $> make 即可.
最後會輸出在 ./out/下 .
MSP430 GCC toolchain
2014年3月17日 星期一
2014年3月14日 星期五
Step 5 build "mspdebug"
最後一的步驟 , 開始編譯 mspdebug utility .
mspdebug 會使用到 readline 的功能, 所以不要忘記安裝 readline
su -c ' yum install readline-devel'
接著開始 build 了, 不過會出現一些 bug , 經過修改終於可以完整的 build 出來了.
Patch 的內容如下 , 不過好像有比較新的版本 , any way 先使用看看 ,屆時有需要
在來更新 mspdebug 的版本.
diff -Nura mspdebug-0.19-orignal/formats/elf32.c mspdebug-0.19/formats/elf32.c
--- mspdebug-0.19-orignal/formats/elf32.c 2012-03-03 06:56:26.000000000 +0800
+++ mspdebug-0.19/formats/elf32.c 2014-03-14 02:38:55.910362847 +0800
@@ -180,7 +180,8 @@
static int read_all(struct elf32_info *info, FILE *in)
{
- memset(info, 0, sizeof(info));
+// memset(info, 0, sizeof(info));
+ memset(info, 0, sizeof(struct elf32_info));
if (read_ehdr(info, in) < 0)
return -1;
diff -Nura mspdebug-0.19-orignal/util/sport.c mspdebug-0.19/util/sport.c
--- mspdebug-0.19-orignal/util/sport.c 2012-03-03 06:56:26.000000000 +0800
+++ mspdebug-0.19/util/sport.c 2014-03-14 02:34:50.919397478 +0800
@@ -20,6 +20,8 @@
#include <unistd.h>
#include <errno.h>
#include <string.h>
+#include <sys/time.h>
+
#include "sport.h"
#include "util.h"
看看 mspdebug 的 help 吧 :
[jeff@localhost msp430-toolchain]$ pwd
/home/jeff/msp430-toolchain
[jeff@localhost msp430-toolchain]$ll ./out/bin
total 24168
-rwxr-xr-x 1 jeff jeff 764332 Mar 14 02:53 msp430-addr2line
-rwxr-xr-x 2 jeff jeff 797937 Mar 14 02:53 msp430-ar
-rwxr-xr-x 2 jeff jeff 1078674 Mar 14 02:53 msp430-as
-rwxr-xr-x 1 jeff jeff 759142 Mar 14 02:53 msp430-c++filt
-rwxr-xr-x 1 jeff jeff 379404 Mar 14 02:57 msp430-cpp
-rwxr-xr-x 1 jeff jeff 38462 Mar 14 02:53 msp430-elfedit
-rwxr-xr-x 2 jeff jeff 379365 Mar 14 02:57 msp430-gcc
-rwxr-xr-x 2 jeff jeff 379365 Mar 14 02:57 msp430-gcc-4.6.3
-rwxr-xr-x 1 jeff jeff 53027 Mar 14 02:57 msp430-gcov
-rwxr-xr-x 1 jeff jeff 4495367 Mar 14 03:00 msp430-gdb
-rwxr-xr-x 1 jeff jeff 4495372 Mar 14 03:00 msp430-gdbtui
-rwxr-xr-x 1 jeff jeff 849775 Mar 14 02:53 msp430-gprof
-rwxr-xr-x 4 jeff jeff 1056501 Mar 14 02:53 msp430-ld
-rwxr-xr-x 4 jeff jeff 1056501 Mar 14 02:53 msp430-ld.bfd
-rwxr-xr-x 1 jeff jeff 948 Mar 14 03:00 msp430mcu-config
-rwxr-xr-x 2 jeff jeff 779744 Mar 14 02:53 msp430-nm
-rwxr-xr-x 2 jeff jeff 1016702 Mar 14 02:53 msp430-objcopy
-rwxr-xr-x 2 jeff jeff 1117648 Mar 14 02:53 msp430-objdump
-rwxr-xr-x 2 jeff jeff 797936 Mar 14 02:53 msp430-ranlib
-rwxr-xr-x 1 jeff jeff 414502 Mar 14 02:53 msp430-readelf
-rwxr-xr-x 1 jeff jeff 783274 Mar 14 03:00 msp430-run
-rwxr-xr-x 1 jeff jeff 765075 Mar 14 02:53 msp430-size
-rwxr-xr-x 1 jeff jeff 764091 Mar 14 02:53 msp430-strings
-rwxr-xr-x 2 jeff jeff 1016733 Mar 14 02:53 msp430-strip
-rwxr-xr-x 1 jeff jeff 660938 Mar 14 03:04 mspdebug
[jeff@localhost msp430-toolchain]$ ./out/bin/mspdebug --help
Usage: ./out/bin/mspdebug [options] <driver> [command ...]
-q
Start in quiet mode.
-d device
Connect via the given tty device, rather than USB.
-U bus:dev
Specify a particular USB device to connect to.
-s serial
Specify a particular device serial number to connect to.
-j
Use JTAG, rather than Spy-Bi-Wire (UIF devices only).
-v voltage
Set the supply voltage, in millivolts.
-n
Do not read ~/.mspdebug on startup.
--long-password
Send 32-byte IVT as BSL password (flash-bsl only)
--help
Show this help text.
--fet-list
Show a list of devices supported by the FET driver.
--fet-force-id string
Override the device ID returned by the FET.
--usb-list
Show a list of available USB devices.
--force-reset
Force target reset in initialization sequence.
--allow-fw-update
Update FET firmware (tilib only) if necessary.
--require-fw-update <image.txt>
Require FET firmware update (tilib only). The image must be
a TI Text file.
--version
Show copyright and version information.
Most drivers connect by default via USB, unless told otherwise via the
-d option. By default, the first USB device found is opened.
If commands are given, they will be executed. Otherwise, an interactive
command reader is started.
Available drivers are:
rf2500
eZ430-RF2500 devices. Only USB connection is supported.
olimex
Olimex MSP-JTAG-TINY.
olimex-v1
Olimex MSP-JTAG-TINY (V1).
olimex-iso
Olimex MSP-JTAG-ISO.
sim
Simulation mode.
uif
TI FET430UIF and compatible devices (e.g. eZ430).
uif-bsl
TI FET430UIF bootloader.
flash-bsl
TI generic flash-based bootloader via RS-232
gdbc
GDB client mode
tilib
TI MSP430 library
[jeff@localhost msp430-toolchain]$
mspdebug 會使用到 readline 的功能, 所以不要忘記安裝 readline
su -c ' yum install readline-devel'
接著開始 build 了, 不過會出現一些 bug , 經過修改終於可以完整的 build 出來了.
Patch 的內容如下 , 不過好像有比較新的版本 , any way 先使用看看 ,屆時有需要
在來更新 mspdebug 的版本.
diff -Nura mspdebug-0.19-orignal/formats/elf32.c mspdebug-0.19/formats/elf32.c
--- mspdebug-0.19-orignal/formats/elf32.c 2012-03-03 06:56:26.000000000 +0800
+++ mspdebug-0.19/formats/elf32.c 2014-03-14 02:38:55.910362847 +0800
@@ -180,7 +180,8 @@
static int read_all(struct elf32_info *info, FILE *in)
{
- memset(info, 0, sizeof(info));
+// memset(info, 0, sizeof(info));
+ memset(info, 0, sizeof(struct elf32_info));
if (read_ehdr(info, in) < 0)
return -1;
diff -Nura mspdebug-0.19-orignal/util/sport.c mspdebug-0.19/util/sport.c
--- mspdebug-0.19-orignal/util/sport.c 2012-03-03 06:56:26.000000000 +0800
+++ mspdebug-0.19/util/sport.c 2014-03-14 02:34:50.919397478 +0800
@@ -20,6 +20,8 @@
#include <unistd.h>
#include <errno.h>
#include <string.h>
+#include <sys/time.h>
+
#include "sport.h"
#include "util.h"
看看 mspdebug 的 help 吧 :
[jeff@localhost msp430-toolchain]$ pwd
/home/jeff/msp430-toolchain
[jeff@localhost msp430-toolchain]$ll ./out/bin
total 24168
-rwxr-xr-x 1 jeff jeff 764332 Mar 14 02:53 msp430-addr2line
-rwxr-xr-x 2 jeff jeff 797937 Mar 14 02:53 msp430-ar
-rwxr-xr-x 2 jeff jeff 1078674 Mar 14 02:53 msp430-as
-rwxr-xr-x 1 jeff jeff 759142 Mar 14 02:53 msp430-c++filt
-rwxr-xr-x 1 jeff jeff 379404 Mar 14 02:57 msp430-cpp
-rwxr-xr-x 1 jeff jeff 38462 Mar 14 02:53 msp430-elfedit
-rwxr-xr-x 2 jeff jeff 379365 Mar 14 02:57 msp430-gcc
-rwxr-xr-x 2 jeff jeff 379365 Mar 14 02:57 msp430-gcc-4.6.3
-rwxr-xr-x 1 jeff jeff 53027 Mar 14 02:57 msp430-gcov
-rwxr-xr-x 1 jeff jeff 4495367 Mar 14 03:00 msp430-gdb
-rwxr-xr-x 1 jeff jeff 4495372 Mar 14 03:00 msp430-gdbtui
-rwxr-xr-x 1 jeff jeff 849775 Mar 14 02:53 msp430-gprof
-rwxr-xr-x 4 jeff jeff 1056501 Mar 14 02:53 msp430-ld
-rwxr-xr-x 4 jeff jeff 1056501 Mar 14 02:53 msp430-ld.bfd
-rwxr-xr-x 1 jeff jeff 948 Mar 14 03:00 msp430mcu-config
-rwxr-xr-x 2 jeff jeff 779744 Mar 14 02:53 msp430-nm
-rwxr-xr-x 2 jeff jeff 1016702 Mar 14 02:53 msp430-objcopy
-rwxr-xr-x 2 jeff jeff 1117648 Mar 14 02:53 msp430-objdump
-rwxr-xr-x 2 jeff jeff 797936 Mar 14 02:53 msp430-ranlib
-rwxr-xr-x 1 jeff jeff 414502 Mar 14 02:53 msp430-readelf
-rwxr-xr-x 1 jeff jeff 783274 Mar 14 03:00 msp430-run
-rwxr-xr-x 1 jeff jeff 765075 Mar 14 02:53 msp430-size
-rwxr-xr-x 1 jeff jeff 764091 Mar 14 02:53 msp430-strings
-rwxr-xr-x 2 jeff jeff 1016733 Mar 14 02:53 msp430-strip
-rwxr-xr-x 1 jeff jeff 660938 Mar 14 03:04 mspdebug
[jeff@localhost msp430-toolchain]$ ./out/bin/mspdebug --help
Usage: ./out/bin/mspdebug [options] <driver> [command ...]
-q
Start in quiet mode.
-d device
Connect via the given tty device, rather than USB.
-U bus:dev
Specify a particular USB device to connect to.
-s serial
Specify a particular device serial number to connect to.
-j
Use JTAG, rather than Spy-Bi-Wire (UIF devices only).
-v voltage
Set the supply voltage, in millivolts.
-n
Do not read ~/.mspdebug on startup.
--long-password
Send 32-byte IVT as BSL password (flash-bsl only)
--help
Show this help text.
--fet-list
Show a list of devices supported by the FET driver.
--fet-force-id string
Override the device ID returned by the FET.
--usb-list
Show a list of available USB devices.
--force-reset
Force target reset in initialization sequence.
--allow-fw-update
Update FET firmware (tilib only) if necessary.
--require-fw-update <image.txt>
Require FET firmware update (tilib only). The image must be
a TI Text file.
--version
Show copyright and version information.
Most drivers connect by default via USB, unless told otherwise via the
-d option. By default, the first USB device found is opened.
If commands are given, they will be executed. Otherwise, an interactive
command reader is started.
Available drivers are:
rf2500
eZ430-RF2500 devices. Only USB connection is supported.
olimex
Olimex MSP-JTAG-TINY.
olimex-v1
Olimex MSP-JTAG-TINY (V1).
olimex-iso
Olimex MSP-JTAG-ISO.
sim
Simulation mode.
uif
TI FET430UIF and compatible devices (e.g. eZ430).
uif-bsl
TI FET430UIF bootloader.
flash-bsl
TI generic flash-based bootloader via RS-232
gdbc
GDB client mode
tilib
TI MSP430 library
[jeff@localhost msp430-toolchain]$
2014年3月12日 星期三
Step 4 build "libc"
進入到第四步驟 ,編譯 libc , 這部份要特別注意 , 因為 libc 是在MSP430 上使用 , 所以要用的是 cross compiler 來編譯.
基本上如果之前的 msp430-gcc 沒有編譯錯誤 , 這部份應該就沒有大問題了. 要注意PATH的是設定 , 不然會沒有辦法執行 msp430-gcc .
這部份順利 , 沒有需要 patch 的部份 , 編譯最後訊息如下:
msp430-gcc -c -mcpu=430x -mmpy=16 -I./../include -I. -Wall -Os -gdwarf-2 ./libm/fixunssfsi.c -o Build/mcpu-430x/mmpy-16/fixunssfsi.o
msp430-gcc -c -mcpu=430x -mmpy=16 -I./../include -I. -Wall -Os -gdwarf-2 ./libm/gesf.c -o Build/mcpu-430x/mmpy-16/gesf.o
msp430-gcc -c -mcpu=430x -mmpy=16 -I./../include -I. -Wall -Os -gdwarf-2 ./libm/ltsf.c -o Build/mcpu-430x/mmpy-16/ltsf.o
msp430-gcc -c -mcpu=430x -mmpy=16 -I./../include -I. -Wall -Os -gdwarf-2 ./libm/subsf.c -o Build/mcpu-430x/mmpy-16/subsf.o
msp430-gcc -c -mcpu=430x -mmpy=16 -I./../include -I. -Wall -Os -gdwarf-2 ./libm/nesf.c -o Build/mcpu-430x/mmpy-16/nesf.o
msp430-gcc -x assembler-with-cpp -c -mcpu=430x -mmpy=16 -I./../include -I. ./libm/fpmulparts.S -o Build/mcpu-430x/mmpy-16/fpmulparts.o
msp430-ar rc Build/mcpu-430x/mmpy-16/libfp.a Build/mcpu-430x/mmpy-16/divsf.o Build/mcpu-430x/mmpy-16/fixsfsi.o Build/mcpu-430x/mmpy-16/floatdisf.o Build/mcpu-430x/mmpy-16/gtsf.o Build/mcpu-430x/mmpy-16/mulsf.o Build/mcpu-430x/mmpy-16/addsf.o Build/mcpu-430x/mmpy-16/eqsf.o Build/mcpu-430x/mmpy-16/fixunssfdi.o Build/mcpu-430x/mmpy-16/floatsisf.o Build/mcpu-430x/mmpy-16/lesf.o Build/mcpu-430x/mmpy-16/negsf.o Build/mcpu-430x/mmpy-16/cmpsf.o Build/mcpu-430x/mmpy-16/fixsfdi.o Build/mcpu-430x/mmpy-16/fixunssfsi.o Build/mcpu-430x/mmpy-16/gesf.o Build/mcpu-430x/mmpy-16/ltsf.o Build/mcpu-430x/mmpy-16/subsf.o Build/mcpu-430x/mmpy-16/nesf.o Build/mcpu-430x/mmpy-16/fpmulparts.o
make[3]: Leaving directory `/home/jeff/msp430-toolchain/msp430libc/msp430-libc-20120224/src'
make[2]: Leaving directory `/home/jeff/msp430-toolchain/msp430libc/msp430-libc-20120224/src'
make[2]: Entering directory `/home/jeff/msp430-toolchain/msp430libc/msp430-libc-20120224/src'
install -c -m644 ../include/byteswap.h ../include/ctype.h ../include/debug.h ../include/endian.h ../include/errno.h ../include/inttypes.h ../include/isr_compat.h ../include/legacymsp430.h ../include/limits.h ../include/math.h ../include/msp430libc.h ../include/setjmp.h ../include/signal.h ../include/stdint.h ../include/stdio.h ../include/stdlib.h ../include/string.h /home/jeff/msp430-toolchain/out/msp430/include/
install -c -m644 ../include/sys/_ansi.h ../include/sys/cdefs.h ../include/sys/config.h ../include/sys/crtld.h ../include/sys/fdlibm.h ../include/sys/ieeefp.h ../include/sys/inttypes.h ../include/sys/reent.h ../include/sys/_types.h ../include/sys/types.h /home/jeff/msp430-toolchain/out/msp430/include/sys/
install -c -m644 ../include/bits/byteswap.h /home/jeff/msp430-toolchain/out/msp430/include/bits/
for i in `msp430-gcc --print-multi-lib 2>/dev/null`; do \
dir=`echo $i | sed -e 's/;.*$//'` ; \
mkdir -p /home/jeff/msp430-toolchain/out/msp430/lib/$dir; \
make -w "MULTILIB_DIR=$dir" install-libc install-libm ; \
done;
make[3]: Entering directory `/home/jeff/msp430-toolchain/msp430libc/msp430-libc-20120224/src'
install -c -m644 Build/./libc.a /home/jeff/msp430-toolchain/out/msp430/lib/./
install -c -m644 Build/./libm.a Build/./libfp.a /home/jeff/msp430-toolchain/out/msp430/lib/./
make[3]: Leaving directory `/home/jeff/msp430-toolchain/msp430libc/msp430-libc-20120224/src'
make[3]: Entering directory `/home/jeff/msp430-toolchain/msp430libc/msp430-libc-20120224/src'
install -c -m644 Build/mcpu-430x/libc.a /home/jeff/msp430-toolchain/out/msp430/lib/mcpu-430x/
install -c -m644 Build/mcpu-430x/libm.a Build/mcpu-430x/libfp.a /home/jeff/msp430-toolchain/out/msp430/lib/mcpu-430x/
make[3]: Leaving directory `/home/jeff/msp430-toolchain/msp430libc/msp430-libc-20120224/src'
make[3]: Entering directory `/home/jeff/msp430-toolchain/msp430libc/msp430-libc-20120224/src'
install -c -m644 Build/mmpy-16/libc.a /home/jeff/msp430-toolchain/out/msp430/lib/mmpy-16/
install -c -m644 Build/mmpy-16/libm.a Build/mmpy-16/libfp.a /home/jeff/msp430-toolchain/out/msp430/lib/mmpy-16/
make[3]: Leaving directory `/home/jeff/msp430-toolchain/msp430libc/msp430-libc-20120224/src'
make[3]: Entering directory `/home/jeff/msp430-toolchain/msp430libc/msp430-libc-20120224/src'
install -c -m644 Build/mcpu-430x/mmpy-16/libc.a /home/jeff/msp430-toolchain/out/msp430/lib/mcpu-430x/mmpy-16/
install -c -m644 Build/mcpu-430x/mmpy-16/libm.a Build/mcpu-430x/mmpy-16/libfp.a /home/jeff/msp430-toolchain/out/msp430/lib/mcpu-430x/mmpy-16/
make[3]: Leaving directory `/home/jeff/msp430-toolchain/msp430libc/msp430-libc-20120224/src'
make[2]: Leaving directory `/home/jeff/msp430-toolchain/msp430libc/msp430-libc-20120224/src'
make[1]: Leaving directory `/home/jeff/msp430-toolchain/msp430libc'
=> Elapsed time = 0m 48s
我們來看看 install 的東西吧, 發現 libc.a 和 libm.a 等, 這邊應該沒有 .so file , 因為MSP430的程式不會大到使用 so lib 的方式來進行動態連結吧 ?!
[jeff@localhost lib]$ pwd
/home/jeff/msp430-toolchain/out/msp430/lib
[jeff@localhost lib]$ ll
total 588
drwxr-xr-x 388 jeff jeff 16384 Apr 6 2012 ldscripts
-rw-r--r-- 1 jeff jeff 188374 Mar 12 02:56 libc.a
-rw-r--r-- 1 jeff jeff 40340 Mar 12 02:56 libfp.a
-rw-r--r-- 1 jeff jeff 280698 Mar 12 02:56 libm.a
drwxrwxr-x 3 jeff jeff 4096 Mar 12 02:56 mcpu-430x
drwxrwxr-x 2 jeff jeff 4096 Mar 12 02:56 mmpy-16
-rw-r--r-- 1 jeff jeff 63267 Apr 6 2012 msp430mcu.spec
[jeff@localhost lib]$
基本上如果之前的 msp430-gcc 沒有編譯錯誤 , 這部份應該就沒有大問題了. 要注意PATH的是設定 , 不然會沒有辦法執行 msp430-gcc .
這部份順利 , 沒有需要 patch 的部份 , 編譯最後訊息如下:
msp430-gcc -c -mcpu=430x -mmpy=16 -I./../include -I. -Wall -Os -gdwarf-2 ./libm/fixunssfsi.c -o Build/mcpu-430x/mmpy-16/fixunssfsi.o
msp430-gcc -c -mcpu=430x -mmpy=16 -I./../include -I. -Wall -Os -gdwarf-2 ./libm/gesf.c -o Build/mcpu-430x/mmpy-16/gesf.o
msp430-gcc -c -mcpu=430x -mmpy=16 -I./../include -I. -Wall -Os -gdwarf-2 ./libm/ltsf.c -o Build/mcpu-430x/mmpy-16/ltsf.o
msp430-gcc -c -mcpu=430x -mmpy=16 -I./../include -I. -Wall -Os -gdwarf-2 ./libm/subsf.c -o Build/mcpu-430x/mmpy-16/subsf.o
msp430-gcc -c -mcpu=430x -mmpy=16 -I./../include -I. -Wall -Os -gdwarf-2 ./libm/nesf.c -o Build/mcpu-430x/mmpy-16/nesf.o
msp430-gcc -x assembler-with-cpp -c -mcpu=430x -mmpy=16 -I./../include -I. ./libm/fpmulparts.S -o Build/mcpu-430x/mmpy-16/fpmulparts.o
msp430-ar rc Build/mcpu-430x/mmpy-16/libfp.a Build/mcpu-430x/mmpy-16/divsf.o Build/mcpu-430x/mmpy-16/fixsfsi.o Build/mcpu-430x/mmpy-16/floatdisf.o Build/mcpu-430x/mmpy-16/gtsf.o Build/mcpu-430x/mmpy-16/mulsf.o Build/mcpu-430x/mmpy-16/addsf.o Build/mcpu-430x/mmpy-16/eqsf.o Build/mcpu-430x/mmpy-16/fixunssfdi.o Build/mcpu-430x/mmpy-16/floatsisf.o Build/mcpu-430x/mmpy-16/lesf.o Build/mcpu-430x/mmpy-16/negsf.o Build/mcpu-430x/mmpy-16/cmpsf.o Build/mcpu-430x/mmpy-16/fixsfdi.o Build/mcpu-430x/mmpy-16/fixunssfsi.o Build/mcpu-430x/mmpy-16/gesf.o Build/mcpu-430x/mmpy-16/ltsf.o Build/mcpu-430x/mmpy-16/subsf.o Build/mcpu-430x/mmpy-16/nesf.o Build/mcpu-430x/mmpy-16/fpmulparts.o
make[3]: Leaving directory `/home/jeff/msp430-toolchain/msp430libc/msp430-libc-20120224/src'
make[2]: Leaving directory `/home/jeff/msp430-toolchain/msp430libc/msp430-libc-20120224/src'
make[2]: Entering directory `/home/jeff/msp430-toolchain/msp430libc/msp430-libc-20120224/src'
install -c -m644 ../include/byteswap.h ../include/ctype.h ../include/debug.h ../include/endian.h ../include/errno.h ../include/inttypes.h ../include/isr_compat.h ../include/legacymsp430.h ../include/limits.h ../include/math.h ../include/msp430libc.h ../include/setjmp.h ../include/signal.h ../include/stdint.h ../include/stdio.h ../include/stdlib.h ../include/string.h /home/jeff/msp430-toolchain/out/msp430/include/
install -c -m644 ../include/sys/_ansi.h ../include/sys/cdefs.h ../include/sys/config.h ../include/sys/crtld.h ../include/sys/fdlibm.h ../include/sys/ieeefp.h ../include/sys/inttypes.h ../include/sys/reent.h ../include/sys/_types.h ../include/sys/types.h /home/jeff/msp430-toolchain/out/msp430/include/sys/
install -c -m644 ../include/bits/byteswap.h /home/jeff/msp430-toolchain/out/msp430/include/bits/
for i in `msp430-gcc --print-multi-lib 2>/dev/null`; do \
dir=`echo $i | sed -e 's/;.*$//'` ; \
mkdir -p /home/jeff/msp430-toolchain/out/msp430/lib/$dir; \
make -w "MULTILIB_DIR=$dir" install-libc install-libm ; \
done;
make[3]: Entering directory `/home/jeff/msp430-toolchain/msp430libc/msp430-libc-20120224/src'
install -c -m644 Build/./libc.a /home/jeff/msp430-toolchain/out/msp430/lib/./
install -c -m644 Build/./libm.a Build/./libfp.a /home/jeff/msp430-toolchain/out/msp430/lib/./
make[3]: Leaving directory `/home/jeff/msp430-toolchain/msp430libc/msp430-libc-20120224/src'
make[3]: Entering directory `/home/jeff/msp430-toolchain/msp430libc/msp430-libc-20120224/src'
install -c -m644 Build/mcpu-430x/libc.a /home/jeff/msp430-toolchain/out/msp430/lib/mcpu-430x/
install -c -m644 Build/mcpu-430x/libm.a Build/mcpu-430x/libfp.a /home/jeff/msp430-toolchain/out/msp430/lib/mcpu-430x/
make[3]: Leaving directory `/home/jeff/msp430-toolchain/msp430libc/msp430-libc-20120224/src'
make[3]: Entering directory `/home/jeff/msp430-toolchain/msp430libc/msp430-libc-20120224/src'
install -c -m644 Build/mmpy-16/libc.a /home/jeff/msp430-toolchain/out/msp430/lib/mmpy-16/
install -c -m644 Build/mmpy-16/libm.a Build/mmpy-16/libfp.a /home/jeff/msp430-toolchain/out/msp430/lib/mmpy-16/
make[3]: Leaving directory `/home/jeff/msp430-toolchain/msp430libc/msp430-libc-20120224/src'
make[3]: Entering directory `/home/jeff/msp430-toolchain/msp430libc/msp430-libc-20120224/src'
install -c -m644 Build/mcpu-430x/mmpy-16/libc.a /home/jeff/msp430-toolchain/out/msp430/lib/mcpu-430x/mmpy-16/
install -c -m644 Build/mcpu-430x/mmpy-16/libm.a Build/mcpu-430x/mmpy-16/libfp.a /home/jeff/msp430-toolchain/out/msp430/lib/mcpu-430x/mmpy-16/
make[3]: Leaving directory `/home/jeff/msp430-toolchain/msp430libc/msp430-libc-20120224/src'
make[2]: Leaving directory `/home/jeff/msp430-toolchain/msp430libc/msp430-libc-20120224/src'
make[1]: Leaving directory `/home/jeff/msp430-toolchain/msp430libc'
=> Elapsed time = 0m 48s
我們來看看 install 的東西吧, 發現 libc.a 和 libm.a 等, 這邊應該沒有 .so file , 因為MSP430的程式不會大到使用 so lib 的方式來進行動態連結吧 ?!
[jeff@localhost lib]$ pwd
/home/jeff/msp430-toolchain/out/msp430/lib
[jeff@localhost lib]$ ll
total 588
drwxr-xr-x 388 jeff jeff 16384 Apr 6 2012 ldscripts
-rw-r--r-- 1 jeff jeff 188374 Mar 12 02:56 libc.a
-rw-r--r-- 1 jeff jeff 40340 Mar 12 02:56 libfp.a
-rw-r--r-- 1 jeff jeff 280698 Mar 12 02:56 libm.a
drwxrwxr-x 3 jeff jeff 4096 Mar 12 02:56 mcpu-430x
drwxrwxr-x 2 jeff jeff 4096 Mar 12 02:56 mmpy-16
-rw-r--r-- 1 jeff jeff 63267 Apr 6 2012 msp430mcu.spec
[jeff@localhost lib]$
2014年3月5日 星期三
Step 3 build "gdb"
接著第三步驟, 編譯 GDB 了 , 雖然有我都使用 printk 或是某個 GPIO 跳幾下來進行 debug.
我認為有些問題 (搶時間, 中斷時間 ) 會因為 online debug tools 的介入而導致這些 bug 不會出現 , 所以我都比較少使用 online debug tools.
但是如果有些演算法的問題 (之前在弄 touch button 的靈敏度調整) ,這時候有 online debug tools 就會方便多了.
所以還是將 GDB 加入吧 , 屆時看要怎要允運用在來看看吧 !!
按照官方網頁的說法 , untar , patch 和 ./configure --target=msp430 --program-prefix="msp430-"
當然 make 過程會發現一些 error ,一個是老問題 , texinfo 的版本問題. Patch 內容如下:
diff -Nura gdb-7.2-orignal/bfd/doc/bfd.texinfo gdb-7.2/bfd/doc/bfd.texinfo
--- gdb-7.2-orignal/bfd/doc/bfd.texinfo 2009-09-02 15:18:38.000000000 +0800
+++ gdb-7.2/bfd/doc/bfd.texinfo 2014-03-05 18:25:20.392761690 +0800
@@ -323,7 +323,7 @@
@printindex cp
@tex
-% I think something like @colophon should be in texinfo. In the
+% I think something like @@colophon should be in texinfo. In the
% meantime:
\long\def\colophon{\hbox to0pt{}\vfill
\centerline{The body of this manual is set in}
@@ -334,7 +334,7 @@
\centerline{{\sl\fontname\tensl\/}}
\centerline{are used for emphasis.}\vfill}
\page\colophon
-% Blame: doc@cygnus.com, 28mar91.
+% Blame: doc@@cygnus.com, 28mar91.
@end tex
@bye
另外出現一個 c file 的錯誤, 不過主要是 sizeof 的參數問題 , 看一下 c code 其目的是將struct stat 的內容值清除為 "0" , 所以 patch 內容如下:
diff -Nura gdb-7.2-orignal/bfd/bfdio.c gdb-7.2/bfd/bfdio.c
--- gdb-7.2-orignal/bfd/bfdio.c 2010-06-09 21:28:31.000000000 +0800
+++ gdb-7.2/bfd/bfdio.c 2014-03-05 18:35:25.113813617 +0800
@@ -577,7 +577,7 @@
{
struct bfd_in_memory *bim = (struct bfd_in_memory *) abfd->iostream;
- memset (statbuf, 0, sizeof (statbuf));
+ memset (statbuf, 0, sizeof (struct stat ));
statbuf->st_size = bim->size;
return 0;
編譯 gdb 的最後一些 message :
make[5]: Entering directory `/home/jeff/msp430-toolchain/gdb/gdb-build/gdb'
make[6]: Entering directory `/home/jeff/msp430-toolchain/gdb/gdb-build/gdb/gnulib'
make all-recursive
make[7]: Entering directory `/home/jeff/msp430-toolchain/gdb/gdb-build/gdb/gnulib'
make[8]: Entering directory `/home/jeff/msp430-toolchain/gdb/gdb-build/gdb/gnulib'
make[8]: Nothing to be done for `all-am'.
make[8]: Leaving directory `/home/jeff/msp430-toolchain/gdb/gdb-build/gdb/gnulib'
make[7]: Leaving directory `/home/jeff/msp430-toolchain/gdb/gdb-build/gdb/gnulib'
make[6]: Leaving directory `/home/jeff/msp430-toolchain/gdb/gdb-build/gdb/gnulib'
make[5]: Leaving directory `/home/jeff/msp430-toolchain/gdb/gdb-build/gdb'
if [ "`cd ../../gdb-7.2/gdb && pwd`" != "`pwd`" ] ; then \
mkdir -p ./syscalls/ ; \
list='gdb-syscalls.dtd ppc-linux.xml ppc64-linux.xml i386-linux.xml amd64-linux.xml sparc-linux.xml sparc64-linux.xml' ; \
for file in $list ; do \
f=../../gdb-7.2/gdb/syscalls//$file ; \
if test -f $f ; then \
/usr/bin/install -c -m 644 $f \
./syscalls/ ; \
fi ; \
done ; \
fi ;
make[5]: Entering directory `/home/jeff/msp430-toolchain/gdb/gdb-build/gdb'
make[6]: Entering directory `/home/jeff/msp430-toolchain/gdb/gdb-build/gdb/doc'
make[6]: Nothing to be done for `all'.
make[6]: Leaving directory `/home/jeff/msp430-toolchain/gdb/gdb-build/gdb/doc'
make[5]: Leaving directory `/home/jeff/msp430-toolchain/gdb/gdb-build/gdb'
/bin/sh ../../gdb-7.2/gdb/../mkinstalldirs /home/jeff/msp430-toolchain/out/share
cats=""; for cat in $cats; do \
lang=`basename $cat | sed 's/\.gmo$//'`; \
if [ -f $cat ]; then :; \
elif [ -f ../../gdb-7.2/gdb/$cat ]; then cat=../../gdb-7.2/gdb/$cat; \
else continue; \
fi; \
dir=/home/jeff/msp430-toolchain/out/share/locale/$lang/LC_MESSAGES; \
echo /bin/sh ../../gdb-7.2/gdb/../mkinstalldirs $dir; \
/bin/sh ../../gdb-7.2/gdb/../mkinstalldirs $dir || exit 1; \
echo /usr/bin/install -c -m 644 $cat $dir/gdb.mo; \
/usr/bin/install -c -m 644 $cat $dir/gdb.mo; \
done
transformed_name=`t='s&^&msp430-&'; \
echo gdbtui | sed -e "$t"` ; \
if test "x$transformed_name" = x; then \
transformed_name=gdbtui ; \
else \
true ; \
fi ; \
/bin/sh ../../gdb-7.2/gdb/../mkinstalldirs /home/jeff/msp430-toolchain/out/bin ; \
/usr/bin/install -c gdbtui \
/home/jeff/msp430-toolchain/out/bin/$transformed_name ; \
/bin/sh ../../gdb-7.2/gdb/../mkinstalldirs \
/home/jeff/msp430-toolchain/out/share/man/man1 ; \
/usr/bin/install -c -m 644 ../../gdb-7.2/gdb/gdb.1 \
/home/jeff/msp430-toolchain/out/share/man/man1/$transformed_name.1
/bin/sh ../../gdb-7.2/gdb/../mkinstalldirs \
/home/jeff/msp430-toolchain/out/share/gdb/syscalls/ ; \
list='gdb-syscalls.dtd ppc-linux.xml ppc64-linux.xml i386-linux.xml amd64-linux.xml sparc-linux.xml sparc64-linux.xml' ; \
for file in $list ; do \
f=../../gdb-7.2/gdb/syscalls//$file ; \
if test -f $f ; then \
/usr/bin/install -c -m 644 $f \
/home/jeff/msp430-toolchain/out/share/gdb/syscalls/ ; \
fi ; \
done ;
mkdir -p -- /home/jeff/msp430-toolchain/out/share/gdb/syscalls/
transformed_name=`t='s&^&msp430-&'; \
echo gdb | sed -e "$t"` ; \
if test "x$transformed_name" = x; then \
transformed_name=gdb ; \
else \
true ; \
fi ; \
/bin/sh ../../gdb-7.2/gdb/../mkinstalldirs /home/jeff/msp430-toolchain/out/bin ; \
/usr/bin/install -c gdb \
/home/jeff/msp430-toolchain/out/bin/$transformed_name ; \
/bin/sh ../../gdb-7.2/gdb/../mkinstalldirs \
/home/jeff/msp430-toolchain/out/share/man/man1 ; \
/usr/bin/install -c -m 644 ../../gdb-7.2/gdb/gdb.1 \
/home/jeff/msp430-toolchain/out/share/man/man1/$transformed_name.1
make[5]: Entering directory `/home/jeff/msp430-toolchain/gdb/gdb-build/gdb'
make[6]: Entering directory `/home/jeff/msp430-toolchain/gdb/gdb-build/gdb/doc'
(test "ln -s" = "ln -s" && \
ln -s ../../../gdb-7.2/gdb/doc/all-cfg.texi gdb-cfg.texi) || \
ln ../../../gdb-7.2/gdb/doc/all-cfg.texi gdb-cfg.texi || \
cp ../../../gdb-7.2/gdb/doc/all-cfg.texi gdb-cfg.texi
/bin/sh ../../../gdb-7.2/gdb/doc/../../mkinstalldirs /home/jeff/msp430-toolchain/out/share/info
/usr/bin/install -c -m 644 ../../../gdb-7.2/gdb/doc/gdb.info /home/jeff/msp430-toolchain/out/share/info/gdb.info
/usr/bin/install -c -m 644 ../../../gdb-7.2/gdb/doc/gdb.info-1 /home/jeff/msp430-toolchain/out/share/info/gdb.info-1
/usr/bin/install -c -m 644 ../../../gdb-7.2/gdb/doc/gdb.info-2 /home/jeff/msp430-toolchain/out/share/info/gdb.info-2
/usr/bin/install -c -m 644 ../../../gdb-7.2/gdb/doc/gdb.info-3 /home/jeff/msp430-toolchain/out/share/info/gdb.info-3
/usr/bin/install -c -m 644 ../../../gdb-7.2/gdb/doc/gdb.info-4 /home/jeff/msp430-toolchain/out/share/info/gdb.info-4
/usr/bin/install -c -m 644 ../../../gdb-7.2/gdb/doc/gdb.info-5 /home/jeff/msp430-toolchain/out/share/info/gdb.info-5
/usr/bin/install -c -m 644 ../../../gdb-7.2/gdb/doc/gdb.info-6 /home/jeff/msp430-toolchain/out/share/info/gdb.info-6
/usr/bin/install -c -m 644 ../../../gdb-7.2/gdb/doc/gdbint.info /home/jeff/msp430-toolchain/out/share/info/gdbint.info
/usr/bin/install -c -m 644 ../../../gdb-7.2/gdb/doc/gdbint.info-1 /home/jeff/msp430-toolchain/out/share/info/gdbint.info-1
/usr/bin/install -c -m 644 ../../../gdb-7.2/gdb/doc/gdbint.info-2 /home/jeff/msp430-toolchain/out/share/info/gdbint.info-2
/usr/bin/install -c -m 644 ../../../gdb-7.2/gdb/doc/stabs.info /home/jeff/msp430-toolchain/out/share/info/stabs.info
/usr/bin/install -c -m 644 ../../../gdb-7.2/gdb/doc/annotate.info /home/jeff/msp430-toolchain/out/share/info/annotate.info
install-info --info-dir=/home/jeff/msp430-toolchain/out/share/info /home/jeff/msp430-toolchain/out/share/info/gdb.info
install-info --info-dir=/home/jeff/msp430-toolchain/out/share/info /home/jeff/msp430-toolchain/out/share/info/gdbint.info
install-info --info-dir=/home/jeff/msp430-toolchain/out/share/info /home/jeff/msp430-toolchain/out/share/info/stabs.info
install-info --info-dir=/home/jeff/msp430-toolchain/out/share/info /home/jeff/msp430-toolchain/out/share/info/annotate.info
make[6]: Leaving directory `/home/jeff/msp430-toolchain/gdb/gdb-build/gdb/doc'
make[6]: Entering directory `/home/jeff/msp430-toolchain/gdb/gdb-build/gdb/testsuite'
make[6]: Nothing to be done for `install'.
make[6]: Leaving directory `/home/jeff/msp430-toolchain/gdb/gdb-build/gdb/testsuite'
make[5]: Leaving directory `/home/jeff/msp430-toolchain/gdb/gdb-build/gdb'
make[4]: Leaving directory `/home/jeff/msp430-toolchain/gdb/gdb-build/gdb'
make[3]: Nothing to be done for `install-target'.
make[3]: Leaving directory `/home/jeff/msp430-toolchain/gdb/gdb-build'
make[2]: Leaving directory `/home/jeff/msp430-toolchain/gdb/gdb-build'
make[1]: Leaving directory `/home/jeff/msp430-toolchain/gdb'
## Build target 'all' is completed.
=> Elapsed time = 10m 33s
來看看 msp430-gdb 的版本吧:
[jeff@localhost msp430-toolchain]$ pwd
/home/jeff/msp430-toolchain
[jeff@localhost msp430-toolchain]$ ./out/bin/msp430-gdb --version
GNU gdb (GDB) 7.2
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "--host=x86_64-unknown-linux-gnu --target=msp430".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
[jeff@localhost msp430-toolchain]$
我認為有些問題 (搶時間, 中斷時間 ) 會因為 online debug tools 的介入而導致這些 bug 不會出現 , 所以我都比較少使用 online debug tools.
但是如果有些演算法的問題 (之前在弄 touch button 的靈敏度調整) ,這時候有 online debug tools 就會方便多了.
所以還是將 GDB 加入吧 , 屆時看要怎要允運用在來看看吧 !!
按照官方網頁的說法 , untar , patch 和 ./configure --target=msp430 --program-prefix="msp430-"
當然 make 過程會發現一些 error ,一個是老問題 , texinfo 的版本問題. Patch 內容如下:
diff -Nura gdb-7.2-orignal/bfd/doc/bfd.texinfo gdb-7.2/bfd/doc/bfd.texinfo
--- gdb-7.2-orignal/bfd/doc/bfd.texinfo 2009-09-02 15:18:38.000000000 +0800
+++ gdb-7.2/bfd/doc/bfd.texinfo 2014-03-05 18:25:20.392761690 +0800
@@ -323,7 +323,7 @@
@printindex cp
@tex
-% I think something like @colophon should be in texinfo. In the
+% I think something like @@colophon should be in texinfo. In the
% meantime:
\long\def\colophon{\hbox to0pt{}\vfill
\centerline{The body of this manual is set in}
@@ -334,7 +334,7 @@
\centerline{{\sl\fontname\tensl\/}}
\centerline{are used for emphasis.}\vfill}
\page\colophon
-% Blame: doc@cygnus.com, 28mar91.
+% Blame: doc@@cygnus.com, 28mar91.
@end tex
@bye
另外出現一個 c file 的錯誤, 不過主要是 sizeof 的參數問題 , 看一下 c code 其目的是將struct stat 的內容值清除為 "0" , 所以 patch 內容如下:
diff -Nura gdb-7.2-orignal/bfd/bfdio.c gdb-7.2/bfd/bfdio.c
--- gdb-7.2-orignal/bfd/bfdio.c 2010-06-09 21:28:31.000000000 +0800
+++ gdb-7.2/bfd/bfdio.c 2014-03-05 18:35:25.113813617 +0800
@@ -577,7 +577,7 @@
{
struct bfd_in_memory *bim = (struct bfd_in_memory *) abfd->iostream;
- memset (statbuf, 0, sizeof (statbuf));
+ memset (statbuf, 0, sizeof (struct stat ));
statbuf->st_size = bim->size;
return 0;
編譯 gdb 的最後一些 message :
make[5]: Entering directory `/home/jeff/msp430-toolchain/gdb/gdb-build/gdb'
make[6]: Entering directory `/home/jeff/msp430-toolchain/gdb/gdb-build/gdb/gnulib'
make all-recursive
make[7]: Entering directory `/home/jeff/msp430-toolchain/gdb/gdb-build/gdb/gnulib'
make[8]: Entering directory `/home/jeff/msp430-toolchain/gdb/gdb-build/gdb/gnulib'
make[8]: Nothing to be done for `all-am'.
make[8]: Leaving directory `/home/jeff/msp430-toolchain/gdb/gdb-build/gdb/gnulib'
make[7]: Leaving directory `/home/jeff/msp430-toolchain/gdb/gdb-build/gdb/gnulib'
make[6]: Leaving directory `/home/jeff/msp430-toolchain/gdb/gdb-build/gdb/gnulib'
make[5]: Leaving directory `/home/jeff/msp430-toolchain/gdb/gdb-build/gdb'
if [ "`cd ../../gdb-7.2/gdb && pwd`" != "`pwd`" ] ; then \
mkdir -p ./syscalls/ ; \
list='gdb-syscalls.dtd ppc-linux.xml ppc64-linux.xml i386-linux.xml amd64-linux.xml sparc-linux.xml sparc64-linux.xml' ; \
for file in $list ; do \
f=../../gdb-7.2/gdb/syscalls//$file ; \
if test -f $f ; then \
/usr/bin/install -c -m 644 $f \
./syscalls/ ; \
fi ; \
done ; \
fi ;
make[5]: Entering directory `/home/jeff/msp430-toolchain/gdb/gdb-build/gdb'
make[6]: Entering directory `/home/jeff/msp430-toolchain/gdb/gdb-build/gdb/doc'
make[6]: Nothing to be done for `all'.
make[6]: Leaving directory `/home/jeff/msp430-toolchain/gdb/gdb-build/gdb/doc'
make[5]: Leaving directory `/home/jeff/msp430-toolchain/gdb/gdb-build/gdb'
/bin/sh ../../gdb-7.2/gdb/../mkinstalldirs /home/jeff/msp430-toolchain/out/share
cats=""; for cat in $cats; do \
lang=`basename $cat | sed 's/\.gmo$//'`; \
if [ -f $cat ]; then :; \
elif [ -f ../../gdb-7.2/gdb/$cat ]; then cat=../../gdb-7.2/gdb/$cat; \
else continue; \
fi; \
dir=/home/jeff/msp430-toolchain/out/share/locale/$lang/LC_MESSAGES; \
echo /bin/sh ../../gdb-7.2/gdb/../mkinstalldirs $dir; \
/bin/sh ../../gdb-7.2/gdb/../mkinstalldirs $dir || exit 1; \
echo /usr/bin/install -c -m 644 $cat $dir/gdb.mo; \
/usr/bin/install -c -m 644 $cat $dir/gdb.mo; \
done
transformed_name=`t='s&^&msp430-&'; \
echo gdbtui | sed -e "$t"` ; \
if test "x$transformed_name" = x; then \
transformed_name=gdbtui ; \
else \
true ; \
fi ; \
/bin/sh ../../gdb-7.2/gdb/../mkinstalldirs /home/jeff/msp430-toolchain/out/bin ; \
/usr/bin/install -c gdbtui \
/home/jeff/msp430-toolchain/out/bin/$transformed_name ; \
/bin/sh ../../gdb-7.2/gdb/../mkinstalldirs \
/home/jeff/msp430-toolchain/out/share/man/man1 ; \
/usr/bin/install -c -m 644 ../../gdb-7.2/gdb/gdb.1 \
/home/jeff/msp430-toolchain/out/share/man/man1/$transformed_name.1
/bin/sh ../../gdb-7.2/gdb/../mkinstalldirs \
/home/jeff/msp430-toolchain/out/share/gdb/syscalls/ ; \
list='gdb-syscalls.dtd ppc-linux.xml ppc64-linux.xml i386-linux.xml amd64-linux.xml sparc-linux.xml sparc64-linux.xml' ; \
for file in $list ; do \
f=../../gdb-7.2/gdb/syscalls//$file ; \
if test -f $f ; then \
/usr/bin/install -c -m 644 $f \
/home/jeff/msp430-toolchain/out/share/gdb/syscalls/ ; \
fi ; \
done ;
mkdir -p -- /home/jeff/msp430-toolchain/out/share/gdb/syscalls/
transformed_name=`t='s&^&msp430-&'; \
echo gdb | sed -e "$t"` ; \
if test "x$transformed_name" = x; then \
transformed_name=gdb ; \
else \
true ; \
fi ; \
/bin/sh ../../gdb-7.2/gdb/../mkinstalldirs /home/jeff/msp430-toolchain/out/bin ; \
/usr/bin/install -c gdb \
/home/jeff/msp430-toolchain/out/bin/$transformed_name ; \
/bin/sh ../../gdb-7.2/gdb/../mkinstalldirs \
/home/jeff/msp430-toolchain/out/share/man/man1 ; \
/usr/bin/install -c -m 644 ../../gdb-7.2/gdb/gdb.1 \
/home/jeff/msp430-toolchain/out/share/man/man1/$transformed_name.1
make[5]: Entering directory `/home/jeff/msp430-toolchain/gdb/gdb-build/gdb'
make[6]: Entering directory `/home/jeff/msp430-toolchain/gdb/gdb-build/gdb/doc'
(test "ln -s" = "ln -s" && \
ln -s ../../../gdb-7.2/gdb/doc/all-cfg.texi gdb-cfg.texi) || \
ln ../../../gdb-7.2/gdb/doc/all-cfg.texi gdb-cfg.texi || \
cp ../../../gdb-7.2/gdb/doc/all-cfg.texi gdb-cfg.texi
/bin/sh ../../../gdb-7.2/gdb/doc/../../mkinstalldirs /home/jeff/msp430-toolchain/out/share/info
/usr/bin/install -c -m 644 ../../../gdb-7.2/gdb/doc/gdb.info /home/jeff/msp430-toolchain/out/share/info/gdb.info
/usr/bin/install -c -m 644 ../../../gdb-7.2/gdb/doc/gdb.info-1 /home/jeff/msp430-toolchain/out/share/info/gdb.info-1
/usr/bin/install -c -m 644 ../../../gdb-7.2/gdb/doc/gdb.info-2 /home/jeff/msp430-toolchain/out/share/info/gdb.info-2
/usr/bin/install -c -m 644 ../../../gdb-7.2/gdb/doc/gdb.info-3 /home/jeff/msp430-toolchain/out/share/info/gdb.info-3
/usr/bin/install -c -m 644 ../../../gdb-7.2/gdb/doc/gdb.info-4 /home/jeff/msp430-toolchain/out/share/info/gdb.info-4
/usr/bin/install -c -m 644 ../../../gdb-7.2/gdb/doc/gdb.info-5 /home/jeff/msp430-toolchain/out/share/info/gdb.info-5
/usr/bin/install -c -m 644 ../../../gdb-7.2/gdb/doc/gdb.info-6 /home/jeff/msp430-toolchain/out/share/info/gdb.info-6
/usr/bin/install -c -m 644 ../../../gdb-7.2/gdb/doc/gdbint.info /home/jeff/msp430-toolchain/out/share/info/gdbint.info
/usr/bin/install -c -m 644 ../../../gdb-7.2/gdb/doc/gdbint.info-1 /home/jeff/msp430-toolchain/out/share/info/gdbint.info-1
/usr/bin/install -c -m 644 ../../../gdb-7.2/gdb/doc/gdbint.info-2 /home/jeff/msp430-toolchain/out/share/info/gdbint.info-2
/usr/bin/install -c -m 644 ../../../gdb-7.2/gdb/doc/stabs.info /home/jeff/msp430-toolchain/out/share/info/stabs.info
/usr/bin/install -c -m 644 ../../../gdb-7.2/gdb/doc/annotate.info /home/jeff/msp430-toolchain/out/share/info/annotate.info
install-info --info-dir=/home/jeff/msp430-toolchain/out/share/info /home/jeff/msp430-toolchain/out/share/info/gdb.info
install-info --info-dir=/home/jeff/msp430-toolchain/out/share/info /home/jeff/msp430-toolchain/out/share/info/gdbint.info
install-info --info-dir=/home/jeff/msp430-toolchain/out/share/info /home/jeff/msp430-toolchain/out/share/info/stabs.info
install-info --info-dir=/home/jeff/msp430-toolchain/out/share/info /home/jeff/msp430-toolchain/out/share/info/annotate.info
make[6]: Leaving directory `/home/jeff/msp430-toolchain/gdb/gdb-build/gdb/doc'
make[6]: Entering directory `/home/jeff/msp430-toolchain/gdb/gdb-build/gdb/testsuite'
make[6]: Nothing to be done for `install'.
make[6]: Leaving directory `/home/jeff/msp430-toolchain/gdb/gdb-build/gdb/testsuite'
make[5]: Leaving directory `/home/jeff/msp430-toolchain/gdb/gdb-build/gdb'
make[4]: Leaving directory `/home/jeff/msp430-toolchain/gdb/gdb-build/gdb'
make[3]: Nothing to be done for `install-target'.
make[3]: Leaving directory `/home/jeff/msp430-toolchain/gdb/gdb-build'
make[2]: Leaving directory `/home/jeff/msp430-toolchain/gdb/gdb-build'
make[1]: Leaving directory `/home/jeff/msp430-toolchain/gdb'
## Build target 'all' is completed.
=> Elapsed time = 10m 33s
來看看 msp430-gdb 的版本吧:
[jeff@localhost msp430-toolchain]$ pwd
/home/jeff/msp430-toolchain
[jeff@localhost msp430-toolchain]$ ./out/bin/msp430-gdb --version
GNU gdb (GDB) 7.2
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "--host=x86_64-unknown-linux-gnu --target=msp430".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
[jeff@localhost msp430-toolchain]$
Step 2 build "gcc"
之前的 Makefile 環境都架設好了 , 所以只要放入 gcc-core-4.6.3.tar.bz2 , 和在 ./patch/gcc-4.6.3/ 內放入三個 msp430 gcc 的 patch file 就可以進行編譯了.
不過要先執行 ./contrib/download_prerequisites 這個,這個主要會將 gcc 所需要的 gmp , mpfr 等所相依的原始檔(source code ) 下載在 gcc-core-4.6.3 的資料夾內.
接著就按照 官方網頁的方式進行 configure.
./configure --target=msp430 --enable-languages=c --program-prefix="msp430-"
當然在 make 過程會發現 texinfo 版本問題 , 所以需要修改一下 texi 檔案,全部的 patch 內容如下:
diff -Nura gcc-4.6.3-orignal/gcc/doc/cppopts.texi gcc-4.6.3/gcc/doc/cppopts.texi
--- gcc-4.6.3-orignal/gcc/doc/cppopts.texi 2010-12-20 15:26:12.000000000 +0800
+++ gcc-4.6.3/gcc/doc/cppopts.texi 2014-03-05 02:36:45.304027556 +0800
@@ -769,7 +769,7 @@
Enable special code to work around file systems which only permit very
short file names, such as MS-DOS@.
-@itemx --help
+@item --help
@itemx --target-help
@opindex help
@opindex target-help
diff -Nura gcc-4.6.3-orignal/gcc/doc/generic.texi gcc-4.6.3/gcc/doc/generic.texi
--- gcc-4.6.3-orignal/gcc/doc/generic.texi 2011-01-02 09:30:55.000000000 +0800
+++ gcc-4.6.3/gcc/doc/generic.texi 2014-03-05 02:56:07.343415078 +0800
@@ -1415,13 +1415,13 @@
not matter. The type of the operands and that of the result are
always of @code{BOOLEAN_TYPE} or @code{INTEGER_TYPE}.
-@itemx POINTER_PLUS_EXPR
+@item POINTER_PLUS_EXPR
This node represents pointer arithmetic. The first operand is always
a pointer/reference type. The second operand is always an unsigned
integer type compatible with sizetype. This is the only binary
arithmetic operand that can operate on pointer types.
-@itemx PLUS_EXPR
+@item PLUS_EXPR
@itemx MINUS_EXPR
@itemx MULT_EXPR
These nodes represent various binary arithmetic operations.
diff -Nura gcc-4.6.3-orignal/gcc/doc/invoke.texi gcc-4.6.3/gcc/doc/invoke.texi
--- gcc-4.6.3-orignal/gcc/doc/invoke.texi 2012-01-04 00:43:38.000000000 +0800
+++ gcc-4.6.3/gcc/doc/invoke.texi 2014-03-05 02:53:49.857753175 +0800
@@ -165,7 +165,7 @@
-pipe -pass-exit-codes @gol
-x @var{language} -v -### --help@r{[}=@var{class}@r{[},@dots{}@r{]]} --target-help @gol
--version -wrapper @@@var{file} -fplugin=@var{file} -fplugin-arg-@var{name}=@var{arg} @gol
--fdump-ada-spec@r{[}-slim@r{]}} -fdump-go-spec=@var{file}
+-fdump-ada-spec@r{[}-slim@r{]} -fdump-go-spec=@var{file} }
@item C Language Options
@xref{C Dialect Options,,Options Controlling C Dialect}.
@@ -5085,11 +5085,11 @@
@option{-fdump-rtl-ce3} enable dumping after the three
if conversion passes.
-@itemx -fdump-rtl-cprop_hardreg
+@item -fdump-rtl-cprop_hardreg
@opindex fdump-rtl-cprop_hardreg
Dump after hard register copy propagation.
-@itemx -fdump-rtl-csa
+@item -fdump-rtl-csa
@opindex fdump-rtl-csa
Dump after combining stack adjustments.
@@ -5100,11 +5100,11 @@
@option{-fdump-rtl-cse1} and @option{-fdump-rtl-cse2} enable dumping after
the two common sub-expression elimination passes.
-@itemx -fdump-rtl-dce
+@item -fdump-rtl-dce
@opindex fdump-rtl-dce
Dump after the standalone dead code elimination passes.
-@itemx -fdump-rtl-dbr
+@item -fdump-rtl-dbr
@opindex fdump-rtl-dbr
Dump after delayed branch scheduling.
@@ -5149,7 +5149,7 @@
@opindex fdump-rtl-initvals
Dump after the computation of the initial value sets.
-@itemx -fdump-rtl-into_cfglayout
+@item -fdump-rtl-into_cfglayout
@opindex fdump-rtl-into_cfglayout
Dump after converting to cfglayout mode.
@@ -5179,7 +5179,7 @@
@opindex fdump-rtl-rnreg
Dump after register renumbering.
-@itemx -fdump-rtl-outof_cfglayout
+@item -fdump-rtl-outof_cfglayout
@opindex fdump-rtl-outof_cfglayout
Dump after converting from cfglayout mode.
@@ -5191,7 +5191,7 @@
@opindex fdump-rtl-postreload
Dump after post-reload optimizations.
-@itemx -fdump-rtl-pro_and_epilogue
+@item -fdump-rtl-pro_and_epilogue
@opindex fdump-rtl-pro_and_epilogue
Dump after generating the function pro and epilogues.
編譯過程最後一些訊息:
make[8]: Entering directory `/home/jeff/msp430-toolchain/gcc/gcc-build/msp430/mcpu-430x/libquadmath'
true DO=install multi-do # make
test -z "/home/jeff/msp430-toolchain/out/msp430/lib/mcpu-430x" || /usr/bin/mkdir -p "/home/jeff/msp430-toolchain/out/msp430/lib/mcpu-430x"
test -z "/home/jeff/msp430-toolchain/out/share/info" || /usr/bin/mkdir -p "/home/jeff/msp430-toolchain/out/share/info"
/usr/bin/install -c -m 644 ../../../../gcc-4.6.3/libquadmath/libquadmath.info '/home/jeff/msp430-toolchain/out/share/info'
install-info --info-dir='/home/jeff/msp430-toolchain/out/share/info' '/home/jeff/msp430-toolchain/out/share/info/libquadmath.info'
test -z "" || /usr/bin/mkdir -p ""
make[8]: Leaving directory `/home/jeff/msp430-toolchain/gcc/gcc-build/msp430/mcpu-430x/libquadmath'
make[7]: Leaving directory `/home/jeff/msp430-toolchain/gcc/gcc-build/msp430/mcpu-430x/libquadmath'
make[7]: Entering directory `/home/jeff/msp430-toolchain/gcc/gcc-build/msp430/mmpy-16/libquadmath'
true DO=all multi-do # make
make[8]: Entering directory `/home/jeff/msp430-toolchain/gcc/gcc-build/msp430/mmpy-16/libquadmath'
true DO=install multi-do # make
test -z "/home/jeff/msp430-toolchain/out/msp430/lib/mmpy-16" || /usr/bin/mkdir -p "/home/jeff/msp430-toolchain/out/msp430/lib/mmpy-16"
test -z "/home/jeff/msp430-toolchain/out/share/info" || /usr/bin/mkdir -p "/home/jeff/msp430-toolchain/out/share/info"
/usr/bin/install -c -m 644 ../../../../gcc-4.6.3/libquadmath/libquadmath.info '/home/jeff/msp430-toolchain/out/share/info'
install-info --info-dir='/home/jeff/msp430-toolchain/out/share/info' '/home/jeff/msp430-toolchain/out/share/info/libquadmath.info'
test -z "" || /usr/bin/mkdir -p ""
make[8]: Leaving directory `/home/jeff/msp430-toolchain/gcc/gcc-build/msp430/mmpy-16/libquadmath'
make[7]: Leaving directory `/home/jeff/msp430-toolchain/gcc/gcc-build/msp430/mmpy-16/libquadmath'
make[7]: Entering directory `/home/jeff/msp430-toolchain/gcc/gcc-build/msp430/mcpu-430x/mmpy-16/libquadmath'
true DO=all multi-do # make
make[8]: Entering directory `/home/jeff/msp430-toolchain/gcc/gcc-build/msp430/mcpu-430x/mmpy-16/libquadmath'
true DO=install multi-do # make
test -z "/home/jeff/msp430-toolchain/out/msp430/lib/mcpu-430x/mmpy-16" || /usr/bin/mkdir -p "/home/jeff/msp430-toolchain/out/msp430/lib/mcpu-430x/mmpy-16"
test -z "/home/jeff/msp430-toolchain/out/share/info" || /usr/bin/mkdir -p "/home/jeff/msp430-toolchain/out/share/info"
/usr/bin/install -c -m 644 ../../../../../gcc-4.6.3/libquadmath/libquadmath.info '/home/jeff/msp430-toolchain/out/share/info'
install-info --info-dir='/home/jeff/msp430-toolchain/out/share/info' '/home/jeff/msp430-toolchain/out/share/info/libquadmath.info'
test -z "" || /usr/bin/mkdir -p ""
make[8]: Leaving directory `/home/jeff/msp430-toolchain/gcc/gcc-build/msp430/mcpu-430x/mmpy-16/libquadmath'
make[7]: Leaving directory `/home/jeff/msp430-toolchain/gcc/gcc-build/msp430/mcpu-430x/mmpy-16/libquadmath'
make[6]: Leaving directory `/home/jeff/msp430-toolchain/gcc/gcc-build/msp430/libquadmath'
test -z "/home/jeff/msp430-toolchain/out/msp430/lib" || /usr/bin/mkdir -p "/home/jeff/msp430-toolchain/out/msp430/lib"
test -z "/home/jeff/msp430-toolchain/out/share/info" || /usr/bin/mkdir -p "/home/jeff/msp430-toolchain/out/share/info"
/usr/bin/install -c -m 644 ../../../gcc-4.6.3/libquadmath/libquadmath.info '/home/jeff/msp430-toolchain/out/share/info'
install-info --info-dir='/home/jeff/msp430-toolchain/out/share/info' '/home/jeff/msp430-toolchain/out/share/info/libquadmath.info'
test -z "" || /usr/bin/mkdir -p ""
make[5]: Leaving directory `/home/jeff/msp430-toolchain/gcc/gcc-build/msp430/libquadmath'
make[4]: Leaving directory `/home/jeff/msp430-toolchain/gcc/gcc-build/msp430/libquadmath'
make[3]: Leaving directory `/home/jeff/msp430-toolchain/gcc/gcc-build'
make[2]: Leaving directory `/home/jeff/msp430-toolchain/gcc/gcc-build'
make[1]: Leaving directory `/home/jeff/msp430-toolchain/gcc'
## Build target 'all' is completed.
=> Elapsed time = 10m 59s
沒問題 , 完工...看看msp430-gcc 的版本訊息吧, 如下"
[jeff@localhost bin]$ pwd
/home/jeff/msp430-toolchain/out/bin
[jeff@localhost bin]$ ./msp430-gcc --version
msp430-gcc (GCC) 4.6.3 20120301 (mspgcc LTS 20120406 unpatched)
Copyright (C) 2011 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
不過要先執行 ./contrib/download_prerequisites 這個,這個主要會將 gcc 所需要的 gmp , mpfr 等所相依的原始檔(source code ) 下載在 gcc-core-4.6.3 的資料夾內.
接著就按照 官方網頁的方式進行 configure.
./configure --target=msp430 --enable-languages=c --program-prefix="msp430-"
當然在 make 過程會發現 texinfo 版本問題 , 所以需要修改一下 texi 檔案,全部的 patch 內容如下:
diff -Nura gcc-4.6.3-orignal/gcc/doc/cppopts.texi gcc-4.6.3/gcc/doc/cppopts.texi
--- gcc-4.6.3-orignal/gcc/doc/cppopts.texi 2010-12-20 15:26:12.000000000 +0800
+++ gcc-4.6.3/gcc/doc/cppopts.texi 2014-03-05 02:36:45.304027556 +0800
@@ -769,7 +769,7 @@
Enable special code to work around file systems which only permit very
short file names, such as MS-DOS@.
-@itemx --help
+@item --help
@itemx --target-help
@opindex help
@opindex target-help
diff -Nura gcc-4.6.3-orignal/gcc/doc/generic.texi gcc-4.6.3/gcc/doc/generic.texi
--- gcc-4.6.3-orignal/gcc/doc/generic.texi 2011-01-02 09:30:55.000000000 +0800
+++ gcc-4.6.3/gcc/doc/generic.texi 2014-03-05 02:56:07.343415078 +0800
@@ -1415,13 +1415,13 @@
not matter. The type of the operands and that of the result are
always of @code{BOOLEAN_TYPE} or @code{INTEGER_TYPE}.
-@itemx POINTER_PLUS_EXPR
+@item POINTER_PLUS_EXPR
This node represents pointer arithmetic. The first operand is always
a pointer/reference type. The second operand is always an unsigned
integer type compatible with sizetype. This is the only binary
arithmetic operand that can operate on pointer types.
-@itemx PLUS_EXPR
+@item PLUS_EXPR
@itemx MINUS_EXPR
@itemx MULT_EXPR
These nodes represent various binary arithmetic operations.
diff -Nura gcc-4.6.3-orignal/gcc/doc/invoke.texi gcc-4.6.3/gcc/doc/invoke.texi
--- gcc-4.6.3-orignal/gcc/doc/invoke.texi 2012-01-04 00:43:38.000000000 +0800
+++ gcc-4.6.3/gcc/doc/invoke.texi 2014-03-05 02:53:49.857753175 +0800
@@ -165,7 +165,7 @@
-pipe -pass-exit-codes @gol
-x @var{language} -v -### --help@r{[}=@var{class}@r{[},@dots{}@r{]]} --target-help @gol
--version -wrapper @@@var{file} -fplugin=@var{file} -fplugin-arg-@var{name}=@var{arg} @gol
--fdump-ada-spec@r{[}-slim@r{]}} -fdump-go-spec=@var{file}
+-fdump-ada-spec@r{[}-slim@r{]} -fdump-go-spec=@var{file} }
@item C Language Options
@xref{C Dialect Options,,Options Controlling C Dialect}.
@@ -5085,11 +5085,11 @@
@option{-fdump-rtl-ce3} enable dumping after the three
if conversion passes.
-@itemx -fdump-rtl-cprop_hardreg
+@item -fdump-rtl-cprop_hardreg
@opindex fdump-rtl-cprop_hardreg
Dump after hard register copy propagation.
-@itemx -fdump-rtl-csa
+@item -fdump-rtl-csa
@opindex fdump-rtl-csa
Dump after combining stack adjustments.
@@ -5100,11 +5100,11 @@
@option{-fdump-rtl-cse1} and @option{-fdump-rtl-cse2} enable dumping after
the two common sub-expression elimination passes.
-@itemx -fdump-rtl-dce
+@item -fdump-rtl-dce
@opindex fdump-rtl-dce
Dump after the standalone dead code elimination passes.
-@itemx -fdump-rtl-dbr
+@item -fdump-rtl-dbr
@opindex fdump-rtl-dbr
Dump after delayed branch scheduling.
@@ -5149,7 +5149,7 @@
@opindex fdump-rtl-initvals
Dump after the computation of the initial value sets.
-@itemx -fdump-rtl-into_cfglayout
+@item -fdump-rtl-into_cfglayout
@opindex fdump-rtl-into_cfglayout
Dump after converting to cfglayout mode.
@@ -5179,7 +5179,7 @@
@opindex fdump-rtl-rnreg
Dump after register renumbering.
-@itemx -fdump-rtl-outof_cfglayout
+@item -fdump-rtl-outof_cfglayout
@opindex fdump-rtl-outof_cfglayout
Dump after converting from cfglayout mode.
@@ -5191,7 +5191,7 @@
@opindex fdump-rtl-postreload
Dump after post-reload optimizations.
-@itemx -fdump-rtl-pro_and_epilogue
+@item -fdump-rtl-pro_and_epilogue
@opindex fdump-rtl-pro_and_epilogue
Dump after generating the function pro and epilogues.
編譯過程最後一些訊息:
make[8]: Entering directory `/home/jeff/msp430-toolchain/gcc/gcc-build/msp430/mcpu-430x/libquadmath'
true DO=install multi-do # make
test -z "/home/jeff/msp430-toolchain/out/msp430/lib/mcpu-430x" || /usr/bin/mkdir -p "/home/jeff/msp430-toolchain/out/msp430/lib/mcpu-430x"
test -z "/home/jeff/msp430-toolchain/out/share/info" || /usr/bin/mkdir -p "/home/jeff/msp430-toolchain/out/share/info"
/usr/bin/install -c -m 644 ../../../../gcc-4.6.3/libquadmath/libquadmath.info '/home/jeff/msp430-toolchain/out/share/info'
install-info --info-dir='/home/jeff/msp430-toolchain/out/share/info' '/home/jeff/msp430-toolchain/out/share/info/libquadmath.info'
test -z "" || /usr/bin/mkdir -p ""
make[8]: Leaving directory `/home/jeff/msp430-toolchain/gcc/gcc-build/msp430/mcpu-430x/libquadmath'
make[7]: Leaving directory `/home/jeff/msp430-toolchain/gcc/gcc-build/msp430/mcpu-430x/libquadmath'
make[7]: Entering directory `/home/jeff/msp430-toolchain/gcc/gcc-build/msp430/mmpy-16/libquadmath'
true DO=all multi-do # make
make[8]: Entering directory `/home/jeff/msp430-toolchain/gcc/gcc-build/msp430/mmpy-16/libquadmath'
true DO=install multi-do # make
test -z "/home/jeff/msp430-toolchain/out/msp430/lib/mmpy-16" || /usr/bin/mkdir -p "/home/jeff/msp430-toolchain/out/msp430/lib/mmpy-16"
test -z "/home/jeff/msp430-toolchain/out/share/info" || /usr/bin/mkdir -p "/home/jeff/msp430-toolchain/out/share/info"
/usr/bin/install -c -m 644 ../../../../gcc-4.6.3/libquadmath/libquadmath.info '/home/jeff/msp430-toolchain/out/share/info'
install-info --info-dir='/home/jeff/msp430-toolchain/out/share/info' '/home/jeff/msp430-toolchain/out/share/info/libquadmath.info'
test -z "" || /usr/bin/mkdir -p ""
make[8]: Leaving directory `/home/jeff/msp430-toolchain/gcc/gcc-build/msp430/mmpy-16/libquadmath'
make[7]: Leaving directory `/home/jeff/msp430-toolchain/gcc/gcc-build/msp430/mmpy-16/libquadmath'
make[7]: Entering directory `/home/jeff/msp430-toolchain/gcc/gcc-build/msp430/mcpu-430x/mmpy-16/libquadmath'
true DO=all multi-do # make
make[8]: Entering directory `/home/jeff/msp430-toolchain/gcc/gcc-build/msp430/mcpu-430x/mmpy-16/libquadmath'
true DO=install multi-do # make
test -z "/home/jeff/msp430-toolchain/out/msp430/lib/mcpu-430x/mmpy-16" || /usr/bin/mkdir -p "/home/jeff/msp430-toolchain/out/msp430/lib/mcpu-430x/mmpy-16"
test -z "/home/jeff/msp430-toolchain/out/share/info" || /usr/bin/mkdir -p "/home/jeff/msp430-toolchain/out/share/info"
/usr/bin/install -c -m 644 ../../../../../gcc-4.6.3/libquadmath/libquadmath.info '/home/jeff/msp430-toolchain/out/share/info'
install-info --info-dir='/home/jeff/msp430-toolchain/out/share/info' '/home/jeff/msp430-toolchain/out/share/info/libquadmath.info'
test -z "" || /usr/bin/mkdir -p ""
make[8]: Leaving directory `/home/jeff/msp430-toolchain/gcc/gcc-build/msp430/mcpu-430x/mmpy-16/libquadmath'
make[7]: Leaving directory `/home/jeff/msp430-toolchain/gcc/gcc-build/msp430/mcpu-430x/mmpy-16/libquadmath'
make[6]: Leaving directory `/home/jeff/msp430-toolchain/gcc/gcc-build/msp430/libquadmath'
test -z "/home/jeff/msp430-toolchain/out/msp430/lib" || /usr/bin/mkdir -p "/home/jeff/msp430-toolchain/out/msp430/lib"
test -z "/home/jeff/msp430-toolchain/out/share/info" || /usr/bin/mkdir -p "/home/jeff/msp430-toolchain/out/share/info"
/usr/bin/install -c -m 644 ../../../gcc-4.6.3/libquadmath/libquadmath.info '/home/jeff/msp430-toolchain/out/share/info'
install-info --info-dir='/home/jeff/msp430-toolchain/out/share/info' '/home/jeff/msp430-toolchain/out/share/info/libquadmath.info'
test -z "" || /usr/bin/mkdir -p ""
make[5]: Leaving directory `/home/jeff/msp430-toolchain/gcc/gcc-build/msp430/libquadmath'
make[4]: Leaving directory `/home/jeff/msp430-toolchain/gcc/gcc-build/msp430/libquadmath'
make[3]: Leaving directory `/home/jeff/msp430-toolchain/gcc/gcc-build'
make[2]: Leaving directory `/home/jeff/msp430-toolchain/gcc/gcc-build'
make[1]: Leaving directory `/home/jeff/msp430-toolchain/gcc'
## Build target 'all' is completed.
=> Elapsed time = 10m 59s
沒問題 , 完工...看看msp430-gcc 的版本訊息吧, 如下"
[jeff@localhost bin]$ pwd
/home/jeff/msp430-toolchain/out/bin
[jeff@localhost bin]$ ./msp430-gcc --version
msp430-gcc (GCC) 4.6.3 20120301 (mspgcc LTS 20120406 unpatched)
Copyright (C) 2011 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
2014年3月3日 星期一
Step 1 build "binutlis".
按照上篇文章中的 參考網頁, 將基本的source code 和 msp430 的 patch file 下載.
我的習慣,自己寫一個 Makefile 的 source tree 方式, 將source code 放到特定位置, 然後撰寫Makefile , 屆時只要下指令 "make" 就會全自動編譯好.
不多說 , 進行第一步吧 ... binutils 的編譯.
@@ 問題來了 , 馬上 build error . 經過幾天的 google 後發現應改是 texinfo 版本太新.
還好在 https://sourceware.org/bugzilla/show_bug.cgi?id=15212#c3 中找到一些 patch 的訊息.
經過修改,沒問題了,第一步....可以編譯 binutils 了.
最後一段編譯訊息如下:
/usr/bin/install -c -m 644 'ld.1' '/home/jeff/msp430-toolchain/out/share/man/man1/msp430-ld.1'
make[7]: Leaving directory `/home/jeff/msp430-toolchain/binutils/binutils-build/ld'
make[6]: Leaving directory `/home/jeff/msp430-toolchain/binutils/binutils-build/ld'
make[5]: Leaving directory `/home/jeff/msp430-toolchain/binutils/binutils-build/ld'
make[4]: Leaving directory `/home/jeff/msp430-toolchain/binutils/binutils-build/ld'
make[4]: Entering directory `/home/jeff/msp430-toolchain/binutils/binutils-build/libiberty'
make[5]: Entering directory `/home/jeff/msp430-toolchain/binutils/binutils-build/libiberty/testsuite'
make[5]: Nothing to be done for `all'.
make[5]: Leaving directory `/home/jeff/msp430-toolchain/binutils/binutils-build/libiberty/testsuite'
/bin/sh ../../binutils-2.21.1/libiberty/../mkinstalldirs /home/jeff/msp430-toolchain/out/lib/`gcc -print-multi-os-directory`
mkdir -p -- /home/jeff/msp430-toolchain/out/lib/../lib64
/usr/bin/install -c -m 644 ./libiberty.a /home/jeff/msp430-toolchain/out/lib/`gcc -print-multi-os-directory`/./libiberty.an
( cd /home/jeff/msp430-toolchain/out/lib/`gcc -print-multi-os-directory` ; chmod 644 ./libiberty.an ;ranlib ./libiberty.an )
mv -f /home/jeff/msp430-toolchain/out/lib/`gcc -print-multi-os-directory`/./libiberty.an /home/jeff/msp430-toolchain/out/lib/`gcc -print-multi-os-directory`/./libiberty.a
if test -n ""; then \
case "" in \
/*) thd=;; \
*) thd=/home/jeff/msp430-toolchain/out/include/;; \
esac; \
/bin/sh ../../binutils-2.21.1/libiberty/../mkinstalldirs ${thd}; \
for h in ../../binutils-2.21.1/libiberty/../include/ansidecl.h ../../binutils-2.21.1/libiberty/../include/demangle.h ../../binutils-2.21.1/libiberty/../include/dyn-string.h ../../binutils-2.21.1/libiberty/../include/fibheap.h ../../binutils-2.21.1/libiberty/../include/floatformat.h ../../binutils-2.21.1/libiberty/../include/hashtab.h ../../binutils-2.21.1/libiberty/../include/libiberty.h ../../binutils-2.21.1/libiberty/../include/objalloc.h ../../binutils-2.21.1/libiberty/../include/partition.h ../../binutils-2.21.1/libiberty/../include/safe-ctype.h ../../binutils-2.21.1/libiberty/../include/sort.h ../../binutils-2.21.1/libiberty/../include/splay-tree.h; do \
/usr/bin/install -c -m 644 $h ${thd}; \
done; \
fi
make[5]: Entering directory `/home/jeff/msp430-toolchain/binutils/binutils-build/libiberty/testsuite'
make[5]: Nothing to be done for `install'.
make[5]: Leaving directory `/home/jeff/msp430-toolchain/binutils/binutils-build/libiberty/testsuite'
make[4]: Leaving directory `/home/jeff/msp430-toolchain/binutils/binutils-build/libiberty'
make[3]: Nothing to be done for `install-target'.
make[3]: Leaving directory `/home/jeff/msp430-toolchain/binutils/binutils-build'
make[2]: Leaving directory `/home/jeff/msp430-toolchain/binutils/binutils-build'
make[1]: Leaving directory `/home/jeff/msp430-toolchain/binutils'
## Build target 'all' is completed.
=> Elapsed time = 1m 43s
我的習慣,自己寫一個 Makefile 的 source tree 方式, 將source code 放到特定位置, 然後撰寫Makefile , 屆時只要下指令 "make" 就會全自動編譯好.
不多說 , 進行第一步吧 ... binutils 的編譯.
@@ 問題來了 , 馬上 build error . 經過幾天的 google 後發現應改是 texinfo 版本太新.
還好在 https://sourceware.org/bugzilla/show_bug.cgi?id=15212#c3 中找到一些 patch 的訊息.
經過修改,沒問題了,第一步....可以編譯 binutils 了.
最後一段編譯訊息如下:
/usr/bin/install -c -m 644 'ld.1' '/home/jeff/msp430-toolchain/out/share/man/man1/msp430-ld.1'
make[7]: Leaving directory `/home/jeff/msp430-toolchain/binutils/binutils-build/ld'
make[6]: Leaving directory `/home/jeff/msp430-toolchain/binutils/binutils-build/ld'
make[5]: Leaving directory `/home/jeff/msp430-toolchain/binutils/binutils-build/ld'
make[4]: Leaving directory `/home/jeff/msp430-toolchain/binutils/binutils-build/ld'
make[4]: Entering directory `/home/jeff/msp430-toolchain/binutils/binutils-build/libiberty'
make[5]: Entering directory `/home/jeff/msp430-toolchain/binutils/binutils-build/libiberty/testsuite'
make[5]: Nothing to be done for `all'.
make[5]: Leaving directory `/home/jeff/msp430-toolchain/binutils/binutils-build/libiberty/testsuite'
/bin/sh ../../binutils-2.21.1/libiberty/../mkinstalldirs /home/jeff/msp430-toolchain/out/lib/`gcc -print-multi-os-directory`
mkdir -p -- /home/jeff/msp430-toolchain/out/lib/../lib64
/usr/bin/install -c -m 644 ./libiberty.a /home/jeff/msp430-toolchain/out/lib/`gcc -print-multi-os-directory`/./libiberty.an
( cd /home/jeff/msp430-toolchain/out/lib/`gcc -print-multi-os-directory` ; chmod 644 ./libiberty.an ;ranlib ./libiberty.an )
mv -f /home/jeff/msp430-toolchain/out/lib/`gcc -print-multi-os-directory`/./libiberty.an /home/jeff/msp430-toolchain/out/lib/`gcc -print-multi-os-directory`/./libiberty.a
if test -n ""; then \
case "" in \
/*) thd=;; \
*) thd=/home/jeff/msp430-toolchain/out/include/;; \
esac; \
/bin/sh ../../binutils-2.21.1/libiberty/../mkinstalldirs ${thd}; \
for h in ../../binutils-2.21.1/libiberty/../include/ansidecl.h ../../binutils-2.21.1/libiberty/../include/demangle.h ../../binutils-2.21.1/libiberty/../include/dyn-string.h ../../binutils-2.21.1/libiberty/../include/fibheap.h ../../binutils-2.21.1/libiberty/../include/floatformat.h ../../binutils-2.21.1/libiberty/../include/hashtab.h ../../binutils-2.21.1/libiberty/../include/libiberty.h ../../binutils-2.21.1/libiberty/../include/objalloc.h ../../binutils-2.21.1/libiberty/../include/partition.h ../../binutils-2.21.1/libiberty/../include/safe-ctype.h ../../binutils-2.21.1/libiberty/../include/sort.h ../../binutils-2.21.1/libiberty/../include/splay-tree.h; do \
/usr/bin/install -c -m 644 $h ${thd}; \
done; \
fi
make[5]: Entering directory `/home/jeff/msp430-toolchain/binutils/binutils-build/libiberty/testsuite'
make[5]: Nothing to be done for `install'.
make[5]: Leaving directory `/home/jeff/msp430-toolchain/binutils/binutils-build/libiberty/testsuite'
make[4]: Leaving directory `/home/jeff/msp430-toolchain/binutils/binutils-build/libiberty'
make[3]: Nothing to be done for `install-target'.
make[3]: Leaving directory `/home/jeff/msp430-toolchain/binutils/binutils-build'
make[2]: Leaving directory `/home/jeff/msp430-toolchain/binutils/binutils-build'
make[1]: Leaving directory `/home/jeff/msp430-toolchain/binutils'
## Build target 'all' is completed.
=> Elapsed time = 1m 43s
2014年2月5日 星期三
開始自己建立 GCC for MSP430 .
因為工作需要, 所以使用了 IAR 試用版 , 不過一個月時間到了 , 就沒有辦法使用了 !!
想說 , MSP430 已經問世好久了 , 應該有 open source 的 complier 了吧 !!
Google 了一下 ,還真的有 , 不過 本人比較喜歡 Fedora , 並且 好像找不到已經編譯好的 bin file .只有教導如何自行編譯 , 好吧 ,動手自己做做看 !!
Reference :
http://sourceforge.net/apps/mediawiki/mspgcc/index.php?title=Install:fromsource
http://sourceforge.net/projects/mspgcc/files/mspgcc/
http://sourceforge.net/projects/mspgcc/files/Patches/LTS/
http://sourceforge.net/projects/mspgcc/files/Patches/
http://sourceforge.net/apps/mediawiki/mspgcc/index.php?title=MSPGCC_Wiki
http://merlin.fit.vutbr.cz/FITkit/docs/en/navody/mspgcclinux.html
想說 , MSP430 已經問世好久了 , 應該有 open source 的 complier 了吧 !!
Google 了一下 ,還真的有 , 不過 本人比較喜歡 Fedora , 並且 好像找不到已經編譯好的 bin file .只有教導如何自行編譯 , 好吧 ,動手自己做做看 !!
Reference :
http://sourceforge.net/apps/mediawiki/mspgcc/index.php?title=Install:fromsource
http://sourceforge.net/projects/mspgcc/files/mspgcc/
http://sourceforge.net/projects/mspgcc/files/Patches/LTS/
http://sourceforge.net/projects/mspgcc/files/Patches/
http://sourceforge.net/apps/mediawiki/mspgcc/index.php?title=MSPGCC_Wiki
http://merlin.fit.vutbr.cz/FITkit/docs/en/navody/mspgcclinux.html
訂閱:
意見 (Atom)