日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當前位置:首頁 > 單片機 > 單片機
[導讀]如何實現(xiàn)對PIC芯片ROM中的程序地址的精確定位。一個懸而未決的問題,歷時4個月終于獲解。大塊人心。事情要從4個月前的一場討論說起。詳細情況見:天梯 之 從零開始玩PIC——11.關(guān)于FLASH操作的討論問題的實

如何實現(xiàn)對PIC芯片ROM中的程序地址的精確定位。

一個懸而未決的問題,歷時4個月終于獲解。大塊人心。

事情要從4個月前的一場討論說起。詳細情況見:天梯 之 從零開始玩PIC——11.關(guān)于FLASH操作的討論

問題的實質(zhì),就是如何實現(xiàn)對ROM中的程序地址的精確定位。因為只有精確定位了,才能通過對FLASH的寫操作來修改表格中的數(shù)據(jù)。(甚至可以修改程序!)。

當時,yewuyi 和martin 參與了討論。并且,martin給出了一個不太理想的解決方案:在編譯器命令行選項中進行設(shè)置,讓編譯器絕對避開某些區(qū)域。然后把這塊區(qū)域開辟為表格。但是這個方案的缺點是,在燒芯片時,無法對表格內(nèi)容初始化,必須通過串口下載,由單片機程序去修改。

這個問題被懸置了很久,今天,終于在網(wǎng)上看到一篇貼(參見:PICC中如何用指針訪問const 數(shù)組? ),匠人由此受到啟發(fā)。找到了問題的解決方案,總結(jié)如下:

1、在定義const數(shù)組的同時,定義const指針:

const tU08 LED_TAB[]=

{

//。。。。內(nèi)容略。。。。

};

const tU08 *romPtr; //定義指向ROM 的指針

2、程序中可以對上面的指針變量賦值和實現(xiàn)取數(shù)操作:

tU08 i ;

romPtr = LED_TAB;

i=*romPtr++; //取指針指向的一個數(shù),然后指針加1

3、同樣的,我們也可以把romPtr 指針值傳遞給其他變量:

tU16 m;

romPtr = LED_TAB;

m=romPtr;

4、更神奇的是,我們可以通過這種方式,找到任意一個函數(shù)的起始PC地址:

romPtr = temp_cnt; //說明:“temp_cnt”為一個函數(shù)。

5、找到了地址,再要修改該地址所在的FLASH,自然應(yīng)該沒有問題了吧。呵呵。

擴展閱讀:關(guān)于PIC24的DISI禁止中斷指令

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關(guān)閉