OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 10298|回复: 6

在MDK中如何将一函数固定存放于一个地址?

[复制链接]

8

主题

61

帖子

0

精华

初级会员

Rank: 2

积分
134
金钱
134
注册时间
2013-8-5
在线时间
4 小时
发表于 2014-4-14 16:21:17 | 显示全部楼层 |阅读模式
我现在想实现将函数固定存放于一个地址,然后只需要运行一次就擦除。
比如:
void main(void)
{
   Init();
   Write();//固定存放在地址0x080f0000处
   Erase();//擦除Write函数
   while(1)
{
   Run();
}
}
现在 Write();作用于根据ID不用在FLASH内部写一串对应序列号。以后仅仅用于读取验证。

有两个疑问:
1、在MDK下如何实现?
2、擦除了 Write();函数后,程序每次重新运行完Init();后是自动跳转到 Erase();函数吗?还是我需要做修复?

对编译原理不懂,大家帮帮忙...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
发表于 2014-4-14 17:03:18 | 显示全部楼层
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165475
金钱
165475
注册时间
2010-12-1
在线时间
2115 小时
发表于 2014-4-14 19:06:48 | 显示全部楼层
不确定你这种方式是否可行。
感觉没这么简单。。。
你这个函数的代码,从哪里来?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

8

主题

61

帖子

0

精华

初级会员

Rank: 2

积分
134
金钱
134
注册时间
2013-8-5
在线时间
4 小时
 楼主| 发表于 2014-4-14 20:10:28 | 显示全部楼层
回复【3楼】正点原子:
---------------------------------
那我就简单点吧,下载两次程序就是了。一次生成序列号,一次验证就是了。
代码我随便写的几句啊,为了清楚表达我的意思而已啊
回复 支持 反对

使用道具 举报

20

主题

122

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
222
金钱
222
注册时间
2013-9-21
在线时间
0 小时
发表于 2014-4-15 09:01:09 | 显示全部楼层
回复【楼主位】KC_CEC:
---------------------------------
可不可以这么做:设置一个参数,存放到EEPROM或flash里,记录是否以及已经擦除write()函数。然后在init()之后读取设置的参数,判断是否已擦除,如果没有(第一次运行),则顺序执行write();如果已擦除,则跳过擦除部分,直接跳转到while开始执行。
回复 支持 反对

使用道具 举报

8

主题

61

帖子

0

精华

初级会员

Rank: 2

积分
134
金钱
134
注册时间
2013-8-5
在线时间
4 小时
 楼主| 发表于 2014-4-15 09:55:49 | 显示全部楼层
回复【5楼】jikaishihuaidan:
---------------------------------
理论上是可以的,就是不知道如何定位函数
回复 支持 反对

使用道具 举报

20

主题

122

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
222
金钱
222
注册时间
2013-9-21
在线时间
0 小时
发表于 2014-4-15 15:45:14 | 显示全部楼层
回复【6楼】KC_CEC:
---------------------------------
用goto试试
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-11 20:42

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表