如何实现对PIC芯片ROM中的程序地址的精确定位?

来源:本站
导读:目前正在解读《如何实现对PIC芯片ROM中的程序地址的精确定位?》的相关信息,《如何实现对PIC芯片ROM中的程序地址的精确定位?》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《如何实现对PIC芯片ROM中的程序地址的精确定位?》的详细说明。
简介:如何实现对PIC芯片ROM中的程序地址的精确定位?

如何实现对PIC芯片ROM中的程序地址的精确定位。

一个悬而未决的问题,历时4个月终于获解。大块人心。

问题的实质,就是如何实现对ROM中的程序地址的精确定位。因为只有精确定位了,才能通过对FLASH的写操作来修改表格中的数据。(甚至可以修改程序!)。

当时,yewuyi 和martin 参与了讨论。并且,martin给出了一个不太理想的解决方案:在编译器命令行选项中进行设置,让编译器绝对避开某些区域。然后把这块区域开辟为表格。但是这个方案的缺点是,在烧芯片时,无法对表格内容初始化,必须通过串口下载,由单片机程序去修改。

这个问题被悬置了很久,今天,终于在网上看到一篇贴本人由此受到启发。找到了问题的解决方案,总结如下:

1、在定义const数组的同时,定义const指针:

const tU08 LED_TAB[]=

{

//。。。。内容略。。。。

};

const tU08 *romPtr; //定义指向ROM 的指针

2、程序中可以对上面的指针变量赋值和实现取数操作:

tU08 i ;

romPtr = LED_TAB;

i=*romPtr++; //取指针指向的一个数,然后指针加1

3、同样的,我们也可以把romPtr 指针值传递给其他变量:

tU16 m;

romPtr = LED_TAB;

m=romPtr;

4、更神奇的是,我们可以通过这种方式,找到任意一个函数的起始PC地址:

romPtr = temp_cnt; //说明:“temp_cnt”为一个函数。

5、找到了地址,再要修改该地址所在的FLASH,自然应该没有问题了吧。呵呵。

提醒:《如何实现对PIC芯片ROM中的程序地址的精确定位?》最后刷新时间 2024-03-14 01:10:57,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《如何实现对PIC芯片ROM中的程序地址的精确定位?》该内容的真实性请自行鉴别。