你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

ST7 C语言程序定位:在STVD7中如何配置

[复制链接]
endlesswind 发布时间:2008-9-3 14:50
STVD7的开发环境中提供了非常方便的手段,可以轻松的实现C语言程序的存储定位。以下说明以我另一个帖子的例子作为前提:
! _5 @7 I% l6 h- W$ P& q2 h. _ST7 16位通用定时器中的输出比较功能(Output Compare)详解: f0 Q5 C: r2 c2 Z# P& M; n* E
  假定我有一个函数delay()需要定位到0x8000开始的区域;有三件事要做:& d: V3 Z: v6 t1 ]; V* K
1)原有的代码段是默认定位在从0x8000开始的区域,把默认代码段重定位到从0x9000开始的区域;
4 }* r8 N) k: n% c6 ]; }2)在函数delay()前用#pragma定义一个新的代码段,命名为.delay_code,程序片断如下;9 B- I& d* N; l' T/ m5 A+ ]) b# k7 ?
3)将新的代码段.delay_code定位在从0x8000开始到0x8FFF结束的区域。 - r. S- K+ P/ D) z4 n* ]/ E4 j. W
8 _& p* L4 B5 c, I3 \
程序片断: - F) ]) g1 o" F  n9 ?
--------------------------------------------------------------------------------
8 |" P- _# j7 i0 w3 Z2 K* N4 A/ b#pragma section (delay_code) // 定义新代码段 : m4 B- F1 r& ?/ k1 Y% H, N2 K
void delay(void)
' \" ?; J# P5 }, z{
2 a8 d# z$ ~' o8 s8 Bunsigned char counter;
4 \( h) t4 t1 k/ Q' ufor (counter = 0; counter < 100; counter++)
1 T1 ^4 c8 r6 h, L0 ^8 M9 P; Y8 j_asm("nop");
4 ^7 E5 J3 I0 a' l* ~/ Q3 |}
0 [0 }1 t7 E' _# @% L9 ~#pragma section () // 以下代码恢复到默认代码段 1 e/ Y( j% @' p6 n- r" q5 X
--------------------------------------------------------------------------------
, Y5 P* k) P* g- F6 _完成代码段的定位、重定位,请按Project/Settings...,按照下图配置就可完成: 5 e9 E* x+ I6 W

9 B' v9 {5 ~4 x' ?4 }9 \编译完后的.map文件显示定位成功:
: `) i) O4 I1 N! g--------
1 n1 n) K; u4 w7 M' iSegments. P( q4 n, L1 m
-------- ! _( A3 r* W* p- M9 @; K: A2 N

- P' J, ~' u, Z4 y; J5 qstart 00009000 end 000090da length 218 segment .text
赞 收藏 评论0 发布时间:2008-9-3 14:50

举报

0个回答

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版