2012-06-12 27 views
11

Tôi đang sử dụng ARM Cortex-M3 và Cortex-M4. Tôi muốn sử dụng số fixed-point type extension của GCC. Tôi đang sử dụng summon-arm-toolchain. Dòng mã sau đâyLàm thế nào để sử dụng phần mở rộng loại điểm cố định GCC trên ARM Cortex-M?

_Fract f = 0.1; 

ném lỗi biên dịch sau:

error: fixed-point types not supported for this target 

Liệu GCC thực sự không hỗ trợ các loại điểm cố định cho Cortex-M3/M4, hay tôi thiếu cái gì ở đây?

+2

Tôi nghi ngờ GCC của bạn chỉ được xây dựng mà không cần hỗ trợ cho điểm cố định, có thể để debloat toolchain một chút. Bạn có thể thử xây dựng GCC của riêng bạn ... –

+2

@R .., hey, tôi thậm chí không biết GCC * có * một phần mở rộng điểm cố định. Ngọt. Mọi thứ đã thay đổi kể từ năm 1995. –

+0

@R Tôi đã thử một toolchain khác, [gnuarm] (http://www.gnuarm.com/) cho ARM7TDMI. Tôi đã biên dịch _gcc4.4.2_ từ các nguồn cho chuỗi công cụ này. Tôi vẫn nhận được lỗi biên dịch tương tự. – user1069152

Trả lời

11

Chỉ để ghi lại, tôi sẽ trả lời câu hỏi của riêng mình.

TL; DR: loại mở rộng cố định điểm được hỗ trợ cho kiến ​​trúc ARM Cortex-M/R trong nhúng chi nhánh của gcc (phiên bản 4.6 hoặc mới hơn). Một chuỗi công cụ dựa trên nhánh gcc đó được tìm thấy here.

Long trả lời:

Tại thời điểm viết bài, các summon-arm-toolchain tải theo mặc định Linaro-gcc-4,5-2011,02 (hoặc cách khác gcc-4.5.2). Nó không phải đã bật theo mặc định là các loại điểm cố định cố định. Tôi đã thử thêm tham số --enable-fixed-point vào configure, nhưng tôi đã nhận được lỗi biên dịch được mô tả bởi số bug này. Tôi đã thử sử dụng phiên bản mới hơn của gcc (linaro-) gcc, nhưng triệu hồi-arm-toolchain gặp sự cố khi áp dụng bản vá gcc được cung cấp riêng cho phiên bản mới hơn này. Tôi cũng đã thử sử dụng chi nhánh dev của chuỗi công cụ này (sử dụng linaro-gcc-4.6-2011.10) mà không thành công. Có vẻ như, tại thời điểm này, tiện ích mở rộng điểm cố định không được hỗ trợ cho ARM Cortex-M/R không phải bởi linaro-gcc, cũng không phải chi nhánh chính của gcc chính là.

Sau đó, tôi đã thử số gcc-arm-embedded toolchain, dựa trên chi nhánh được nhúng của gcc. Tôi đã có thể biên dịch các loại điểm cố định mẫu của mình mà không gặp vấn đề gì, đối với các mục tiêu ARM Cortex-M3 và Cortex-M4. Hỗ trợ cho phần mở rộng này cho Cortex-M/R đã được thêm vào cuối năm 2011, như có thể thấy trên this thread.

5

Theo GCC Wiki, bạn có thể bật tiện ích mở rộng điểm cố định bằng cách chuyển --enable-fixed-point làm tham số cho GCC trong khi định cấu hình.

Hơn nữa, theo nhận xét về gcc bugthis một.

fixed point support is only currently supported for the MIPS target.

+0

Tùy chọn này có được thông qua khi biên soạn GCC hay khi biên dịch ứng dụng của bạn không? Tôi chỉ thử điều này với phiên bản gcc 4.6.1 (Sourcery CodeBench Lite 2011.09-69), và có 'arm-none-eabi-gcc.exe: lỗi: không được nhận ra tùy chọn '--enable-fixed-point'' –

+0

Bạn chắc chắn cần để làm điều này trong khi làm ./configure GCC tức là biên dịch GCC. Tôi không chắc chắn nếu nó cũng cần thiết trong khi biên dịch ứng dụng của bạn, nhưng tôi tin như vậy. Vui lòng xem các liên kết trong câu trả lời đã chỉnh sửa của tôi. – Akhil

+0

Tôi thực sự không thể xác nhận đó là vấn đề, vì tôi không thể biên dịch gcc (cái được sử dụng bởi summon-arm-toolchain) bằng cách sử dụng điểm --enable-fixed-point đó. Có vẻ như có thể sử dụng phần mở rộng kiểu cố định trên ARM Cortex-Mx bằng [toolchain này] (https://launchpad.net/gcc-arm-embedded) – user1069152

Các vấn đề liên quan