ID bài viết: 000074333 Loại nội dung: Thông báo lỗi Lần duyệt cuối: 22/10/2014

Lỗi lập trình Nios II hệ thống sang Flash

Môi Trường

  • Phiên bản đăng ký Intel®Intel® Quartus® II
  • Bộ xử lý Intel® Nios® II
  • BUILT IN - ARTICLE INTRO SECOND COMPONENT

    Sự cố quan trọng

    Mô tả

    Vấn đề này ảnh hưởng đến mã được dự định thực hiện tại chỗ trong flash bằng cách sử alt_load() dụng để sao chép các phần có thể ghi vào RAM. Nếu một phần ELF (ví .bssdụ) sẽ được sao chép từ flash sang RAM bằng cách sử dụng alt_load(), các công cụ xây dựng phần mềm kiểm tra xem phần đó có phù hợp với RAM không nhưng không phù hợp với bộ nhớ flash mà nó sẽ được lập trình trong. Các công cụ tạo ra một tệp lập trình mà không có bất kỳ dấu hiệu nào của lỗi kích thước mã.

    Vấn đề này có nhiều khả năng ảnh hưởng đến bạn nếu bộ nhớ mục tiêu của bạn là flash onchip MAX 10, tương đối nhỏ. Vấn đề này chỉ ảnh hưởng đến bạn nếu bạn đang sử dụng alt_load().

    Độ phân giải

    Bạn có thể xác định theo cách thủ công xem mã của mình có phù hợp bằng cách tìm kiếm ở đầu tệp .objdump , được tạo khi bạn xây dựng ứng dụng của mình. Tập tin này chứa thông tin mà bạn có thể sử dụng để xác định xem mỗi phần có phù hợp trong flash hay không bộ nhớ, như được thể hiện trong ví dụ sau.

    Tệp .objdump được tạo trong ứng dụng thư mục cấp cao nhất của ứng dụng. Bạn có thể tạo ra nó từ dòng lệnh bằng cách gõ make app vào ứng dụng Thư mục.

    Gần đầu tệp .objdump là danh sách các các phần tương tự như sau:

    Sections:
    IdxNameSizeVMALMAFile offAlgn
    0.entry000000200002800000028000000010002**5
    CONTENTS, ALLOC, LOAD, READONLY, CODE
    1.exceptions000002200002802000028020000010202**2
    CONTENTS, ALLOC, LOAD, READONLY, CODE
    2.text00006504 00028240 00028240 00001240 2**2
    CONTENTS, ALLOC, LOAD, READONLY, CODE
    3.rodata 0000005c 00040000 0002e744 00008000 2**2
    CONTENTS, ALLOC, LOAD, READONLY, DATA
    4.rwdata 00001b78 0004005c 0002e7a0 0000805c 2**2
    CONTENTS, ALLOC, LOAD, DATA, SMALL_DATA
    5.bss 00000154 00041bd4 00030318 00009bd4 2**2
    ALLOC, SMALL_DATA

    Mỗi phần có giá trị cho kích thước, VMA và LMA. VMA là địa chỉ thời gian chạy và LMA là địa chỉ tải. Nếu một phần không đã sao chép, VMA = LMA. Nếu một phần được sao chép, phần đó sẽ được sao chép từ LMA đến VMA.

    Trong trường hợp này, mục đích sử dụng alt_load(), .entry.text không được sao chép (VMA = LMA). .rodata, .rwdata, và .bss được sao chép từ địa chỉ flash (LMA) sang RAM địa chỉ (VMA).

    Flash trong ví dụ này có một loạt các khả 0x28000 cho 0x30000. Phần .rwdata được lập trình để flash bắt đầu tại VMA = 0x2e7a0 mở rộng sang Kích thước VMA = 0x2e7a0 0x1b78 = 0x30518. Do đó nó không vừa với flash.

    Các sản phẩm liên quan

    Bài viết này áp dụng cho 1 sản phẩm

    FPGA Intel® MAX® 10

    Nội dung gốc bằng tiếng Anh trên trang này vừa do con người vừa do máy dịch. Nội dung này chỉ để cung cấp thông tin chung và giúp quý vị thuận tiện. Quý vị không nên tin đây là thông tin hoàn chỉnh hoặc chính xác. Nếu có bất kỳ mâu thuẫn nào giữa bản tiếng Anh và bản dịch của trang này, thì bản tiếng Anh sẽ chi phối và kiểm soát. Xem phiên bản tiếng Anh của trang này.