打印

ICD3 能否可以把某程序存储区烧写为2字节表格数据?

[复制链接]
1095|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
donghailao|  楼主 | 2014-8-4 17:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 donghailao 于 2014-8-4 18:29 编辑

我晓得,ICD3用来烧写编译得出的目标代码,到程序Flash存储器,是没有问题的。

我这里有一张表格数据,准备写入到Flash程序存储器的某个地址区域。
芯片手册里给出的标准写表程序固然很好,可是ICD3在仿真状态下写表命令似乎无效。这样表格的制作发布需要费些周折且必须二次作业,不能和用户代码一同完成写入。

我的问题是:既然ICD3 有烧写的功能,能否通过特殊手段,或者特殊的伪指令,
让  ICD3      把2字节长度的表格数据群组,直接写入程序存储区(强行编辑改变目标HEX文件能行吗?)。

1字节的表格数据就不讨论了,用下述第2条办法可以很方便的搞妥当。

期盼各位有经验的兄弟来说说,也不知道我说明白问题没有。
‘====================================================================
以下文字和本题目无关,是有关表格的补充知识,表格三种:
1、标准读、写表格命令形成的表格  它使用表格指令 TBLPTR 和表格寄存器 TABLAT  写表或者读表。
      优点: 一行可以有 2个字节数据   节约空间   表格可以长度很长,适合大型表格。用户可以在线的生成、调整表格
      缺点:制表一般需要在线,很不方便, 不能和目标代码一同发布。

2、程序计数器加入偏移量的数据表格,  它利用ADDWF PCL  +  多个 RETLW nnh  完成
      优点:本身就是普通的程序指令,制表方便。查表也方便,速度快
      缺点:单个表格,16系列表格最长256字节   18系列表格最长128字节
3、内存临时表格   使用内存区域生成临时的表格
      优点:可以根据需要在线生成  动态数据表格
      缺点:表格大小受内存大小制约,临时占用内存多
                           

沙发
yewuyi| | 2014-8-5 16:12 | 只看该作者
搞不清楚你想干啥?

想在FLASH空间保存表格的话,这个表格数据肯定是常量,用const定义就是了,例如const int R[20]={0x00};

这根本不关ICD3啥事情,如果手工指定FLASH地址,然后修改HEX文件烧写的话,那你还必须搞清楚在代码中如何对它寻址(地址必须在代码中提前指定),写这种代码会让人抓狂的,免了吧

使用特权

评论回复
板凳
ljm041128| | 2014-8-21 11:50 | 只看该作者
想加密或者做病毒!?

使用特权

评论回复
地板
兰天白云| | 2014-8-23 17:19 | 只看该作者
应该可以直接在电脑的MPLAB集成界面下直接写flash数据,然后烧写

使用特权

评论回复
5
Rain_King| | 2014-8-23 17:49 | 只看该作者
应该是楼上这样.........

使用特权

评论回复
6
donghailao|  楼主 | 2014-8-23 18:22 | 只看该作者
兰天白云 发表于 2014-8-23 17:19
应该可以直接在电脑的MPLAB集成界面下直接写flash数据,然后烧写

总算把ICD3给调整的不报错了,这个表格问题还没有彻底搞定。我再继续努力。

您能详细说说,更好,是在汇编的环境。可能我没有把问题说清楚,请见下楼我的叙述。

使用特权

评论回复
7
donghailao|  楼主 | 2014-8-23 19:31 | 只看该作者
本帖最后由 donghailao 于 2014-8-23 19:34 编辑
yewuyi 发表于 2014-8-5 16:12
搞不清楚你想干啥?

想在FLASH空间保存表格的话,这个表格数据肯定是常量,用const定义就是了,例如const  ...

非常抱歉,我没有把疑惑说清楚,请谅解我的表达能力。现在补充

我用的是汇编环境,这里说的表格不是伪指令定义常数表格问题,是FALSH表擦除、表写指令

我这样问吧:
在汇编环境下,用ICD3进行仿真调试的时候,对FLASH,的  表格擦除、表格写操作等指令,
例如:TBLRD*
TBLRD*+
TBLRD*-
TBLRD+*
TBLWT*
TBLWT*+
TBLWT*-
TBLWT+*

这些指令,根据ICD3的官方规定,是否也是完全能够得到 ICD3 仿真调试的忠实执行?

我个人的初步实验结果是:
用MPLAB SIM   是没有任何问题的,
用icd3仿真调试表擦、表写,虽然程序运行,但实际上根本没有写入FLASH,写入失败。

我想知道是我的代码有问题或者器材有问题,还是说用ICD3仿真调试FLASH 表写、表擦除指令,本来就是不可能成功的,是梦想和奢望。

这是初步的疑问,如果能够搞清楚,后面还有追问。:L

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

30

主题

133

帖子

2

粉丝