ID bài viết: 000081636 Loại nội dung: Xử lý sự cố Lần duyệt cuối: 11/09/2012

Tại sao lệnh linker của tôi không bao gồm tập lệnh con của tôi trong phần bộ nhớ mục tiêu khi tôi khai báo (void) __attribute__ ((phần (".rwdata"))) trong mã?

Môi Trường

  • Bộ xử lý Intel® Nios® II
  • BUILT IN - ARTICLE INTRO SECOND COMPONENT
    Mô tả

    Trình liên kết trong Nios® II IDE sẽ không tự động đặt một subrourou trong bộ nhớ không được chỉ định là .text.

    Để đưa chương trình con vào một phần bộ nhớ cụ thể khác với .text (trong ví dụ này, .rwdata), hãy làm như sau:

    1. Xác định một phần tùy chỉnh cho chi tiết cụ thể này, ví dụ: void my_subroutine(void) __attribute__ ((section (".usersection")));
    2. Mở tệp generated.x nằm trong thư mục _syslib/Gỡ lỗi/system_description của bạn và tìm kiếm thông __ram_rwdata_end
    3. Thêm các dòng sau vào tệp generated.x:


    .usersection: AT ( LOADADDR (.rwdata) SIZEOF (.rwdata) )

    {
    CUNG CẤP (_alt_partition_usersection_start = ABSOLUTE(.));
    *(.usersection .usersection.*)
    . = ALIGN(4);
    CUNG CẤP (_alt_partition_usersection_end = TUYỆT ĐỐI(.));

    } >onchip_ram

    CUNG CẤP (__flash_alt_partition_usersection_start = LOADADDR(.usersection));

    1. Sửa alt_load.c để thực hiện thao tác sao chép phần tùy chỉnh. Xem bên dưới để tham khảo:

    khoảng trống extern __flash_alt_partition_usersection_start;
    khoảng trống extern _alt_partition_usersection_end;
    khoảng trống extern _alt_partition_usersection_start;

    /*

    * Sao chép phần .usersection.

    */
          
    alt_load_section (&__flash_alt_partition_usersection_start,
    &_alt_partition_usersection_start,
    &_alt_partition_usersection_end);

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

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

    Thiết bị có thể lập trình Intel®

    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.