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.
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 ... –
@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. –
@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