Hướng dẫn sử dụng phần mềm biên dịch MICROCHIP MPLAB XC8 C

Phần mềm biên dịch MICROCHIP MPLAB XC8 C 

TÀI LIỆU NÀY CHỨA THÔNG TIN QUAN TRỌNG LIÊN QUAN ĐẾN MÁY TÍNH MPLAB XC8 C KHI NHẮM MỤC TIÊU THIẾT BỊ MICROCHIP AVR.
VUI LÒNG ĐỌC TRƯỚC KHI CHẠY PHẦN MỀM NÀY. XEM LƯU Ý PHÁT HÀNH MÁY TÍNH MPLAB XC8 C CHO TÀI LIỆU PIC NẾU BẠN ĐANG SỬ DỤNG MÁY TÍNH CHO THIẾT BỊ PIC 8-BIT.

Table of Contents

Giới thiệu chung

Giới thiệu

Bản phát hành này của trình biên dịch Microchip MPLAB® XC8 C có một số tính năng mới, sửa lỗi và hỗ trợ thiết bị mới.

Ngày tạo

Ngày xây dựng chính thức của phiên bản trình biên dịch này là ngày 3 tháng 2022 năm XNUMX.

Phiên bản trước

Phiên bản trình biên dịch MPLAB XC8 C trước đó là 2.39, một trình biên dịch an toàn chức năng, được xây dựng vào ngày 27 tháng 2022 năm 2.36. Trình biên dịch tiêu chuẩn trước đó là phiên bản 27, được xây dựng vào ngày 2022 tháng XNUMX năm XNUMX.

Hướng dẫn an toàn chức năng

Sổ tay An toàn Chức năng dành cho trình biên dịch MPLAB XC có sẵn trong gói tài liệu khi bạn mua giấy phép an toàn chức năng.

Giấy phép thành phần và phiên bản

Các công cụ Trình biên dịch MPLAB® XC8 C dành cho MCU AVR được viết và phân phối theo Giấy phép Công cộng GNU (GPL), có nghĩa là mã nguồn của nó được phân phối tự do và có sẵn cho công chúng. Mã nguồn cho các công cụ theo GNU GPL có thể được tải xuống riêng từ Microchip’s webđịa điểm. Bạn có thể đọc GNU GPL trong file được đặt tên nằm trong thư mục con của thư mục cài đặt của bạn. Một cuộc thảo luận chung về các nguyên tắc cơ bản của GPL có thể được tìm thấy ở đây. Mã hỗ trợ được cung cấp cho tiêu đề files, tập lệnh liên kết và thư viện thời gian chạy là mã độc quyền và không được bảo vệ theo GPL.

Trình biên dịch này là một triển khai của GCC phiên bản 5.4.0, binutils phiên bản 2.26 và sử dụng avr-libc phiên bản 2.0.0.

Đòi Hỏi Kỹ Thuật

Trình biên dịch MPLAB XC8 C và phần mềm cấp phép mà nó sử dụng có sẵn cho nhiều hệ điều hành, bao gồm các phiên bản 64 bit sau: Phiên bản chuyên nghiệp của Microsoft Windows 10; Ubuntu 18.04; và macOS 10.15.5. Các tệp nhị phân cho Windows đã được ký mã. Các tệp nhị phân dành cho mac OS đã được ký mã và công chứng.

Nếu bạn đang chạy máy chủ cấp phép mạng, chỉ những máy tính có hệ điều hành được trình biên dịch hỗ trợ mới có thể được sử dụng để lưu trữ máy chủ cấp phép. Kể từ phiên bản xclm 2.0, máy chủ cấp phép mạng có thể được cài đặt trên nền tảng Microsoft Windows Server, nhưng máy chủ cấp phép không cần chạy trên phiên bản máy chủ của hệ điều hành.

Thiết bị được hỗ trợ

Trình biên dịch này hỗ trợ tất cả các thiết bị AVR MCU 8-bit được biết đến tại thời điểm phát hành. Xem (trong thư mục tài liệu của trình biên dịch) để biết danh sách tất cả các thiết bị được hỗ trợ. Những cái này fileNó cũng liệt kê các cài đặt bit cấu hình cho từng thiết bị.

Phiên bản và nâng cấp giấy phép

Trình biên dịch MPLAB XC8 có thể được kích hoạt dưới dạng sản phẩm được cấp phép (PRO) hoặc không được cấp phép (Miễn phí). Bạn cần mua khóa kích hoạt để cấp phép cho trình biên dịch của mình. Giấy phép cho phép mức độ tối ưu hóa cao hơn so với sản phẩm Miễn phí. Trình biên dịch không có giấy phép có thể hoạt động vô thời hạn mà không cần giấy phép.

Trình biên dịch An toàn Chức năng MPLAB XC8 phải được kích hoạt bằng giấy phép an toàn chức năng được mua từ Microchip. Trình biên dịch sẽ không hoạt động nếu không có giấy phép này. Sau khi được kích hoạt, bạn có thể chọn bất kỳ mức tối ưu hóa nào và sử dụng tất cả các tính năng của trình biên dịch. Bản phát hành này của Trình biên dịch An toàn Chức năng MPLAB XC hỗ trợ Giấy phép Máy chủ Mạng.
Xem tài liệu Cài đặt và cấp phép Trình biên dịch MPLAB XC C (DS50002059) để biết thông tin về các loại giấy phép và cài đặt trình biên dịch có giấy phép.

Cài đặt và kích hoạt

Xem thêm phần Các vấn đề và Giới hạn Di chuyển để biết thông tin quan trọng về trình quản lý giấy phép mới nhất có trong trình biên dịch này.
Nếu sử dụng MPLAB IDE, hãy nhớ cài đặt MPLAB X IDE phiên bản 5.0 mới nhất trở lên trước khi cài đặt công cụ này. Thoát khỏi IDE trước khi cài đặt trình biên dịch. Chạy ứng dụng cài đặt trình biên dịch .exe (Windows), .run (Linux) hoặc app (macOS), ví dụ: XC8-1.00.11403-windows.exe và làm theo hướng dẫn trên màn hình.
Thư mục cài đặt mặc định được khuyến nghị. Nếu bạn đang sử dụng Linux, bạn phải cài đặt trình biên dịch bằng thiết bị đầu cuối và từ tài khoản gốc. Cài đặt bằng tài khoản macOS có quyền quản trị viên.

Kích hoạt bây giờ được thực hiện riêng để cài đặt. Xem tài liệu Trình quản lý Giấy phép cho Trình biên dịch MPLAB® XC C (DS52059) để biết thêm thông tin.

Nếu bạn chọn chạy trình biên dịch theo giấy phép đánh giá, giờ đây bạn sẽ nhận được cảnh báo trong quá trình biên dịch khi bạn ở trong vòng 14 ngày kể từ ngày kết thúc giai đoạn đánh giá. Cảnh báo tương tự cũng được đưa ra nếu bạn đang trong vòng 14 ngày kể từ ngày kết thúc đăng ký HPA.

Máy chủ cấp phép mạng XC là một trình cài đặt riêng biệt và không được bao gồm trong trình cài đặt trình biên dịch một người dùng.

Trình quản lý giấy phép XC hiện hỗ trợ chuyển vùng giấy phép mạng nổi. Nhằm vào người dùng di động, tính năng này cho phép giấy phép thả nổi tắt mạng trong một khoảng thời gian ngắn. Sử dụng tính năng này, bạn có thể ngắt kết nối khỏi mạng và vẫn sử dụng trình biên dịch MPLAB XC của mình. Xem thư mục tài liệu của bản cài đặt XCLM để biết thêm về tính năng này. MPLAB X IDE bao gồm cửa sổ Giấy phép (Công cụ > Giấy phép) để quản lý chuyển vùng một cách trực quan.

Giải quyết các vấn đề cài đặt

Nếu bạn gặp khó khăn khi cài đặt trình biên dịch trong bất kỳ hệ điều hành Windows nào, hãy thử các đề xuất sau.

  • Chạy cài đặt với tư cách quản trị viên.
  • Đặt quyền của ứng dụng trình cài đặt thành ‘Kiểm soát hoàn toàn’. (Nhấp chuột phải vào file, chọn Thuộc tính, tab Bảo mật, chọn người dùng, chỉnh sửa.)
  • Đặt quyền của thư mục tạm thời thành “Kiểm soát hoàn toàn!

Để xác định vị trí của thư mục tạm thời, hãy nhập %temp% vào lệnh Run (phím logo Windows + R). Điều này sẽ mở ra một file hộp thoại thám hiểm hiển thị thư mục đó và sẽ cho phép bạn xác định đường dẫn của thư mục đó.

Tài liệu biên dịch

Hướng dẫn sử dụng của trình biên dịch có thể được mở từ trang HTML mở ra trong trình duyệt của bạn khi nhấp vào nút trợ giúp màu xanh lam trong bảng điều khiển MPLAB X IDE, như được chỉ ra trong ảnh chụp màn hình.

Tài liệu biên dịch
Nếu bạn đang xây dựng cho mục tiêu AVR 8-bit, Hướng dẫn sử dụng trình biên dịch MPLAB® XC8 C cho AVR® MCU chứa thông tin về các tùy chọn trình biên dịch và các tính năng áp dụng cho kiến ​​trúc này.

Hỗ trợ khách hàng

Microchip hoan nghênh các báo cáo lỗi, đề xuất hoặc nhận xét về phiên bản trình biên dịch này. Vui lòng gửi bất kỳ báo cáo lỗi hoặc yêu cầu tính năng nào qua Hệ thống hỗ trợ.

Cập nhật tài liệu

Để biết các phiên bản trực tuyến và cập nhật của tài liệu MPLAB XC8, vui lòng truy cập Tài liệu kỹ thuật trực tuyến của Microchip webtrang web.

Tài liệu AVR mới hoặc được cập nhật trong phiên bản này:

  • thông báo bản quyền MUSL
  • Cài đặt và cấp phép Trình biên dịch MPLAB XC C (bản M)
  • Hướng dẫn sử dụng MPLAB XC8 dành cho kỹ sư nhúng – MCU AVR (bản sửa đổi A)
  • Hướng dẫn sử dụng trình biên dịch MPLAB XC8 C cho AVR MCU (bản sửa đổi F)
  • Hướng dẫn Tham khảo Thư viện Tiêu chuẩn Hợp nhất của Microchip (bản B)

Hướng dẫn tham khảo thư viện tiêu chuẩn hợp nhất của Microchip mô tả hành vi và giao diện với các chức năng được xác định bởi Thư viện tiêu chuẩn hợp nhất của Microchip, cũng như mục đích sử dụng của các loại thư viện và macro. Một số thông tin này trước đây có trong Hướng dẫn sử dụng trình biên dịch MPLAB® XC8 C dành cho AVR® MCU. Thông tin thư viện dành riêng cho thiết bị vẫn có trong hướng dẫn trình biên dịch này.

Nếu bạn mới bắt đầu với các thiết bị 8-bit và Trình biên dịch MPLAB XC8 C, Hướng dẫn Người dùng MPLAB® XC8 dành cho Kỹ sư nhúng – MCU AVR® (DS50003108) có thông tin về thiết lập dự án trong MPLAB X IDE và viết mã cho dự án MPLAB XC8 C đầu tiên của bạn. Hướng dẫn này hiện được phân phối cùng với trình biên dịch.

Hướng dẫn sử dụng Hamate đã được đưa vào thư mục tài liệu trong bản phát hành này. Hướng dẫn này dành cho những người đang chạy Hamate như một ứng dụng độc lập.

Có gì mới

Sau đây là các tính năng mục tiêu AVR mới mà trình biên dịch hiện hỗ trợ. Số phiên bản trong các tiêu đề phụ cho biết phiên bản trình biên dịch đầu tiên hỗ trợ các tính năng tiếp theo.

Phiên bản 2.40

Hỗ trợ thiết bị mới Hỗ trợ hiện có sẵn cho các phần AVR sau: AT90PWM3, AVR16DD14, AVR16DD20, AVR16DD28, AVR16DD32, AVR32DD14, AVR32DD20, AVR32DD28, AVR32DD32, AVR64EA28, AVR64EA32 và AVR64EA48.
Cải thiện trừu tượng hóa thủ tục Công cụ tối ưu hóa thủ tục trừu tượng hóa (PA) đã được cải thiện để có thể phác thảo mã chứa lệnh gọi hàm ( gọi lại ) . Điều này sẽ chỉ xảy ra nếu ngăn xếp không được sử dụng để truyền đối số cũng như không nhận giá trị trả về từ hàm. Ngăn xếp được sử dụng khi gọi một hàm có danh sách đối số biến hoặc khi gọi một hàm nhận nhiều đối số hơn số thanh ghi được chỉ định cho mục đích này. Tính năng này có thể bị vô hiệu hóa bằng cách sử dụng tùy chọn monk-pa-outline-calls hoặc có thể vô hiệu hóa hoàn toàn thủ tục trừu tượng đối với một đối tượng file hoặc chức năng bằng cách sử dụng -monk-pa-on-file và -mo.-pa-on-function tương ứng hoặc bằng cách sử dụng thuộc tính dừa nước ( chỉ định dừa nước) một cách có chọn lọc với các hàm

Macro bảo hiểm mã Trình biên dịch hiện xác định macro __CODECOV nếu tùy chọn mcodecov hợp lệ được chỉ định.

Tùy chọn đặt trước bộ nhớ Trình điều khiển xc8-cc hiện sẽ chấp nhận tùy chọn -mreserve=space@start: end khi xây dựng cho các mục tiêu AVR. Tùy chọn này bảo lưu phạm vi bộ nhớ đã chỉ định trong không gian bộ nhớ dữ liệu hoặc chương trình, ngăn trình liên kết điền mã hoặc đối tượng trong khu vực này.

IO thông minh hơn Một số cải tiến đã được thực hiện đối với các chức năng IO thông minh, bao gồm các chỉnh sửa chung đối với mã lõi printf, coi bộ xác định chuyển đổi %n là một biến thể độc lập, liên kết trong các thói quen pop vararg theo yêu cầu, sử dụng các loại dữ liệu ngắn hơn nếu có thể để xử lý các đối số chức năng IO và bao thanh toán mã phổ biến trong độ rộng trường và xử lý chính xác. Điều này có thể giúp tiết kiệm mã và dữ liệu đáng kể, cũng như tăng tốc độ thực thi của IO.

Phiên bản 2.39 (Bản phát hành an toàn chức năng)

Giấy phép máy chủ mạng Bản phát hành này của Trình biên dịch An toàn Chức năng MPLAB XC8 hỗ trợ Giấy phép Máy chủ Mạng.

Phiên bản 2.36

Không có.

Phiên bản 2.35

Hỗ trợ thiết bị mới Hỗ trợ có sẵn cho các phần AVR sau: ATTINY3224, ATTINY3226, ATTINY3227, AVR64DD14, AVR64DD20, AVR64DD28 và AVR64DD32.

Cải thiện chuyển ngữ cảnh Tùy chọn -mcall-isr-prologues mới thay đổi cách các chức năng ngắt lưu các thanh ghi khi vào và cách các thanh ghi đó được khôi phục khi thói quen ngắt kết thúc. Nó hoạt động theo cách tương tự như tùy chọn -mcall-prologues, nhưng chỉ ảnh hưởng đến các chức năng ngắt (ISR).

Chuyển đổi bối cảnh thậm chí còn được cải thiện nhiều hơn Tùy chọn -mgas-isr-prologues mới kiểm soát mã itch ngữ cảnh được tạo cho các quy trình dịch vụ ngắt nhỏ. Khi được bật, tính năng này sẽ yêu cầu trình biên dịch chương trình quét ISR để biết cách sử dụng thanh ghi và chỉ lưu các thanh ghi đã sử dụng này nếu được yêu cầu.

Ánh xạ flash có thể định cấu hình Một số thiết bị trong họ AVR DA và AVR DB có SFR (ví dụ FLMAP) chỉ định phần 32k nào của bộ nhớ chương trình sẽ được ánh xạ vào bộ nhớ dữ liệu. Có thể sử dụng tùy chọn mới – mconst-data-in-config-mapped-proem để yêu cầu trình liên kết đặt tất cả dữ liệu đủ điều kiện có khuyết điểm vào một phần 32k và tự động khởi tạo thanh ghi SFR có liên quan để đảm bảo rằng dữ liệu này được ánh xạ vào không gian bộ nhớ dữ liệu , nơi nó sẽ được truy cập hiệu quả hơn.

Thư viện tiêu chuẩn hợp nhất của Microchip Tất cả các trình biên dịch MPLAB XC sẽ dùng chung một Thư viện tiêu chuẩn hợp nhất của Microchip, hiện đã có sẵn với phiên bản MPLAB XC8 này. Hướng dẫn sử dụng trình biên dịch MPLAB® XC8 C/hoặc AVR® MCU không còn bao gồm tài liệu cho các chức năng tiêu chuẩn này. Thông tin này hiện có thể được tìm thấy trong Hướng dẫn Tham khảo Thư viện Tiêu chuẩn Hợp nhất của Microchip. Lưu ý rằng một số chức năng được xác định trước đây bởi avr-libc không còn nữa. (Xem Thư viện):’. chức năngY…)

IO thông minh Là một phần của các thư viện hợp nhất mới, các chức năng IO trong dòng in và quét hiện được tạo tùy chỉnh trên mỗi bản dựng, dựa trên cách các chức năng này được sử dụng trong chương trình. Điều này có thể làm giảm đáng kể các tài nguyên được sử dụng bởi một chương trình.
Tùy chọn hỗ trợ IO thông minh Khi phân tích các lệnh gọi đến các hàm IO thông minh (chẳng hạn như printf() hoặc scanf() ), trình biên dịch không thể luôn xác định từ chuỗi định dạng hoặc suy ra từ các đối số mà các chỉ định chuyển đổi đó được yêu cầu bởi lệnh gọi. Trước đây, trình biên dịch sẽ luôn không đưa ra giả định nào và đảm bảo rằng các chức năng IO đầy đủ chức năng được liên kết với hình ảnh chương trình cuối cùng. Một tùy chọn – msmart-io-format=fmt mới đã được thêm vào để người dùng có thể thông báo cho trình biên dịch về các thông số chuyển đổi được sử dụng bởi các hàm IO thông minh có cách sử dụng không rõ ràng, ngăn không cho các quy trình IO quá dài được liên kết. (Xem Tùy chọn định dạng smart-io để biết thêm chi tiết.)

Đặt các phần tùy chỉnh Trước đây, tùy chọn -Wl, –section-start chỉ đặt phần được chỉ định tại địa chỉ được yêu cầu khi tập lệnh trình liên kết xác định phần đầu ra có cùng tên. Khi không đúng như vậy, phần này được đặt tại một địa chỉ do trình liên kết chọn và tùy chọn này về cơ bản bị bỏ qua. Bây giờ, tùy chọn sẽ được ưu tiên cho tất cả các phần tùy chỉnh, ngay cả khi tập lệnh trình liên kết không xác định phần đó. Tuy nhiên, lưu ý rằng đối với các phần tiêu chuẩn, chẳng hạn như . chữ, . bss hoặc . dữ liệu, trình phân bổ phù hợp nhất sẽ vẫn có toàn quyền kiểm soát vị trí của chúng và tùy chọn này sẽ không có hiệu lực. Sử dụng tùy chọn -Wl, -Tsection=add, như được mô tả trong hướng dẫn sử dụng.

Phiên bản 2.32

Hướng dẫn ngăn xếp Có sẵn với giấy phép trình biên dịch PRO, tính năng hướng dẫn ngăn xếp của trình biên dịch có thể được sử dụng để ước tính độ sâu tối đa của bất kỳ ngăn xếp nào được chương trình sử dụng. Nó xây dựng và phân tích biểu đồ cuộc gọi của một chương trình, xác định mức sử dụng ngăn xếp của từng chức năng và tạo một báo cáo, từ đó có thể suy ra độ sâu của các ngăn xếp mà chương trình sử dụng. Tính năng này được bật thông qua tùy chọn dòng lệnh -mchp-stack-usage. Một bản tóm tắt về việc sử dụng ngăn xếp được in sau khi thực hiện. Một báo cáo ngăn xếp chi tiết có sẵn trong bản đồ file, có thể được yêu cầu theo cách thông thường.

Hỗ trợ thiết bị mới Hỗ trợ có sẵn cho các bộ phận AVR sau: ATTINY 427, ATTINY 424, ATTINY 426, ATTINY827, ATTINY824, ATTINY826, AVR32DB32, AVR64DB48, AVR64DB64, AVR64DB28, AVR32DB28, AVR64DB32 và AVR32DB48.

Hỗ trợ thiết bị đã rút lại Hỗ trợ không còn khả dụng cho các bộ phận AVR sau: AVR16DA28, AVR16DA32 và, AVR16DA48.

Phiên bản 2.31

Không có.

Phiên bản 2.30

Tùy chọn mới để ngăn khởi tạo dữ liệu Tùy chọn trình điều khiển -mno-data-ini t mới ngăn khởi tạo dữ liệu và xóa các phần bss. Nó hoạt động bằng cách chặn đầu ra của các ký hiệu do_ copy_ data và d o_ clear_ bss trong assembly files, điều này sẽ lần lượt ngăn trình liên kết đưa vào các quy trình đó.

Tối ưu hóa nâng cao Một số cải tiến tối ưu hóa đã được thực hiện, bao gồm loại bỏ các hướng dẫn trả về dư thừa, loại bỏ một số bước nhảy theo hướng dẫn bỏ qua nếu-bit-là, đồng thời cải thiện tính trừu tượng của thủ tục và khả năng lặp lại quy trình này.

Các tùy chọn bổ sung hiện có sẵn để kiểm soát một số tối ưu hóa này, cụ thể là các neo phần -f, cho phép truy cập các đối tượng tĩnh được thực hiện liên quan đến một biểu tượng; -mpai derations=n, cho phép thay đổi số lần lặp trừu tượng hóa thủ tục từ mặc định là 2; và -mpa- call cost- shortcall, thực hiện trừu tượng hóa thủ tục tích cực hơn, với hy vọng rằng trình liên kết có thể thư giãn các cuộc gọi dài. Tùy chọn cuối cùng này có thể tăng kích thước mã nếu các giả định cơ bản không được thực hiện.

Hỗ trợ thiết bị mới Hỗ trợ có sẵn cho các bộ phận AVR sau: AVR16DA28, AVR16DA32,
AVR16DA48, AVR32DA28, AVR32DA32, AVR32DA48, AVR64DA28, AVR64DA32, AVR64DA48, AVR64DA64, AVR128DB28, AVR128DB32, AVR128DB48 và AVR128DB64.

Thiết bị đã rút lại Hỗ trợ Không còn hỗ trợ cho các phần AVR sau: ATA5272, ATA5790, ATA5790N,ATA5791,ATA5795,ATA6285,ATA6286,ATA6612C,ATA6613C,ATA6614Q, ATA6616C, ATA6617C và ATA664251.

Phiên bản 2.29 (Bản phát hành an toàn chức năng)

Tiêu đề file cho trình biên dịch tích hợp sẵn Để đảm bảo rằng trình biên dịch có thể tuân thủ các đặc tả ngôn ngữ như MISRA, tiêu đề file, được tự động bao gồm bởi , đã được cập nhật. Tiêu đề này chứa các nguyên mẫu cho tất cả các chức năng dựng sẵn, chẳng hạn như _buil tin _avrnop () và _buil tin_ avr delay_cycles () . Một số nội dung tích hợp có thể không tuân thủ MISRA; những thứ này có thể được bỏ qua bằng cách thêm định nghĩa _Xe_ STRICT_ MISRA vào dòng lệnh của trình biên dịch. Các phần dựng sẵn và phần khai báo của chúng đã được cập nhật để sử dụng các loại có chiều rộng cố định.

Phiên bản 2.20

Hỗ trợ thiết bị mới Hỗ trợ có sẵn cho các phần AVR sau: ATTINY1624, ATTINY1626 và ATTINY1627.

Phân bổ phù hợp nhất tốt hơn Trình cấp phát phù hợp nhất (BFA) trong trình biên dịch đã được cải thiện để các phần được phân bổ theo thứ tự cho phép tối ưu hóa tốt hơn. BFA hiện hỗ trợ không gian địa chỉ được đặt tên và xử lý khởi tạo dữ liệu tốt hơn.

Cải thiện trừu tượng hóa thủ tục Các tối ưu hóa trừu tượng thủ tục hiện được thực hiện trên nhiều chuỗi mã hơn. Các tình huống trước đây khi tối ưu hóa này có thể làm tăng kích thước mã đã được giải quyết bằng cách làm cho mã tối ưu hóa nhận biết được quy trình thu gom rác của trình liên kết.

Không có AVR Assembler AVR Assembler không còn được bao gồm trong bản phân phối này.

Phiên bản 2.19 (Bản phát hành an toàn chức năng)

Không có.

Phiên bản 2.10

Bảo hiểm mã Bản phát hành này bao gồm một tính năng bảo hiểm mã hỗ trợ phân tích mức độ mà mã nguồn của dự án đã được thực thi. Sử dụng tùy chọn -mcodecov=ram để kích hoạt nó. Sau khi thực thi chương trình trên phần cứng của bạn, thông tin về mức độ phù hợp của mã sẽ được đối chiếu trong thiết bị và thông tin này có thể được chuyển đến và hiển thị bởi MPLAB X IDE thông qua plugin mức độ phù hợp của mã. Xem tài liệu IDE để biết thông tin về plugin này. #pragma mcodecov có thể được sử dụng để loại trừ các chức năng tiếp theo khỏi phân tích phạm vi bảo hiểm. Lý tưởng nhất là pragma nên được thêm vào đầu file để loại trừ toàn bộ đó file từ phân tích phạm vi bảo hiểm. Ngoài ra, thuộc tính ( (mcodecov) ) có thể được sử dụng để loại trừ một chức năng cụ thể khỏi phân tích phạm vi.

Mô tả thiết bị files Một thiết bị mới file được gọi là avr chipinfo. html nằm trong thư mục tài liệu của bản phân phối trình biên dịch. Cái này file liệt kê tất cả các thiết bị được trình biên dịch hỗ trợ. Nhấp vào tên thiết bị và nó sẽ mở ra một trang hiển thị tất cả các cặp giá trị/cài đặt bit cấu hình được phép cho thiết bị đó, với ví dụ:amphọ

trừu tượng thủ tục Tối ưu hóa thủ tục trừu tượng hóa, thay thế các khối mã hợp ngữ phổ biến bằng các lệnh gọi đến một bản sao được trích xuất của khối đó, đã được thêm vào trình biên dịch. Chúng được thực hiện bởi một ứng dụng riêng biệt, được trình biên dịch gọi tự động khi chọn tối ưu hóa cấp 2, 3 hoặc cấp XNUMX. Những tối ưu hóa này làm giảm kích thước mã, nhưng chúng có thể làm giảm tốc độ thực thi và khả năng gỡ lỗi mã.
Tính năng trừu tượng hóa thủ tục có thể bị tắt ở các mức tối ưu hóa cao hơn bằng cách sử dụng tùy chọn -mno-pa hoặc có thể được bật ở các mức tối ưu hóa thấp hơn (tuân theo giấy phép của bạn) bằng cách sử dụng -mpa. Nó có thể bị vô hiệu hóa cho một đối tượng file sử dụng -mno-pa-on-file=filetên hoặc vô hiệu hóa cho một chức năng bằng cách sử dụng -mno-pa trên chức năng = chức năng.
Bên trong mã nguồn của bạn, tính trừu tượng theo thủ tục có thể bị vô hiệu hóa đối với một hàm bằng cách sử dụng _attribute_ ( (nopa)) với định nghĩa của hàm hoặc bằng cách sử dụng _nopa, mở rộng thành thuộc tính ( (nopa, noinline)) và do đó ngăn chức năng nội tuyến diễn ra và có sự trừu tượng của mã nội tuyến.
Hỗ trợ khóa bit trong pragma Cấu hình #pragma hiện có thể được sử dụng để chỉ định các bit khóa AVR cũng như các bit cấu hình khác. Kiểm tra thông tin chip avr. html file (đã đề cập ở trên) cho các cặp cài đặt/giá trị để sử dụng với pragma này.
Hỗ trợ thiết bị mới Hỗ trợ sẵn có cho các phần sau: AVR28DA128, AVR64DA128,AVR32DA128 và AVR48DA128.

Phiên bản 2.05

Thêm bit cho buck của bạn Phiên bản macOS của trình biên dịch và trình quản lý giấy phép này hiện là ứng dụng 64 bit. Điều này sẽ đảm bảo rằng trình biên dịch sẽ cài đặt và chạy mà không có cảnh báo trên các phiên bản macOS gần đây.
Các đối tượng const trong bộ nhớ chương trình Trình biên dịch bây giờ có thể đặt các đối tượng đủ tiêu chuẩn const trong bộ nhớ Flash của chương trình, thay vì đặt chúng trong RAM. Trình biên dịch đã được sửa đổi để dữ liệu toàn cầu đủ điều kiện được lưu trữ trong bộ nhớ flash chương trình và dữ liệu này có thể được truy cập trực tiếp và gián tiếp bằng cách sử dụng các hướng dẫn bộ nhớ chương trình thích hợp. Tính năng mới này được bật theo mặc định nhưng có thể bị tắt bằng tùy chọn -mno-const-data-in-progmem. Đối với kiến ​​trúc avrxmega3 và avrtiny, tính năng này không bắt buộc và luôn bị tắt vì bộ nhớ chương trình được ánh xạ vào không gian địa chỉ dữ liệu cho các thiết bị này.
Tiêu chuẩn miễn phí Các phiên bản không được cấp phép (Miễn phí) của trình biên dịch này hiện cho phép tối ưu hóa lên đến và bao gồm cả cấp 2. Điều này sẽ cho phép xuất ra kết quả tương tự, mặc dù không giống hệt với những gì trước đây có thể sử dụng giấy phép Tiêu chuẩn.
Chào mừng AVRASM2 Trình biên dịch AVRASM2 dành cho thiết bị 8 bit hiện được bao gồm trong trình cài đặt trình biên dịch XC8. Trình hợp ngữ này không được sử dụng bởi trình biên dịch XC8, nhưng có sẵn cho các dự án dựa trên nguồn hợp ngữ viết tay.
Hỗ trợ thiết bị mới Hỗ trợ có sẵn cho các phần sau: ATMEGA1608, ATMEGA1609, ATMEGA808 và ATMEGA809.

Phiên bản 2.00

Trình điều khiển cấp cao nhất Trình điều khiển mới, được gọi là xc8-cc, hiện nằm trên trình điều khiển avr-gcc trước đó và trình điều khiển xc8 và trình điều khiển này có thể gọi trình biên dịch thích hợp dựa trên việc lựa chọn thiết bị đích. Trình điều khiển này chấp nhận các tùy chọn kiểu GCC, được dịch hoặc chuyển qua trình biên dịch đang được thực thi. Trình điều khiển này cho phép một tập hợp các tùy chọn tương tự với ngữ nghĩa tương tự được sử dụng với bất kỳ mục tiêu AVR hoặc PIC nào và do đó là cách được đề xuất để gọi trình biên dịch. Nếu được yêu cầu, trình điều khiển avr-gcc cũ có thể được gọi trực tiếp bằng cách sử dụng các tùy chọn kiểu cũ được chấp nhận trong các phiên bản trình biên dịch trước đó.

Giao diện C chung Trình biên dịch này giờ đây có thể phù hợp với Giao diện MPLAB Common C, cho phép chuyển mã nguồn dễ dàng hơn qua tất cả các trình biên dịch MPLAB XC. Tùy chọn -mext=cci yêu cầu tính năng này, cho phép cú pháp thay thế cho nhiều phần mở rộng ngôn ngữ.

Trình điều khiển thư viện mới Trình điều khiển thủ thư mới được định vị phía trên thủ thư thư viện PIC trước đó và thủ thư AVR avr-ar. Trình điều khiển này chấp nhận các tùy chọn kiểu trình lưu trữ GCC, được dịch cho hoặc chuyển qua thủ thư đang được thực thi. Trình điều khiển mới cho phép sử dụng một bộ tùy chọn tương tự với ngữ nghĩa tương tự để tạo hoặc thao tác với bất kỳ thư viện PIC hoặc AVR nào file và do đó là cách được khuyến nghị để gọi thủ thư. Nếu được yêu cầu cho các dự án kế thừa, thủ thư trước đó có thể được gọi trực tiếp bằng cách sử dụng các tùy chọn kiểu cũ mà nó đã chấp nhận trong các phiên bản trình biên dịch trước đó.

Vấn đề di chuyển

Sau đây là các tính năng hiện được trình biên dịch xử lý theo cách khác. Những thay đổi này có thể yêu cầu sửa đổi mã nguồn của bạn nếu chuyển mã sang phiên bản trình biên dịch này. Số phiên bản trong các tiêu đề phụ cho biết phiên bản trình biên dịch đầu tiên hỗ trợ các thay đổi tiếp theo.

Phiên bản 2.40

Không có.

Phiên bản 2.39 (Bản phát hành an toàn chức năng)

Không có.

Phiên bản 2.36

Không có.

Phiên bản 2.35

Xử lý các cơ sở từ chuỗi đến (XCS-2420) Để đảm bảo tính nhất quán với các trình biên dịch XC khác, các hàm chuyển chuỗi XC8, như strtol(), v.v., sẽ không cố gắng chuyển đổi chuỗi đầu vào nếu cơ số được chỉ định lớn hơn 36 và thay vào đó sẽ đặt errno thành EINVAL. Tiêu chuẩn C không chỉ định hành vi của các hàm khi giá trị cơ bản này bị vượt quá.

Tối ưu hóa tốc độ không phù hợp Tối ưu hóa trừu tượng theo thủ tục đã được bật khi chọn tối ưu hóa cấp 3 (-03). Những tối ưu hóa này làm giảm kích thước mã với chi phí là tốc độ mã, do đó không nên được thực hiện. Các dự án sử dụng mức tối ưu hóa này có thể thấy sự khác biệt về kích thước mã và tốc độ thực thi khi được xây dựng với bản phát hành này.

chức năng thư viện Mã cho nhiều chức năng thư viện C tiêu chuẩn hiện đến từ Thư viện tiêu chuẩn hợp nhất của Microchip, có thể thể hiện hành vi khác trong một số trường hợp so với hành vi được cung cấp bởi thư viện avr-libc trước đây. Đối với người yêu cũample, không còn cần phải liên kết trong thư viện lprintf_flt (tùy chọn -print _flt) để bật hỗ trợ IO được định dạng cho các bộ xác định định dạng float. Các tính năng IO thông minh của Thư viện tiêu chuẩn hợp nhất của Microchip khiến tùy chọn này trở nên dư thừa. Ngoài ra, việc sử dụng các thủ tục có hậu tố _p cho các hàm chuỗi và bộ nhớ (ví dụ: strcpy_P(), v.v.) hoạt động trên các chuỗi const trong flash không còn cần thiết nữa. Các thường trình C tiêu chuẩn (ví dụ: strcpy()) sẽ hoạt động chính xác với dữ liệu đó khi tính năng const-data-in-program-memory được bật.

Phiên bản 2.32

Không có.

Phiên bản 2.31

Không có.

Phiên bản 2.30

Không có.

Phiên bản 2.29 (Bản phát hành an toàn chức năng)

Không có.

Phiên bản 2.20

Đã thay đổi bố cục DFP Trình biên dịch hiện giả định một bố cục khác được sử dụng bởi DFP (Gói dòng thiết bị). Điều này có nghĩa là một DFP cũ hơn có thể không hoạt động với bản phát hành này và các trình biên dịch cũ hơn sẽ không thể sử dụng các DFP mới nhất.

Phiên bản 2.19 (Bản phát hành an toàn chức năng)

Không có.

Phiên bản 2.10

Không áp dụng

Phiên bản 2.05

Đối tượng const trong bộ nhớ chương trình Lưu ý rằng theo mặc định, các đối tượng đủ tiêu chuẩn const sẽ được đặt và truy cập trong bộ nhớ chương trình (như được mô tả tại đây). Điều này sẽ ảnh hưởng đến kích thước và tốc độ thực hiện dự án của bạn, nhưng sẽ giảm mức sử dụng RAM. Tính năng này có thể bị tắt, nếu cần, bằng cách sử dụng tùy chọn -mnoconst- da ta-in-progmem.

Phiên bản 2.00

cầu chì cấu hình Các cầu chì cấu hình thiết bị hiện có thể được lập trình bằng cách sử dụng pragma cấu hình, theo sau là các cặp giá trị cài đặt để chỉ định trạng thái cầu chì, ví dụ:
#pragma config WDT0N = SET
#pragma config B0DLEVEL = B0DLEVEL_4V3
Đối tượng và chức năng tuyệt đối Các đối tượng và chức năng hiện có thể được đặt tại địa chỉ cụ thể trong bộ nhớ bằng cách sử dụng trình xác định CCI _at (địa chỉ), ví dụ:ample: #bao gồm int foobar tại(Ox800100); char at(Ox250) get ID(int offset) { … } Đối số cho bộ xác định này phải là một hằng số đại diện cho địa chỉ mà tại đó byte hoặc lệnh đầu tiên sẽ được đặt. Địa chỉ RAM được biểu thị bằng cách sử dụng độ lệch 0x800000. Cho phép CCI sử dụng tính năng này.
Cú pháp hàm ngắt mới Trình biên dịch bây giờ chấp nhận trình xác định ngắt CCI (num) để chỉ ra rằng các hàm C là các trình xử lý ngắt. Trình xác định lấy một số ngắt, ví dụ:ample: #bao gồm vô hiệu ngắt(SPI STC_ vect _num) spi Isr(void) { … }

Các vấn đề cố định

Sau đây là những chỉnh sửa đã được thực hiện đối với trình biên dịch. Những điều này có thể sửa các lỗi trong mã được tạo hoặc thay đổi hoạt động của trình biên dịch thành hoạt động được dự định hoặc chỉ định bởi hướng dẫn người dùng. Số phiên bản trong các tiêu đề phụ cho biết phiên bản trình biên dịch đầu tiên chứa các bản sửa lỗi cho các sự cố tiếp theo. (Các) nhãn trong ngoặc đơn trong tiêu đề là thông tin nhận dạng của vấn đề đó trong cơ sở dữ liệu theo dõi. Chúng có thể hữu ích nếu bạn cần liên hệ với bộ phận hỗ trợ.

Lưu ý rằng một số sự cố dành riêng cho thiết bị đã được khắc phục trong Gói dòng thiết bị (DFP) được liên kết với thiết bị. Xem Trình quản lý gói MPLAB để biết thông tin về các thay đổi được thực hiện đối với DFP và để tải xuống các gói mới nhất.

Phiên bản 2.40

Quá thoải mái (XCS-2876) Khi sử dụng tùy chọn -mrelax, trình biên dịch không phân bổ một số phần với nhau, dẫn đến kích thước mã ít tối ưu hơn. Điều này có thể xảy ra với mã sử dụng thư viện MUSL mới hoặc với các ký hiệu yếu.
Tính năng lập bản đồ không bị tắt như đã nêu trong cảnh báo (XCS-2875) Tính năng chương trình ánh xạ chi phí dữ liệu trong cấu hình phụ thuộc vào tính năng dữ liệu chi phí trong dự án đang được bật. Nếu tính năng cost-data-ipconfig-mapped-proem được bật rõ ràng bằng cách sử dụng tùy chọn này và tính năng cost-data-inprogmem bị tắt, thì bước liên kết không thành công, mặc dù có thông báo cảnh báo cho biết khuyết điểm data-in-config-mapped- tính năng proem đã tự động bị tắt, điều này không hoàn toàn chính xác. Tính năng const-data-in-config-mapped-proem hiện đã bị tắt hoàn toàn trong trường hợp này.
DFP thay đổi để truy cập chính xác NVMCTRL (XCS-2848) Mã khởi động thời gian chạy được sử dụng bởi các thiết bị AVR64EA không tính đến việc thanh ghi NVMCTRL nằm trong Bảo vệ Thay đổi Cấu hình (CCP) và không thể đặt IO SFR thành trang được sử dụng bởi trình biên dịch const-data-in configmapped-proem tính năng. Các thay đổi được thực hiện trong AVR-Ex_DFP phiên bản 2.2.55 sẽ cho phép mã khởi động thời gian chạy ghi chính xác vào thanh ghi này.
DFP thay đổi để tránh ánh xạ flash (XCS-2847) Một giải pháp khắc phục sự cố với tính năng thiết bị ánh xạ flash được báo cáo trong AVR128DA28/32/48/64 Silicon Errata (DS80000882) đã được triển khai. Tính năng trình biên dịch const-data-in-config-mapped-proem sẽ không được áp dụng theo mặc định cho các thiết bị bị ảnh hưởng và thay đổi này sẽ xuất hiện trong AVR-Ex_DFP phiên bản 2.2.160.
Lỗi bản dựng với sinhf hoặc coshf (XCS-2834) Nỗ lực sử dụng các hàm thư viện sinhf() hoặc coshf() dẫn đến lỗi liên kết, mô tả một tham chiếu không xác định. Hàm bị thiếu được tham chiếu hiện đã được đưa vào bản phân phối trình biên dịch.
Xây dựng lỗi với nopa (XCS-2833) Việc sử dụng thuộc tính nopa với một hàm có tên trình biên dịch chương trình được chỉ định bằng cách sử dụng as () đã kích hoạt các thông báo lỗi từ trình biên dịch chương trình. Sự kết hợp này là không thể.
Lỗi chức năng biến đổi với các đối số con trỏ (XCS-2755, XCS-2731) Các hàm có số lượng đối số thay đổi yêu cầu con trỏ 24 bit (kiểu _memo) được chuyển vào danh sách đối số biến khi bật tính năng dữ liệu chi phí trong dự án. Các đối số là con trỏ tới bộ nhớ dữ liệu đã được chuyển dưới dạng đối tượng 16 bit, gây ra lỗi mã khi chúng được đọc lần cuối. Khi tính năng dữ liệu khuyết điểm trong dự án được bật, tất cả các đối số con trỏ 16 bit hiện được chuyển đổi thành con trỏ 24 bit. chức năng thư viện strtoxxx không thành công (XCS-2620) Khi bật tính năng const-data-in-proem, tham số enter trong các hàm thư viện strtoxxx không được cập nhật đúng cách cho các đối số chuỗi nguồn không có trong bộ nhớ chương trình.
Cảnh báo cho các diễn viên không hợp lệ (XCS-2612) Trình biên dịch hiện sẽ báo lỗi nếu tính năng chi phí trong dự án được bật và địa chỉ của một chuỗi ký tự được truyền rõ ràng sang không gian địa chỉ dữ liệu (bỏ từ hạn định const), ví dụ:ample, (uint8 t *) “Xin chào thế giới!”. Sẽ có cảnh báo nếu địa chỉ có thể không hợp lệ khi con trỏ dữ liệu const được truyền rõ ràng tới không gian địa chỉ dữ liệu.
Vị trí của các đối tượng const chưa được khởi tạo (XCS-2408) Các đối tượng const và const volatile chưa được khởi tạo không được đặt trong bộ nhớ chương trình trên các thiết bị ánh xạ tất cả hoặc một phần bộ nhớ chương trình của chúng vào không gian địa chỉ dữ liệu. Đối với các thiết bị này, các đối tượng như vậy hiện được đặt trong bộ nhớ chương trình, làm cho hoạt động của chúng nhất quán với các thiết bị khác.

Phiên bản 2.39 (Bản phát hành an toàn chức năng)

Không có.

Phiên bản 2.36

Lỗi khi trì hoãn (XCS-2774) Những thay đổi nhỏ trong mặc định Tối ưu hóa chế độ miễn phí đã ngăn việc gấp các biểu thức toán hạng liên tục thành các hàm tích hợp độ trễ, dẫn đến việc chúng được coi là không tiếp xúc và gây ra lỗi: _buil tin avr delay_ chu kỳ mong đợi ac ompile hằng số nguyên thời gian.

Phiên bản 2.35

Phân bổ liền kề bằng cách sử dụng _at (XCS-2653) Việc phân bổ liền kề nhiều đối tượng đặt trong một phần có cùng tên và sử dụng at () không hoạt động chính xác. Đối với người yêu cũample: constchararrl [ ] at tri butte ((sect on(“.misses”))) at (Ox50 0 ) = {Oxo , Ox CD} ; cost char arr2[ ] at tri butte ((section(“.my s eke”))) = {Oxen, Ox FE }; nên đặt arr2 ngay sau aril.
Chỉ định địa chỉ bắt đầu phần (XCS-2650) Tùy chọn -Wal, –section-start không thể đặt các phần tại địa chỉ bắt đầu được chỉ định. Vấn đề này đã được khắc phục cho bất kỳ phần được đặt tên tùy chỉnh nào; tuy nhiên, nó sẽ không hoạt động đối với bất kỳ phần tiêu chuẩn nào, chẳng hạn như . văn bản hoặc . bss, phải được đặt bằng tùy chọn -Wl, -T.
Trình liên kết gặp sự cố khi thư giãn (XCS-2647) Khi tối ưu hóa -relax được bật và có các phần mã hoặc dữ liệu không vừa với bộ nhớ khả dụng, trình liên kết đã gặp sự cố. Bây giờ, trong trường hợp như vậy, thay vào đó, các thông báo lỗi sẽ được đưa ra.
Truy cập EEPROM không hợp lệ (XCS-2629) Quy trình khối leproma _read_ không hoạt động chính xác trên các thiết bị Mega khi tùy chọn -monist-data-in-proem được bật (là trạng thái mặc định), dẫn đến bộ nhớ EEPROM không được đọc chính xác.
Cấp phát bộ nhớ không hợp lệ (XCS-2593, XCS-2651) Khi tùy chọn trình liên kết -Text hoặc -Tata (ví dụ:ample được chuyển qua bằng cách sử dụng tùy chọn trình điều khiển -Wl) được chỉ định, nguồn gốc vùng văn bản/dữ liệu tương ứng đã được cập nhật; tuy nhiên, địa chỉ cuối không được điều chỉnh tương ứng, điều này có thể dẫn đến vùng vượt quá phạm vi bộ nhớ của thiết bị đích.
Mã ngắt ATtiny không hợp lệ (XCS-2465) Khi xây dựng cho các thiết bị Tatin và tối ưu hóa đã bị vô hiệu hóa (-00), các chức năng ngắt có thể đã kích hoạt các thông báo trình biên dịch hợp ngữ nằm ngoài phạm vi toán hạng.
Các tùy chọn không được thông qua (XCS-2452) Khi sử dụng tùy chọn -Wl với nhiều tùy chọn trình liên kết được phân tách bằng dấu phẩy, không phải tất cả các tùy chọn trình liên kết đều được chuyển đến trình liên kết.
Lỗi đọc gián tiếp bộ nhớ chương trình (XCS-2450) Trong một số trường hợp, trình biên dịch đã tạo ra lỗi bên trong (không thể nhận dạng insn) khi đọc giá trị hai byte từ một con trỏ vào bộ nhớ chương trình

Phiên bản 2.32

Lần truy cập thư viện thứ hai không thành công (XCS-2381) Gọi phiên bản Windows của xc8-ar. exe lần thứ hai để truy cập kho lưu trữ thư viện hiện có có thể đã thất bại với thông báo lỗi không thể đổi tên.

Phiên bản 2.31

Lỗi trình biên dịch không rõ nguyên nhân (XCS-2367) Khi chạy trên nền tảng Windows có thư mục tạm thời của hệ thống được đặt thành đường dẫn bao gồm dấu chấm’.’ ký tự, trình biên dịch có thể đã không thực thi được.

Phiên bản 2.30

Nhãn chung bị đặt sai vị trí sau khi phác thảo (XCS-2299) Mã hợp ngữ viết tay đặt các nhãn toàn cầu trong các trình tự hợp ngữ được xác định bằng yếu tố trừu tượng theo thủ tục có thể đã không được định vị lại chính xác.
Một sự cố thư giãn (XCS-2287) Việc sử dụng tùy chọn -merlad có thể đã khiến trình liên kết gặp sự cố khi tối ưu hóa thư giãn nhảy đuôi cố gắng xóa chỉ dẫn ret không có ở cuối phần.
Sự cố khi tối ưu hóa nhãn dưới dạng giá trị (XCS-2282) Mã sử ​​dụng tiện ích mở rộng ngôn ngữ GNU C “Nhãn dưới dạng giá trị” có thể đã khiến tối ưu hóa trừu tượng hóa thủ tục gặp sự cố, với lỗi sửa lỗi kéo dài phạm vi VMA được phác thảo.
Không phải như vậy const (XCS-2271) Nguyên mẫu cho started() và các chức năng khác từ không còn chỉ định hạn định chi phí không chuẩn trên các con trỏ chuỗi được trả về khi tính năng -monist-data inprogmem bị tắt. Lưu ý rằng với các thiết bị avrxmega3 và avertin, tính năng này được bật vĩnh viễn.
Trình khởi tạo bị mất (XCS-2269) Khi có nhiều hơn một biến trong một đơn vị dịch thuật được đặt trong một phần (sử dụng phần hoặc thuộc tính ((phần))) và biến đầu tiên đó không được khởi tạo hoặc không có bộ khởi tạo, các bộ khởi tạo cho các biến khác trong cùng một đơn vị dịch thuật đã được đặt trong cùng một phần đã bị mất.

Phiên bản 2.29 (Bản phát hành an toàn chức năng)

Không có.

Phiên bản 2.20

Lỗi với lệnh dài (XCS-1983) Khi sử dụng mục tiêu AVR, trình biên dịch có thể đã dừng với một file không tìm thấy lỗi, nếu dòng lệnh quá lớn và chứa các ký tự đặc biệt như dấu ngoặc kép, dấu gạch chéo ngược, v.v.
Phần rodata chưa được chỉ định (XCS-1920) Trình liên kết AVR không thể gán bộ nhớ cho các phần rodata tùy chỉnh khi xây dựng cho kiến ​​trúc avrxmega3 và avrtiny, có khả năng gây ra lỗi chồng lấp bộ nhớ

Phiên bản 2.19 (Bản phát hành an toàn chức năng)

Không có.

Phiên bản 2.10

Thất bại di dời (XCS-1891) Trình cấp phát phù hợp nhất là để lại các ‘lỗ hổng’ bộ nhớ ở giữa các phần sau khi thư giãn trình liên kết. Ngoài việc phân mảnh bộ nhớ, điều này làm tăng khả năng xảy ra lỗi di chuyển trình liên kết liên quan đến các bước nhảy liên quan đến máy tính hoặc các cuộc gọi nằm ngoài phạm vi.
Hướng dẫn không được chuyển đổi bằng thư giãn (XCS-1889) Thư giãn trình liên kết không xảy ra đối với các lệnh gọi hoặc nhảy có mục tiêu có thể truy cập được nếu thư giãn.
Mất tích chức năng (XCSE-388) Một số định nghĩa từ , chẳng hạn như clock_ div_ t và clock_prescale_set (), không được xác định cho các thiết bị, bao gồm ATmega324PB, ATmega328PB, ATtiny441 và ATtiny841.
Thiếu macro Các macro tiền xử lý_ xcs _MODE_, _xcs VERSION, _xc và xcs không được trình biên dịch xác định tự động. Những thứ này hiện có sẵn.

Phiên bản 2.05

Lỗi trình biên dịch nội bộ (XCS-1822) Khi xây dựng trong Windows, lỗi trình biên dịch nội bộ có thể đã được tạo ra khi tối ưu hóa mã.
Không phát hiện tràn RAM (XCS-1800, XCS-1796) Các chương trình vượt quá RAM khả dụng đó không được trình biên dịch phát hiện trong một số trường hợp, dẫn đến lỗi mã thời gian chạy.
Bộ nhớ flash bị bỏ qua (XCS-1792) Đối với các thiết bị avrxmega3 và avrtiny, các phần của bộ nhớ flash có thể chưa được lập trình bởi MPLAB X IDE.
Không thể thực thi chính (XCS-1788) Trong một số trường hợp khi chương trình không có biến toàn cục được xác định, mã khởi động thời gian chạy không thoát và hàm main() không bao giờ đạt được.
Thông tin bộ nhớ không chính xác (XCS-1787) Đối với các thiết bị avrxmega3 và avrtiny, chương trình có kích thước avr đã báo cáo rằng dữ liệu chỉ đọc đang tiêu tốn RAM thay vì bộ nhớ chương trình.
Đọc bộ nhớ chương trình không chính xác (XCS-1783) Các dự án được biên dịch cho các thiết bị có bộ nhớ chương trình được ánh xạ vào không gian địa chỉ dữ liệu và xác định các đối tượng bằng macro/thuộc tính PROGMEM có thể đã đọc các đối tượng này từ địa chỉ sai.
Lỗi nội bộ với các thuộc tính (XCS-1773) Đã xảy ra lỗi nội bộ nếu bạn đã xác định các đối tượng con trỏ bằng
_at () hoặc thuộc tính () mã thông báo ở giữa tên con trỏ và loại được hủy đăng ký, ví dụ:ample, char *
_at ( 0x80015 0) cp; Một cảnh báo hiện được đưa ra nếu gặp phải mã như vậy.
Lỗi không thực thi chính (XCS-1780, XCS-1767, XCS-1754) Việc sử dụng các biến EEPROM hoặc xác định cầu chì bằng cách sử dụng cấu hình pragma có thể đã gây ra khởi tạo dữ liệu không chính xác và/hoặc khóa thực thi chương trình trong mã khởi động thời gian chạy, trước khi đến được main () .
Lỗi cầu chì với các thiết bị nhỏ (XCS-1778, XCS-1742) Các thiết bị attiny4/5/9/10/20/40 có độ dài cầu chì không chính xác được chỉ định trong tiêu đề của chúng files dẫn đến lỗi trình liên kết khi cố gắng xây dựng mã đã xác định cầu chì.
Lỗi phân đoạn (XCS-1777) Một lỗi phân khúc không liên tục đã được sửa chữa.
Sự cố trình biên dịch mã (XCS-1761) Trình hợp dịch avr-as có thể đã bị lỗi khi trình biên dịch được chạy trong Ubuntu 18.
Các đối tượng không bị xóa (XCS-1752) Các đối tượng thời lượng lưu trữ tĩnh chưa được khởi tạo có thể không bị xóa bởi mã khởi động thời gian chạy.
Thông số thiết bị xung đột bị bỏ qua (XCS-1749) Trình biên dịch không tạo ra lỗi khi nhiều tùy chọn đặc tả thiết bị được sử dụng và chỉ định các thiết bị khác nhau.
Bộ nhớ bị hỏng theo đống (XCS-1748) Biểu tượng bắt đầu heap_ đã được đặt không chính xác, dẫn đến khả năng các biến thông thường bị hỏng bởi heap.
Lỗi di chuyển trình liên kết (XCS-1739) Lỗi di chuyển trình liên kết có thể đã được phát ra khi mã chứa rjmp hoặc rcall với mục tiêu cách xa chính xác 4k byte.

Phiên bản 2.00

Không có.

Các vấn đề đã biết

Sau đây là những hạn chế trong hoạt động của trình biên dịch. Đây có thể là những hạn chế mã hóa chung, hoặc
sai lệch so với thông tin có trong sách hướng dẫn sử dụng. (Các) nhãn trong ngoặc đơn trong tiêu đề là thông tin nhận dạng của vấn đề đó trong cơ sở dữ liệu theo dõi. Điều này có thể hữu ích nếu bạn cần liên hệ với bộ phận hỗ trợ. Những mục không có nhãn là những hạn chế mô tả chế độ hoạt động và có khả năng duy trì hiệu lực vĩnh viễn.

Tích hợp MPLAB X IDE

Tích hợp MPLAB IDE Nếu Trình biên dịch được sử dụng từ MPLAB IDE, thì bạn phải cài đặt MPLAB IDE trước khi cài đặt Trình biên dịch.

Tạo mã

Lỗi cấp phát bộ nhớ PA (XCS-2881) Khi sử dụng trình tối ưu hóa trừu tượng hóa thủ tục, trình liên kết có thể báo cáo lỗi cấp phát bộ nhớ khi kích thước mã gần bằng dung lượng bộ nhớ chương trình khả dụng trên thiết bị, mặc dù chương trình có thể vừa với dung lượng khả dụng.
Smart-IO không quá thông minh (XCS-2872) Tính năng smart-io của trình biên dịch sẽ tạo mã hợp lệ nhưng tối ưu phụ cho chức năng chạy nước rút nếu tính năng Coast-data-in-proem bị vô hiệu hóa hoặc nếu thiết bị có tất cả flash được ánh xạ vào bộ nhớ dữ liệu.
Smart-IO thậm chí kém thông minh hơn (XCS-2869) Tính năng smart-io của trình biên dịch sẽ tạo mã hợp lệ nhưng dưới mức tối ưu khi cả hai tùy chọn -floe và -fno-buil tin đều được sử dụng.
Vị trí dữ liệu chỉ đọc dưới mức tối ưu (XCS-2849) Trình liên kết hiện không nhận biết được các phần bộ nhớ APPCODE và APPDATA, cũng như các phân chia [Không-]Đọc-Khi-Ghi trong bản đồ bộ nhớ. Do đó, có một khả năng nhỏ là trình liên kết có thể phân bổ dữ liệu chỉ đọc trong vùng bộ nhớ không phù hợp. Khả năng dữ liệu bị thất lạc tăng lên nếu tính năng Coast-data-in-pragma được bật, đặc biệt nếu tính năng Coast-data-in-config-mapped-proem cũng được bật. Các tính năng này có thể bị vô hiệu hóa nếu cần.
Đối tượng file lệnh xử lý (XCS-2863) Thứ tự các đối tượng files sẽ được xử lý bởi trình liên kết có thể khác nhau dựa trên việc sử dụng tối ưu hóa trừu tượng thủ tục (tùy chọn -mpa). Điều này sẽ chỉ ảnh hưởng đến mã xác định các chức năng yếu trên nhiều mô-đun.
Lỗi trình liên kết với tuyệt đối (XCS-2777) Khi một đối tượng đã được tạo tuyệt đối tại một địa chỉ ở đầu RAM và các đối tượng chưa được khởi tạo cũng đã được xác định, lỗi trình liên kết có thể được kích hoạt.
ID đánh thức ngắn (XCS-2775) Đối với các thiết bị ATA5700/2, các thanh ghi PHID0/1 chỉ được xác định là rộng 16 bit, thay vì rộng 32 bit.
Trình liên kết gặp sự cố khi gọi biểu tượng (XCS-2758) Trình liên kết có thể gặp sự cố nếu tùy chọn trình điều khiển -merlad được sử dụng khi mã nguồn gọi một ký hiệu đã được xác định bằng tùy chọn trình liên kết -Wl, –defsym.
Khởi tạo không chính xác (XCS-2679) Có sự khác biệt giữa nơi các giá trị ban đầu cho một số đối tượng có kích thước byte tĩnh/toàn cầu được đặt trong bộ nhớ dữ liệu và nơi các biến sẽ được truy cập trong thời gian chạy.
bắt đầu không chính xác đặt trống (XCS-2652) Trong trường hợp một chuỗi chủ đề để chuyển đổi theo đã nêu () chứa số có vẻ là số dấu phẩy động ở định dạng hàm mũ và có một ký tự không mong muốn sau ký tự e, thì địa chỉ trống, nếu được cung cấp, sẽ trỏ đến ký tự sau e chứ không phải bản thân e. Đối với người yêu cũample: đã nêu(“hooey”, trống rỗng); sẽ dẫn đến trống chỉ vào ký tự x.
Các cuộc gọi chức năng gián tiếp không hợp lệ (XCS-2628) Trong một số trường hợp, các lệnh gọi hàm được thực hiện thông qua một con trỏ hàm được lưu trữ như một phần của cấu trúc có thể không thành công.
strtof trả về 2626 cho số float thập lục phân (XCS-XNUMX) Các hàm thư viện strtof() et al và scanf() et al, sẽ luôn chuyển đổi một số dấu phẩy động thập lục phân không chỉ định số mũ thành
số không. Đối với người yêu cũample: stator(“Owl”, &empty); sẽ trả về giá trị 0, không phải 1.
Thông báo cố vấn ngăn xếp không chính xác (XCS-2542, XCS-2541) Trong một số trường hợp, cảnh báo cố vấn ngăn xếp liên quan đến đệ quy hoặc ngăn xếp không xác định được sử dụng (có thể thông qua việc sử dụng alloca()) không được phát ra.
Lỗi với mã ngắt trùng lặp (XCS-2421) Khi có nhiều hơn một hàm ngắt có cùng phần thân, trình biên dịch có thể có đầu ra cho một hàm ngắt gọi hàm kia. Điều này sẽ dẫn đến việc tất cả các thanh ghi bị chặn cuộc gọi được lưu một cách không cần thiết và các ngắt sẽ được bật ngay cả trước khi phần kết của trình xử lý ngắt hiện tại chạy, điều này có thể dẫn đến lỗi mã.
Các đối tượng Const không có trong bộ nhớ chương trình (XCS-2408) Đối với các dự án avrxmega3 và avertins, các đối tượng const chưa được xử lý được đặt vào bộ nhớ dữ liệu, mặc dù có cảnh báo cho biết rằng chúng đã được đặt trong bộ nhớ chương trình. Điều này sẽ không ảnh hưởng đến các thiết bị không có bộ nhớ chương trình được ánh xạ vào không gian bộ nhớ dữ liệu, cũng như không ảnh hưởng đến bất kỳ đối tượng nào được khởi tạo.
Đầu ra không hợp lệ với đường dẫn DFP không hợp lệ (XCS-2376) Nếu trình biên dịch được gọi với đường dẫn DFP không hợp lệ và ‘thông số kỹ thuật’ file tồn tại cho thiết bị đã chọn, trình biên dịch không báo cáo gói họ thiết bị bị thiếu và thay vào đó chọn ‘thông số kỹ thuật’ file, sau đó có thể dẫn đến đầu ra không hợp lệ. ‘thông số kỹ thuật’ files có thể không được cập nhật với các DFP được phân phối và chỉ nhằm mục đích sử dụng với kiểm tra trình biên dịch nội bộ.
Chồng chéo bộ nhớ không bị phát hiện (XCS-1966) Trình biên dịch không phát hiện sự chồng chéo bộ nhớ của các đối tượng được tạo tuyệt đối tại một địa chỉ (thông qua at ()) và các đối tượng khác bằng cách sử dụng bộ xác định phần () và được liên kết với cùng một địa chỉ.
Lỗi chức năng thư viện và _meme (XCS-1763) Các hàm float được gọi với một đối số trong không gian địa chỉ _memo có thể không thành công. Lưu ý rằng các thủ tục thư viện được gọi từ một số toán tử C, vì vậy, ví dụ:ample, đoạn mã sau bị ảnh hưởng: return regFloatVar > memxFloatVar;
Triển khai hệ viền hạn chế (AVRTC-731) Đối với các sản phẩm ATTiny4/5/9/10/20/40, việc triển khai thư viện C/Math tiêu chuẩn trong hệ viền là rất hạn chế hoặc không có.
Giới hạn bộ nhớ chương trình (AVRTC-732) Hình ảnh bộ nhớ chương trình vượt quá 128 kb được chuỗi công cụ hỗ trợ; tuy nhiên, có những trường hợp đã biết về trình liên kết hủy bỏ mà không thư giãn và không có thông báo lỗi hữu ích thay vì tạo ra các sơ khai chức năng cần thiết khi tùy chọn -relax được sử dụng.
Giới hạn không gian đặt tên (AVRTC-733) Không gian địa chỉ được đặt tên được hỗ trợ bởi chuỗi công cụ, tuân theo các giới hạn được đề cập trong phần hướng dẫn người dùng Bộ định tính loại đặc biệt.
Múi giờ Các các chức năng thư viện giả sử GMT và không hỗ trợ múi giờ địa phương, do đó giờ địa phương () sẽ trả về cùng thời gian với gummite (), ví dụ:ample.

HỖ TRỢ KHÁCH HÀNG

file///Ứng dụng/microehip/xc8/v 2 .40/docs/Read me_X C 8_ cho A VR. htm

Tài liệu / Nguồn lực

dự án

Related Posts