新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > FLASH調(diào)試_HCS12學(xué)習(xí)筆記(6)

FLASH調(diào)試_HCS12學(xué)習(xí)筆記(6)

作者: 時(shí)間:2016-11-24 來源:網(wǎng)絡(luò) 收藏
停了一階段沒有調(diào)試FLASH的程序,調(diào)了一階段的CAN,無果,CAN的程序也很麻煩,不過今天早上終于把FLASH的程序調(diào)通了,其實(shí),程序本身應(yīng)該是沒有什么問題的,但是因?yàn)槌绦驔]有分段存儲(chǔ),所以直接導(dǎo)致FLASH的分頁寄存器沒有能夠讀出來,今早,我把我的所有.C文件全部標(biāo)明代碼存儲(chǔ)到0x4000這個(gè)位置上,F(xiàn)LASH的程序直接調(diào)試成功。這里貼我的部分改動(dòng),以作存檔。

本文引用地址:http://m.butianyuan.cn/article/201611/321075.htm

//[Flash.c]Flash擦寫-------------------------------------------------------*
//本文件包含: *
// (1)Flash_Erase_Sector:擦除一個(gè)指定的扇區(qū) *
// (2)Flash_Write_Nword:向一個(gè)指定的區(qū)域?qū)懭肴舾蓚€(gè)字 *
//-------------------------------------------------------------------------*

//頭文件
#include "Flash.h" //Flash擦寫頭文件

#pragma CODE_SEG CODE_flash
#pragma CONST_SEG CONST_flash

void Erase_Write_Pretreat(INT8U page); //擦寫子函數(shù)內(nèi)部調(diào)用的函數(shù)聲明
//頁所對(duì)應(yīng)的塊對(duì)照表
//兩個(gè)flash塊,每塊4頁 flash0 flash1
const INT8U pagetable[4][4] = {{0x3C,0x3D,0x3E,0x3F},{0x38,0x39,0x3A,0x3B},{0x34,0x35,0x36,0x37},{0x30,0x31,0x32,0x33}};

上面紅色的代碼是我添加出來的,功能是將本段代碼放在CODE_flash對(duì)應(yīng)的存儲(chǔ)空間里。

PLACEMENT
_PRESTART,
STARTUP,
ROM_VAR,
STRINGS,
VIRTUAL_TABLE_SEGMENT,
//.ostext,
NON_BANKED,
COPY

INTO ROM_C000;

DEFAULT_ROM INTO PAGE_38, PAGE_39;

CODE_main,
CODE_flash,
CODE_MCUInit,
CODE_SCI
INTO ROM_4000;

//.stackstart,
SSTACK,
//.stackend,
DEFAULT_RAM INTO RAM;

這一段是P&E_Multilink_CyclonePro_linker.prm里摘出來了,它默認(rèn)定義了所有代碼、常量的存放區(qū)段,紅色部分是我添加出來的,把我的主要文件放入了ROM_4000這個(gè)地址里,也就是對(duì)應(yīng)了0x4000_0x7fff這個(gè)地址里。

于是程序順利調(diào)通,這里小小得慶祝一下~




關(guān)鍵詞: FLASH調(diào)試HCS1

評(píng)論


技術(shù)專區(qū)

關(guān)閉