<object id="k0taz"><form id="k0taz"></form></object>
<pre id="k0taz"></pre>
      1. <table id="k0taz"></table>
        <bdo id="k0taz"><center id="k0taz"></center></bdo>
        <table id="k0taz"><option id="k0taz"></option></table><track id="k0taz"><ruby id="k0taz"></ruby></track>
        專注電子技術學習與研究
        當前位置:單片機教程網 >> STM32 >> 瀏覽文章

        COSMIC編譯器讓代碼在RAM中運行的方法

        作者:佚名   來源:本站原創   點擊數:  更新時間:2014年09月14日   【字體:

        對于STM8單片機Flash的塊編程,代碼必須在Ram內存中運行。因此,存儲在Flash中的代碼必須拷貝到Ram中編譯、鏈接、運行。Cosmic編譯器有兩種實現方法:在STVD工程中創建段、在鏈接文件中創建內存段

         

        1、STVD工程中創建段

        1)、在工程中設置段名

        project->settings->linker->category->input’,如下圖所示:

         

        設置段名‘.FLASH_CODE’,注意同時設置options為‘-ic’,ic的意義為moveable code。

        2)、編寫存放在段FLASH_CODE中的代碼,如下所示

        #pragma section(FLASH_CODE)//把代碼放到FLASH_CODE

        void writeFlash(void)

        {

        ……

        }

         

        void eraseFlash(void)

        {

        ……

        }

        #pragma section()//代碼放置到默認段

        2、在鏈接文件中創建內存段

        1)、在鏈接文件(*.lkf)中定義特殊的內存段,并以‘-ic’標記,如下所示:

        2)、編寫存放在段FLASH_CODE中的代碼,如下所示

        #pragma section(FLASH_CODE)//把代碼放到FLASH_CODE

        void writeFlash(void)

        {

        ……

        }

         

        void eraseFlash(void)

        {

        ……

        }

        #pragma section()//代碼放置到默認段

        3、可以在生成的map文件中檢查以上兩種方式的設置是否正確,如下map文件:

        標記‘from’的為存放代碼部分,標記‘initialized’的為執行代碼部分。

        4、調用函數

        在調用這些函數之前,必須把這些代碼從flash拷貝到Ram,cosmic編譯器使用內置的函數‘int _fctcpy(char name)’實現此功能。其中name為定義的段名的首字母,如本例中的‘F’,

        void main(void)

        {

        ……

        _fctcpy(‘F’);//Flash部分的代碼拷貝到Ram

        ……

        }

        關閉窗口

        相關文章

        欧美国产伦久久久久_亚洲爽爽一区二区三区_一色屋精品视频在线观看免费_久久伊人成色777综合网
        <object id="k0taz"><form id="k0taz"></form></object>
        <pre id="k0taz"></pre>
          1. <table id="k0taz"></table>
            <bdo id="k0taz"><center id="k0taz"></center></bdo>
            <table id="k0taz"><option id="k0taz"></option></table><track id="k0taz"><ruby id="k0taz"></ruby></track>