久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

專注電子技術學習與研究
當前位置:單片機教程網 >> 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

……

}

關閉窗口

相關文章

主站蜘蛛池模板: 国产成人精品午夜 | 午夜精品一区二区三区在线 | 国产视频一区二区 | 欧美日韩综合视频 | 视频一区二区三区四区五区 | 日本一区二区三区视频在线 | 久久人人爽人人爽 | 91精品国产综合久久小仙女图片 | 日韩色视频 | 日韩中文字幕av | 色姑娘综合网 | 黄色成人av | 狠狠干在线 | 亚洲精品国产精品国自产在线 | 亚洲高清在线观看 | 国产视频导航 | 99免费看 | 久久国产精品无码网站 | 五月婷婷丁香婷婷 | 成人精品视频在线 | 日韩美女一区二区三区在线观看 | 色综合久久伊人 | 伊人狠狠 | 欧美日韩精品在线一区 | 日韩精品一区二区三区中文字幕 | 99pao成人国产永久免费视频 | 在线亚洲人成电影网站色www | 精品一区二区三区视频在线观看 | 亚洲精品日韩综合观看成人91 | 精品96久久久久久中文字幕无 | 九九av | 欧美精品video | 欧美日韩视频在线第一区 | 国产在线一区二区三区 | 亚洲午夜精品一区二区三区 | 国产日韩在线观看一区 | 久草成人网 | 成人三级在线播放 | 欧美视频在线播放 | 日韩成人国产 | 亚洲国产精品久久久久秋霞不卡 |