OpenEdv-开源电子网

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

关于分散加载文件中的加载域的地址如何确定flash 的地址

[复制链接]

6

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
141
金钱
141
注册时间
2017-1-6
在线时间
57 小时
发表于 2019-6-12 16:39:32 | 显示全部楼层 |阅读模式
1金钱
各位大神好,请教个问题,如下所示,在stm32f103zet6芯片,mdk开发环境下
有一段c代码
#pragma arm section rodata = "mycrr"
const  u8  aqw =7;
const  u8  bcx=2;
const  u8  abc=2;
#pragma arm section code

可是现在我没法指定mycrr这个section在flash中的地址,我想把flash的加载域的地址加载到RAM中,请教下这个section在flash 的地址怎么确定啊,谢谢啊

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2019-6-13 02:39:07 | 显示全部楼层
回复

使用道具 举报

6

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
141
金钱
141
注册时间
2017-1-6
在线时间
57 小时
 楼主| 发表于 2019-6-13 06:49:16 来自手机 | 显示全部楼层
正点原子 发表于 2019-6-13 02:39
用分散加载。。

原子哥,可是我想知道这个section在具体flash的地址,分散加载可以确定加载在ram的地址,确定flash地址后,我就可以实现在线标定了,也就是参数满意后再写进具体flash的地址
回复

使用道具 举报

6

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
141
金钱
141
注册时间
2017-1-6
在线时间
57 小时
 楼主| 发表于 2019-6-13 20:13:21 | 显示全部楼层

原子哥,我就想知道这个section在flash的地址,谢谢
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2019-6-14 01:04:05 | 显示全部楼层
kds955796 发表于 2019-6-13 20:13
原子哥,我就想知道这个section在flash的地址,谢谢

你得看分散加载文件才能确定哦
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

6

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
141
金钱
141
注册时间
2017-1-6
在线时间
57 小时
 楼主| 发表于 2019-6-14 10:07:30 来自手机 | 显示全部楼层
正点原子 发表于 2019-6-14 01:04
你得看分散加载文件才能确定哦

原子哥,我就说想知道在flash的地址之后,写分散加载文件,想知道section在flash的位置以后,作为分散加载文件的加载域,谢谢
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2019-6-15 03:28:21 | 显示全部楼层
kds955796 发表于 2019-6-14 10:07
原子哥,我就说想知道在flash的地址之后,写分散加载文件,想知道section在flash的位置以后,作为分散加 ...

有了分散加载,你可以指定任何代码,在任何位置。学习分散加载的实现吧。
你这里我没看到分散加载。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

6

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
141
金钱
141
注册时间
2017-1-6
在线时间
57 小时
 楼主| 发表于 2019-6-15 09:51:24 | 显示全部楼层
正点原子 发表于 2019-6-15 03:28
有了分散加载,你可以指定任何代码,在任何位置。学习分散加载的实现吧。
你这里我没看到分散加载。

首先谢谢原子哥的耐心解答,我的分散加载问下如下所示
; *************************************************************
; *** Scatter-Loading Description File generated by uVision ***
; *************************************************************
LR_IROM1 0x08000000 0x0080000  {   
  ER_IROM1 0x08000000 0x0008000  {  
   *.o (RESET, +First)
   *(InRoot$$Sections)
   .ANY (+RO-CODE)
ili93xx.o (+RO-DATA)
_printf_hex_int.o (+RO-DATA)
  }
RW_IRAM1 0x20000000 0x0009000  {
   .ANY (+RW +ZI)
  }
}
LR_IROM2 0x08009990 0x00010  {   
RW_IRAM2 0x20009990 0x00010  {  
   led.o(mycrr)
  }
}

请问下我这个mycrr的secion放在flash的哪个地址,是不是0x08009990这个地址,如果是的话,我就想请问是不是整个flash就这个地址放着这块section。其余flash块是不是不放这个section。如果是这样的话,我还是在map文件里看不到这块section在flash的地址。

再次感谢原子哥耐心解答,谢谢

实验17 ADC实验.rar

873.05 KB, 下载次数: 4

回复

使用道具 举报

0

主题

4

帖子

0

精华

新手入门

积分
18
金钱
18
注册时间
2019-10-23
在线时间
10 小时
发表于 2019-10-23 20:23:18 | 显示全部楼层
kds955796 发表于 2019-6-15 09:51
首先谢谢原子哥的耐心解答,我的分散加载问下如下所示
; ******************************************** ...

你好,现在也在做在线标定这块。请问,你的问题解决了么?
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2019-10-24 02:01:01 | 显示全部楼层
kds955796 发表于 2019-6-15 09:51
首先谢谢原子哥的耐心解答,我的分散加载问下如下所示
; ******************************************** ...

你这个还是没有指定
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

0

主题

4

帖子

0

精华

新手入门

积分
18
金钱
18
注册时间
2019-10-23
在线时间
10 小时
发表于 2019-10-24 11:05:44 | 显示全部楼层
本帖最后由 caoqh 于 2019-10-24 11:08 编辑
正点原子 发表于 2019-10-24 02:01
你这个还是没有指定


你好原子哥,借该贴也问下。
    在汽车电子开发过程中,通常会用到在线标定协议,如ccp/xcp等,需要在芯片底层做一下flash映射到ram
    现在用的STM32F103C8T6。我想实现一个常量aaa,默认放在flash地址中,但在程序运行时映射到ram,这样就可以通过实时修改ram中的地址来实现实时修改,当该aaa标定完成,就可以将数据再固化到相应flash地址,以后上电还是用flash中的值。
现在通过修改.sct文件,功能似乎已经实现,但是在.map中只能找到aaa在ram中的地址。
问题: aaa的加载地址需要根据对应的flash片区,自己计算么,能否直接显示在.map中?因为用标定上位机去标定时,需要用到aaa在flash中的地址。
例程如下:

分散加载文件修改:

SCT

SCT
变量定义:

变量定义

变量定义
代码:

代码

代码
.MAP文件:

.map

.map
调试,Memory中对应的地址:

MEM1

MEM1
修改aaa[0]的值为:0x01,可以看到ram中值已更改,ccc也跟着起作用:

MEM2

MEM2



回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2019-10-25 02:35:30 | 显示全部楼层
caoqh 发表于 2019-10-24 11:05
你好原子哥,借该贴也问下。    在汽车电子开发过程中,通常会用到在线标定协议,如ccp/xcp等,需要在 ...

你这个问题,你修改后的AAA值,并不会自动保存到FLASH
也就是你下次上点,这个aaa就不见了的。
还是你初始化保存在flash里面的aaa值。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

0

主题

4

帖子

0

精华

新手入门

积分
18
金钱
18
注册时间
2019-10-23
在线时间
10 小时
发表于 2019-10-25 07:43:20 | 显示全部楼层
正点原子 发表于 2019-10-25 02:35
你这个问题,你修改后的AAA值,并不会自动保存到FLASH
也就是你下次上点,这个aaa就不见了的。
还是你 ...

是的,这个没问题的!修改aaa后,上位机会把存储的离线flash文件中对应的aaa值也对应改掉,再把flash文件刷写进芯片中就行了。
想问下,.map文件中能否把aaa在flash中的加载地址也显示出来,这样就不用手动去对应计算地址了(假如有很多标定量,每个都要根据ram中的地址,根据执行域和加载域间的地址偏移去计算)
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2019-10-28 02:48:27 | 显示全部楼层
caoqh 发表于 2019-10-25 07:43
是的,这个没问题的!修改aaa后,上位机会把存储的离线flash文件中对应的aaa值也对应改掉,再把flash文件 ...

aaa如果是常量,存放在flash,通过&aaa就可以读取了
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-1 02:14

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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