2018中文字幕在线_中文字幕人妻伦伦精品_欧美人与禽zoz0性伦交视频_午夜精品福利视频_欧美丝袜乱插视频_欧美特黄免费一级大片_日本浓厚舌吻中文字幕_亚洲av网站大全_不卡不卡不卡在线播放_日韩精品无码小辣椒一区二区

產(chǎn)品概述

  • 如何把變量或函數(shù)放到指定位置

    如何實(shí)現(xiàn)變量的絕對(duì)定位


    CDK編譯環(huán)境使用了GNU C Complier,簡(jiǎn)稱GCC。GCC使用ld腳本對(duì)代碼對(duì)象進(jìn)行鏈接,將多個(gè)輸入文件整合成一個(gè)輸出文件。

    在一些特殊的場(chǎng)合,我們需要對(duì)代碼中的一些內(nèi)容實(shí)現(xiàn)精確的定位。

    這里我們分兩個(gè)方面來(lái)介紹,分別是變量的絕對(duì)定位和函數(shù)(代碼段)的絕對(duì)定位。

  • 變量的絕對(duì)定位

    假設(shè)要實(shí)現(xiàn)將wData[] 放到程序存儲(chǔ)區(qū) 0x9000的位置。需要做以下兩個(gè)操作

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

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

    < /FONT >

    < P >   2.  其次,要對(duì)ld文件進(jìn)行修改。

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

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

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

  • 函數(shù)加載到RAM區(qū)

    有時(shí)候,會(huì)希望有一些代碼可以快速取址并運(yùn)行。其中一個(gè)實(shí)現(xiàn)的方法是把函數(shù)定位到RAM區(qū)。

    假設(shè)要實(shí)現(xiàn)將function() 放到RAM。需要做以下兩個(gè)操作:

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

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

    2.  其次,要對(duì)ld文件進(jìn)行修改。

  • 庫(kù)程序編譯報(bào)錯(cuò)

    1、如果拿到的庫(kù)程序第一次編譯報(bào)錯(cuò),錯(cuò)誤提示如下:



    這是因?yàn)閹?kù)發(fā)布時(shí)帶了一些編譯選項(xiàng),點(diǎn)擊CDK“清除”快捷按鈕清除一下工程,再重新編譯即可。