欧美日本一区二区三区生,中文字幕黑人在线免费,久久996RE热这里只有精品无,91黄色视频在线下载,国产1卡2卡三卡4卡网站老狼,国产高清自拍91,日韩欧美字幕网一区二区三区四区,国产午夜三级福利左线

產品概述

  • 如何把變量或函數放到指定位置

    如何實現變量的絕對定位


     CDK編譯環境使用了GNU C Complier,簡稱GCC。GCC使用ld腳本對代碼對象進行鏈接,將多個輸入文件整合成一個輸出文件。

    在一些特殊的場合,我們需要對代碼中的一些內容實現精確的定位。

    這里我們分兩個方面來介紹,分別是變量的絕對定位和函數(代碼段)的絕對定位。

  • 變量的絕對定位

    假設要實現將wData[] 放到程序存儲區 0x9000的位置。需要做以下兩個操作

     1. 首先在代碼文件中,將變量歸入某個section,這個例子里是FlashData段。

    __attribute__((section(".FlashData"))) const uint32_t wData[] = {0x1, 0x2}; //在這種絕對定位的情況下,關鍵字 const 不是必須的。

    < /FONT >

    < P >   2.  其次,要對ld文件進行修改。

    增加以下內容,將FlashData段起始地址定位在0x9000。

    .FlashData 0x9000:
    {
    . = ALIGN(0x4) ;
    *(.FlashData)
    *(.FlashData.*)
    } > ROM

    再重新編譯,就可以在map文件上看到:

  • 函數加載到RAM區

    有時候,會希望有一些代碼可以快速取址并運行。其中一個實現的方法是把函數定位到RAM區。

    假設要實現將function() 放到RAM。需要做以下兩個操作:

    1. 首先在代碼文件中,將函數歸入某個section,這個例子里是codeinram段。

    __attribute__((section(".codeinram"))) void function1(void);

    2.  其次,要對ld文件進行修改。

  • 庫程序編譯報錯

    1、如果拿到的庫程序第一次編譯報錯,錯誤提示如下:



     這是因為庫發布時帶了一些編譯選項,點擊CDK“清除”快捷按鈕清除一下工程,再重新編譯即可。