乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      Tasking基礎(chǔ):將常量放入指定PFlash位置

       開心果NeedCar 2024-05-28 發(fā)布于上海
      工程開發(fā)中,常常會有這樣的需求:
      1. 標(biāo)定中,需要將常量放入指定位置的PFlash地址空間;
      2. 特定常量(eg:軟件版本號,VIN等),放入自定義的PFlash地址空間;
      3. 信息安全中,將指定的校驗(yàn)信息存入指定PFlash地址空間;
      ......
      如上的場景,都需要將常量存儲指定的PFlash位置。如果是基于Tasking的編譯器,如何操作呢?

      1、將常量放入指定PFlash地址空間的操作

      如果要將常量放入指定的PFlash位置,主要包括兩步:修改鏈接文件、在源文件中將目標(biāo)常量設(shè)定到目標(biāo)段。
      (一)在鏈接文件(*.lsl)中開辟指定的PFlash段(Section)
      鏈接文件主要用來告知鏈接器(Linker),應(yīng)該如何分配變量和函數(shù)的地址空間。具體操作如下所示:
      #define HSM_MYCONSTANT_ADDRESS   0x8001B000......section_layout :ARM:linear{    group ( ordered, run_addr=HSM_MYCONSTANT_ADDRESS )    {        select ".myConstant";    }}......

      在Section中定義一個(gè)Group,且指定起始的PFlash地址為0x8001B000,將目標(biāo)段(eg:.myConstant)放入該Group中。

      注意:Section_layout指定了ARM內(nèi)核的內(nèi)存空間,如果是其他的Core架構(gòu),引用的內(nèi)存空間可能不同,注意區(qū)別。

      (二)在源文件(*.c)中定義要設(shè)置的常量

      舉例:在源文件(*.c)中定義要存儲的常量MY_CONSTANT,用修飾符const修飾,并將常量放入指定的Section(本文:.myConstant),示意如下所示:

      __attribute__ ((section (".myConstant")))const char MY_CONSTANT[8] = {'M','Y','_','C','O','N','S','T'};
      注意:不要用修飾符static限定常量位置,否則,可能導(dǎo)致常量無法放入指定PFlash地址。
      (三)確認(rèn)指定位置的常量
      首先,可以通過編譯后的*.map文件確認(rèn)自定義的常量段(.myConstant)是否在預(yù)期的位置,示意如下:

      之后,可以進(jìn)一步確認(rèn):設(shè)置的常量是否在預(yù)期的PFlash位置,示意如下:

      最后,將程序下載到目標(biāo)板,通過查看Memory,確認(rèn)指定PFlash地址是否是預(yù)期存儲的內(nèi)容,示意如下:

      如何將全局變量放入指定RAM區(qū),可以參考前文《Tasking基礎(chǔ):將變量放入指定內(nèi)存的兩種方式》。

        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多