Từ mspgcc-3 tới mspgcc-4

 

Bây giờ mspgcc-4 không được bảo trì như một dự án độc lập nữa mà sát nhập vào mspgcc tại đây. mspgcc được xây dựng thành các gói độc lập, rất dễ cài và không giống như dưới đây nữa.

——————————

Tôi sử dụng Contiki OS để lập trình với dòng chíp MSP430 của TI một thời gian. Thoạt đầu dùng trình biên dịch nguồn mở mspgcc-3.2.3, vì phiên bản này chạy rất ổn định. Đặc biệt là khi Contiki tuyên bố chưa hỗ trợ chính thức phiên bản sau này.

Nhưng có nỗi buồn không tên là phiên bản 3.2.3 đã ngưng phát triển từ năm 2002. Tôi đang hướng tới thế hệ MSP430 thứ 5 & 6, mà đám hậu thế này không được hổ trợ bởi pb 3.2.

Quyết định nâng cấp lên phiên bản 4.4.5, quá trình cài đặt khá khó khăn, mất tới gần 20 phút (không hiểu vì sao quá trình cài đặt lại lâu như vậy), nhưng kết quả khá mỹ mãn:

  • Hỗ trợ MSP430 đến phiên bản 6 (msp430f6xxx) và các nhánh phụ khác.
  • Tối ưu hóa kết quả biên dịch tốt hơn hẳng phiên bản trước.

Dùng ví dụ đơn giản là hello-word trong /example/hello-world. Khi biên dịch tôi chọn hỗ trợ IPv6, bằng cách thêm vào makefile:

WITH_UIP6=1

UIP_CONF_IPV6=1

Kết quả với pb 3.2.3:

text     data     bss      dec      hex    filename

43372 206      8918   52496  cd10  hello-world.sky

Với pb 4.4.5:

text       data      bss        dec      hex      filename

43764    152       8958      52874 ce8a     hello-world.sky

nếu có tôi ưu mã nguồn (chức năng này không có trong phiên bản trước đó):

text      data       bss     dec       hex     filename

39908   152      8956    49016  bf78    hello-world.sky

So sánh kết quả đầu với cuối, có thể thấy kết quả biên dịch đã được cải thiện một cách đáng kể dù là chương trình đơn giản như hello-word.

Hy vọng trong tương lai gần Contiki sẽ hỗ trợ mspgcc-4.

Cho phép thực hiện tối ưu quá trình biên dịch khá đơn giản. Trong cpu/msp430/Makefile.msp430 có viết

### These flags can reduce the code size and RAM usage with up to 10%
ifdef SMALL
CFLAGS += -ffunction-sections
LDFLAGS += -Wl,–gc-sections,–undefined=_reset_vector__,–undefined=InterruptVectors,–undefined=_copy_data_init__,–undefined=_clear_bss_init__,–undefined=_end_of_init__
endif # SMALL

Vậy để phất các cờ này trong makefile của dự án hello-world, thêm lệnh

SMALL = 1

là xong ^^.

One thought on “Từ mspgcc-3 tới mspgcc-4”

  1. MSPGCC mới lại không tương thích ngược với MSPGCC-4, có nghĩa là để dịch Contiki cần nhiều gói vá (path) khá rối rắm. TinyOS thì có sẵn bản vá lỗi trong gói cài đặt, có lẽ cộng đồng sử dụng nhiều hơn.

    Khi dùng Contiki thì không thể không có nền tảng Sky được, vì nó là default cho OS này. Tôi chuyển ngược về sử dụng MSPGCC-4. Phải chỉnh sửa chương trình dịch để tải về gói bitnutils, lấy từ http://pastebin.com/CWQJajCF:

    Before you start to build mspgcc4, you have to edit the buildgcc.pl(or use the version I’ve sent with this mail). In line 137 there is $GNU_MIRROR=”http://ftp.uni-kl.de”;
    you should change it to $GNU_MIRROR=http://mirrors.usc.edu; because the http://ftp.uni-kl.de gives 404 to the binutils 2.21 sourcefile.
    Change the URL at line 15 in do-binutils.sh . Now you can follow Rubén’s fourth step.(Rubén’s selections [gcc-4.4.5, no gdb, no insight, ti_20110130, and the rest of the defaults.
    ———-
    Quả thật dùng mã nguồn mở không đơn giản tí nào.

Gửi phản hồi

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Log Out / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Log Out / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Log Out / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Log Out / Thay đổi )

Connecting to %s