[brew]brew app 开发常见问题汇总 -- 持续更新

来源:互联网 发布:广州二手房成交数据 编辑:程序博客网 时间:2024/06/04 00:32
q1.在make brew 应用的时候提示

Error: L6265E: Non-RWPI Section libspace.o(.bss) cannot be assigned to PI Exec r

egion ER_ZI.

Error: L6248E: libspace.o(.text) in PI region 'ER_RO' cannot have address type r

elocation to __libspace_start in PI region 'ER_ZI'.

Finished: 0 information, 0 warning and 2 error messages.

NMAKE : fatal error U1077: 'C:\ARM\ADSv1_2\bin\armlink' : return code '0x1'

Stop.

a1:在网络上搜索到的回答一般是:检查所有的C++类,是否都重载了new,delete运算符,在模拟器上不会出错,但ARM编译会报如上错误。检查是否有double类型的算术或比较运算,目前BREW是不支持浮点运算的,所有运算必须使用有关助手函数,比如FMUL,FDIV等。但我这里实际遇到的情况是,我给app的主结构体分配了一个指针,然后在函数中对这个指针进行malloc,导致了上面的提示,将该指针换成非指针类型,则该错误提示消失。

--今天又进一步debug,发现在代码里,malloc,free,atoi,这几个函数要用大写的命名才行,不然也会出现上面的错误,也就是要用MALLOC,FREE,ATOI,置换了函数后,便暂时没出现那些问题了

q2.在make brew 应用的时候提示

Error: L6265E: Non-RWPI Section CCommon.o(.bss) cannot be assigned to PI Exec region ER_ZI.

a2:这主要是由于在app中使用了全局变量导致的提示,将app中的全局变量移除后,错误提示消失,但是这是一种很不方便的处理方式,网络上有一种处理方式,似乎可以不用移除变量也可以编译通过,但我还未进行过试验,这里先做一个纪录。

解决方案:

1、下载elf2mod.exe (本人的资源里有免费下载,http://d.download.csdn.net/down/2244832/miyunhong)

2、将elf2mod 安装到了 /ARM/ADSv1_2 目录下,本人的安装目录是 C:/ARM/ADSv1_2

3、一般需要将mak文件做 以下内容修改:
(1).将 HEXTOOL = $(ARMBIN)/fromelf # ARM ADS utility to create hex file from image
      替换成:HEXTOOL = $(ARMBIN)/elf2mod # ARM ADS utility to create hex file from image     
(2).将 CPU = -cpu ARM7TDMI         # ARM7TDMI target processor
      替换成:CPU = -cpu ARM926EJ-S   # ARM9TDMI target processor  

(3).将 LFLAGS = $(ROPILINK) -rwpi -entry 0x8000#
      替换成:LFLAGS = -split -reloc -entry AEEMod_Load

q3.


0 0
原创粉丝点击