2972|8

76

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

ADS汇编转向wince时候出现问题,急问 [复制链接]

其中在好几个.s中定义:

AREA |.constdata_div_s|, COMDEF, DATA, READONLY, ALIGN=2

我记得这个是定义局部变量吧?

但是在wince编译的时候 却出现这么一个错误:
fatal error A0043: multiple symbol definition or incompatibility: .constdata_div_s


我如果 这么修改:
AREA |.constdata_div_s1|, COMDEF, DATA, READONLY, ALIGN=2
DCB....
DCB ...
然后把这个.s文件中的constdata_div_s变量换成 constdata_div_s1 还是有以上错误

或者这么修改:
  AREA |.constdata_div_s1|, COMDEF, DATA, READONLY, ALIGN=2
con1:
  DCB....
  DCB ...
还是错误

请问我该如何改呢?

最新回复

你好 你的意思如果是代码段的话 要放在 |.text| 类么? 这里是数据段 在ADS中 是这样定义的 AREA   ?.constdata_div_s ?,   COMDEF,   DATA,   READONLY,   ALIGN=2 这在wince中是通不过编译的,无论你怎么改  ?.constdata_div_s ? 都会提示你这个constdata_div_s 有多重定义 所以我把这个改成: AREA   ?.data ?,   DATA,   READONLY,   ALIGN=2 ?.data$0 ? id_0   ....... 但是结果又不一样 你遇到这个是怎么改的呢? 谢谢   详情 回复 发表于 2007-12-9 20:58
点赞 关注

回复
举报

73

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
应该是小问题吧,检查一下EXPORT关键字,要修改这里。

AREA后面的|XXX|是表示PE格式的section,并不是函数导出。
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
我想你可能是想把ADS的代码移植到WINCE上,所以必须按PE格式的定义来写。这里给你一个sample,结尾函数跳转有些问题,我懒得修改了,仅供参考。这样编译出来的.obj和其他obj直接用link就可以使用extern function来调用,当然这只是一种方式。

  TTL CopyStr
  AREA  |.text|, CODE
  EXPORT  |CopyStr|
  
|CopyStr| PROC
  
  ;stmdb     sp!, {r4 - r10, r11, lr}  ; stmfd

copysubs
  ; note:par1 - r0, par2 - r1

  ldrb r2, [r1],#1
  strb r2, [r0],#1
  cmp r2, #0
  bne copysubs  
  mov pc,lr

  ;ldmia     sp!, {r4 - r10, r11, pc}  ; ldmfd

  ENDP  ; |CopyStr|

  END
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

4
 
to nbcool:

我是这么改的:
;        AREA |.constdata_div_s|, COMDEF, DATA, READONLY, ALIGN=2
constdata_div_s
        DCB      。。。。。。。。

直接把 AREA |.constdata_div_s|, COMDEF, DATA, READONLY, ALIGN=2
注释掉 只要有这个变量定义冲突的 我就注释掉 然后这样改

还有 一个问题
ADS中
        AREA |area_number.1|, DATA, READONLY, ALIGN=0
        EXPORTAS |area_number.1|, |.constdata|
|.constdata$6|
strfunc_id
        DCB 。。。。。。

而在wince下EXPORTAS  是通不过的 我就直接把
EXPORTAS |area_number.1|, |.constdata| 注释掉 是否得当呢?

还有 pritf fprintf stdeer等我也是直接注释掉

我就是这么处理ADS程序 编译没有问题 但是运行的时候程序结果却不对
不知道我这样改哪里错了呢?
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

5
 
我不知还有什么可说的,我觉得我上面已经说的比较清楚了。你在ADS编译出来的是ARM自己的格式,你必须按照PE格式构造出来的文件才能运行在WINCE中。
 
 
 

回复

90

帖子

0

TA的资源

一粒金砂(初级)

6
 
我知道你的意思 但是不知道wince 下的汇编的格式是怎么样的?



wince下和ADS的区别不是很小么?

我删除了那些语句不对么?
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

7
 
我已经这么改了:

原来的语句: AREA |.constdata_div_s|, COMDEF, DATA, READONLY, ALIGN=2
修改后:
        AREA |.data|, DATA, READONLY, ALIGN=2
|.data$0|
|id_0|
  DCB 。。。。。

前面应用到constdata_div_s我也修改了

修改前:
|L1|
       DCD      |.constdata_div_s| + 8
;                 DCD      |.data$7|+8

|L2|
        DCD      |.constdata_div_s|
;                DCD     |.data$7|
|L3|
        DCD      |.constdata_div_s| + 20
;                DCD     |.data$7|+20

|L4|
        DCD      |.constdata_div_s| + 28
;                DCD      |.data$7|+28
修改成:

|L1|
   DCD      |.data$7|+8

|L2|
   DCD     |.data$7|
|L3|
   DCD     |.data$7|+20

|L4|
   DCD      |.data$7|+28


不知道这样是不是对的?  后面对constdata_div_s的操作 修改是对的么?

因为修改成wince的程序还有问题,不知道是哪里问题。 不知道这个修改是否正确呢?
谢谢
;
 
 
 

回复

58

帖子

0

TA的资源

一粒金砂(初级)

8
 
不懂你的意思,我觉得你没明白PE格式的构造和ADS文件的区别。PE格式代码段要放在.text section里面
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

9
 
你好

你的意思如果是代码段的话 要放在 |.text| 类么?

这里是数据段
在ADS中 是这样定义的
AREA   ?.constdata_div_s ?,   COMDEF,   DATA,   READONLY,   ALIGN=2
这在wince中是通不过编译的,无论你怎么改  ?.constdata_div_s ? 都会提示你这个constdata_div_s 有多重定义

所以我把这个改成:
AREA   ?.data ?,   DATA,   READONLY,   ALIGN=2
?.data$0 ?
id_0
  .......

但是结果又不一样

你遇到这个是怎么改的呢?

谢谢
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表