打印

一个很简单的问题

[复制链接]
2198|16
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zhl100|  楼主 | 2011-12-29 11:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
一个很简单的问题。
单片机每次烧写到flash中的程序,每句c代码都烧写到flash的哪个相应地址里了呢

我想通过上位机,通信修改flash中的值,掉电后单片机中flash的值为上位机发来的数值。

现在就有个问题了,我原来的数值存在哪个地址里了呢?
我擦除flash哪个区域,再把上位机修改的数据存进去呢

如果擦错了区域岂不是主程序乱了?
如果写错了区域岂不是不能识别了?

是把要修改的值写到一个指定flash地址,再通信的时候将其擦除,再往那个地址写入上位机发来的数值不

有点晕

相关帖子

沙发
yanwen217| | 2011-12-29 13:32 | 只看该作者
一句C语言编译后是可能对应N条汇编语言的,汇编语言在编译成对应的机器码,或者说只有汇编语言才与ROM的地址一一对应,而机器码包含两部分信息,指令信息和操作数信息,具体怎么个对应关系俺就不知道了,得等高人来解答,不过做这样的修改不是一般的麻烦,如果只是修改储存在ROM中的数据,那就简单了,直接打开编译生成的二级制烧写文档就可以修改了

使用特权

评论回复
板凳
liuzhuo1978| | 2011-12-29 13:52 | 只看该作者
2楼....

使用特权

评论回复
地板
wangjun403| | 2011-12-29 15:02 | 只看该作者
LZ有点强悍

使用特权

评论回复
5
Dyn11| | 2011-12-29 15:18 | 只看该作者
不管什么语言,烧进FLASH的一定是二进制

另外,楼主好像没弄请编译型与解释型

使用特权

评论回复
6
gongxd126com| | 2011-12-29 16:27 | 只看该作者
用 c语言 在code区 指定变量地址是可以的 量产的时候一般是这样搞的 没什么问题

使用特权

评论回复
7
xmar| | 2011-12-29 17:09 | 只看该作者
就多数单片机而论。如果不知道源代码想正确修改flash是困难的。如果flash又是加了密。如果无法解密几乎不可能有效修改flash。
相反如果有源代码。或者flash能够正确反汇编。改flash就可能。也就是说改flash要在源代码进行,然后编译、然后下载到flash中。

使用特权

评论回复
8
mrxum| | 2011-12-30 11:15 | 只看该作者
lz是掉电存参数吧,参数可以单独改,但是程序是改不了的,想改c语言只有在编译器里改了,你要是村参数你可以把要修改的参数写在不和程序空间重合的flash里,每次改完后单独修改那个固定地址的flash段就可以了

使用特权

评论回复
9
zhl100|  楼主 | 2011-12-30 15:12 | 只看该作者
1 、看了看,好像程序存储区和数据存储区是分开的,在flash中的地址是可以看到的,如果这个地址数据地址是空的,我就可以用来做这个了吧?
地址改变就用生成的二进制码找到相应的数据可以直接改,那个相当于针床烧程序数据加一另地址加一。那个与我想要的没关系。
通过通信来改感觉是怎么都会动主程序,改了主程序就不行了不知道1中的想法行不行,试试再说吧

使用特权

评论回复
10
t.jm| | 2011-12-30 16:17 | 只看该作者
LZ应该换个思维,上位机没必要指定数据存储的绝对地址,你指定相对地址或别名就好了,具体存储的地址由
MCU来决定。

使用特权

评论回复
11
zhl100|  楼主 | 2011-12-30 19:18 | 只看该作者
十楼办法可行,由cpu操作,但是掉电以后能保存否

使用特权

评论回复
12
chunyang| | 2011-12-30 22:39 | 只看该作者
烧录的是机器码,由编译程序生成。

使用特权

评论回复
13
zhl100|  楼主 | 2011-12-31 09:00 | 只看该作者
12# chunyang

所以说我的想法不对,机器码想找到要在烧写钱找到,修改机器码中的数据可以修改程序中的数据变量,不能通过单片机运行时候改的,对吧

使用特权

评论回复
14
chunyang| | 2011-12-31 13:42 | 只看该作者
修改机器码可以修改程序中的任何部份,不仅仅是数据。程序代码固化在只读存储器中,一般运行时不会对其修改,但支持IAP的单片机则可以实现,在线程序升级就是通过IAP实现的。

使用特权

评论回复
15
ILIKESTM32MCU| | 2012-1-1 15:23 | 只看该作者
首先你这种思路不可取,你要知道那个干什么么,给一个具体的ID号就可以了

使用特权

评论回复
16
zhl100|  楼主 | 2012-1-4 15:41 | 只看该作者
还是通过下载前该机器码来实现吧

使用特权

评论回复
17
cjseng| | 2012-1-7 22:51 | 只看该作者
搞个带EEPROM的单片机存放数据不就行了?

使用特权

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

本版积分规则

个人签名:三分天注定   七分靠打拼     爱拼才会赢

102

主题

787

帖子

2

粉丝