这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » C语言中如何利用HEX文件更改程序中的变量初始值

共14条 1/2 1 2 跳转至

C语言中如何利用HEX文件更改程序中的变量初始值

助工
2013-10-25 17:23:53     打赏
如题所述,比如烧51系列的单片机,若不能,那只烧入芯片的HEX文件,如何得知变量的初始值呢?谢谢!



关键词: 51     单片机     C语言    

院士
2013-10-25 23:27:52     打赏
2楼

将变量烧写hex的特定位置,然后使用将程序里的变量的值取出此位置的数值,赋之。

这样,程序的变量就使用了hex文件了


高工
2013-10-26 01:07:35     打赏
3楼
楼上正解

助工
2013-10-29 14:32:23     打赏
4楼
沒有源碼,想要更改從C編譯連結後的hex檔案中的變數初始值,是可行的。但是首先您必須了解C程式的概廓內容與HEX的編碼原則,而後找到參數相關的位置,修改即可。但這一些可能對您來說太難了(包含我自己),因為沒有程式員適當的多年內功修為,是很難解碼與找到參數初始值的位置的。若有源碼,從源碼修改是較簡單容易的。

菜鸟
2013-10-31 16:16:08     打赏
5楼
难得楼上“化外一野夫”给楼主的评论,看起来您是位台湾技术牛人啊

菜鸟
2013-11-01 14:46:20     打赏
6楼
從源碼修改

菜鸟
2013-11-05 17:38:38     打赏
7楼
问题问得不明确;HEX文件是指单片机的十六进制文件,还是其它?

菜鸟
2013-11-06 17:51:26     打赏
8楼
变量必须初始化(赋值),否则没有确定的初值。可以将初值(常数)按“变量”的形式分配在code空间,并且用“_at_”关键词定位,用这个定了位的初值对变量初始化。这样做有点绕,但后期在烧写的时候就能在你期望的位置上找到初值,并且可以改掉。甚至可以用这个方法标定仪器,如果你熟悉浮点数的格式的话。

助工
2013-11-07 17:22:51     打赏
9楼
5楼说的是,烧制前在HEX文件中的某已知位置改数据。 如果不是用的C51,而是ASM,这位置也是事先明确的。

助工
2013-11-11 15:10:37     打赏
10楼
在HEX文件中改变量的值,个人觉得不可能,程序那么多变量,你怎么定位要修改的变量的位置呢?

共14条 1/2 1 2 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]