QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 5160|回复: 8

急:ADS入门问题,各位帮帮忙吧

[复制链接]
发表于 2005-7-18 18:12:39 | 显示全部楼层 |阅读模式
前段时间使用SDT2.51开发环境,现在想改用ADS1.2.

可是,我将SDT下全都编译通过的文件,放到ADS1.2下,却发现没有一个文件能够顺利编译,全都有问题。

实在不明白,这些问题都莫名其妙。

请各位帮帮忙,谢谢
发表于 2005-7-19 00:50:52 | 显示全部楼层
举个例子,或者把源码贴上来,这样才好分析啊
回复

使用道具 举报

 楼主| 发表于 2005-7-19 08:27:30 | 显示全部楼层
好的。

那些文件我在sdt2.51下都顺利编译通过了,但是放在ads1.2下就出现很多了问题.

例如在编译44binit.s文件时,由于文件开始有两句包含语句:GET ..\inc\option.a和GET ..\inc\memcfg.a ,一开始怎么都编译不过,出现很多错误,后来我将这两个文件的后缀名改为.s就可以了,敢情是ads下不识.a文件

另外,ADS中是不是不支持#elif这种条件编译指令啊?我随便编译一个.c文件,老是提示出错,信息如下: 
Error   : (Serious) C2275E: illegal character (hex code 0xa1) in source
option.h line 62   

Error   : (Serious) C2275E: illegal character (hex code 0xa1) in source
option.h line 37   

Error   : (Serious) C2275E: illegal character (hex code 0xa1) in source
option.h line 37   

Error   : (Serious) C2275E: illegal character (hex code 0xa1) in source
option.h line 37   

Error   : (Serious) C2275E: illegal character (hex code 0xa1) in source
option.h line 37   

Error   : (Serious) C2275E: illegal character (hex code 0xa1) in source
option.h line 37   

Error   : (Serious) C2275E: illegal character (hex code 0xa1) in source
option.h line 37   

Error   : (Serious) C2275E: illegal character (hex code 0xa1) in source
option.h line 37   

Error   : (Serious) C2275E: illegal character (hex code 0xa1) in source
option.h line 37   

Error   : (Serious) C2275E: illegal character (hex code 0xa1) in source
option.h line 37   

Error   : (Serious) C2275E: illegal character (hex code 0xa1) in source
option.h line 37   

Error   : (Serious) C2275E: illegal character (hex code 0xa1) in source
option.h line 37   

Error   : (Serious) C2275E: illegal character (hex code 0xa1) in source
option.h line 37   

Error   : (Serious) C2275E: illegal character (hex code 0xa1) in source
option.h line 37   

Error   : (Serious) C2275E: illegal character (hex code 0xa1) in source
option.h line 37   

Error   : (Serious) C2275E: illegal character (hex code 0xa1) in source
option.h line 37   

Error   : (Serious) C2275E: illegal character (hex code 0xa1) in source
option.h line 37   

Error   : (Serious) C2275E: illegal character (hex code 0xa1) in source
option.h line 37   

Error   : (Serious) C2275E: illegal character (hex code 0xa1) in source
option.h line 37   

Error   : (Serious) C2275E: illegal character (hex code 0xa1) in source
option.h line 37   

Error   : (Serious) C2275E: illegal character (hex code 0xa1) in source
option.h line 37   

Error   : (Serious) C2275E: illegal character (hex code 0xa1) in source
option.h line 37   

Error   : (Serious) C2275E: illegal character (hex code 0xa1) in source
option.h line 37   

Error   : (Serious) C2275E: illegal character (hex code 0xa1) in source
option.h line 37   

Error   : (Serious) C2275E: illegal character (hex code 0xa1) in source
option.h line 37   

Error   : (Serious) C2275E: illegal character (hex code 0xa1) in source
option.h line 37   

Error   : (Serious) C2275E: illegal character (hex code 0xa1) in source
option.h line 37   

Error   : (Serious) C2275E: illegal character (hex code 0xa1) in source
option.h line 37   

Error   : (Serious) C2275E: illegal character (hex code 0xa1) in source
option.h line 37   

Error   : (Serious) C2275E: illegal character (hex code 0xa1) in source
option.h line 37   

Error   : (Fatal) C3047U: Too many errors
option.h line 37   

所提示错误处都是option.h文件中#elif处.

option.h文件:

#define MCLK (20000000)        /* 修改系统主频20Mhz */
#define PLLON 1        /* 使能PLL,注意,使能后必须使用S/W命令设置PLLCON,否则Fout = Fin而不是Fpllo */

#if (MCLK==66000000)
#define PLL_M (0x3a)        /* 主分频值,PLLCON[19] */
#define PLL_P (0x3)        /* 预分频值, PLLCON[9 : 4] */
#define PLL_S (0x1)        /* 后分频值,PLLCON[1 : 0] */

#elif (MCLK==60000000)
#define PLL_M (0x34)
#define PLL_P (0x3)
#define PLL_S (0x1)

#elif (MCLK==40000000)
#define PLL_M (0x4
#define PLL_P (0x3)
#define PLL_S (0x2)

#elif (MCLK==20000000)
#define PLL_M (0x4
#define PLL_P (0x3)
#define PLL_S (0x3)
#endif

#define WRBUFOPT (0x   /* 允许写缓冲 */

#define SYSCFG_8KBn (0x6)/* 不允许写缓冲,8KB空间全部作为Cache,不允许停止选项 */
#define SYSCFG_0KB (0x0|WRBUFOPT)/* 允许写缓冲,不使用Cache即8KB内部SRAM,不允许停止选项 */
#define SYSCFG_4KB (0x2|WRBUFOPT)/* 允许写缓冲,4KBflash,4KB内部SRAM,不允许停止选项 */
#define SYSCFG_8KB (0x6|WRBUFOPT)/* 允许写缓冲,8KB空间全部作为Cache,不允许停止选项 */

#define DRAM            1                /* 表示RAM类型为DRAM */
#define SDRAM            2                /* 表示RAM类型为SDRAM(这两个常数作用是什么???) */
#define BDRAMTYPE   SDRAM        /* 在power.c,44blib.c使用 */

#define BUSWIDTH    (16)       /* 数据总线宽度 */

#define CACHECFG    SYSCFG_8KB/* 缓冲器配置 */

#define _RAM_STARTADDRESS 0xc000000        /* 定义RAM空间起始地址 */

#define _ISR_STARTADDRESS 0xc7fff00     /* 中断向量起始地址,注意这里把它们映射至RAM空间(GCS6:64Mbit(8MB) DRAM/SDRAM) */
                                        /* 这个常量在option.a文件中也有定义,但那里是提供给44binit.s使用 */
                      /* 这里供44b.h使用,用于定义中断向量表 */

#endif /*__OPTION_H__*/

实在搞不明白
回复

使用道具 举报

 楼主| 发表于 2005-7-19 09:31:01 | 显示全部楼层
问题解决了一部分了。
ads下可能真不识.a文件,应该改为.s。不过我觉得有点不合理,因为memcfg.a和option.a都只是定义一些常量和宏,相当于汇编语言的头文件,如果改为.s的话,变为源文件了,编译器会对它们进行编译。而在编译memcfg.s时,出现错误提示:
Error   : A1150E: Bad symbol
Memcfg.s line 82   

   82 00000000  [ BDRAMTYPE = "DRAM" ;MT=01(FP DRAM) or 10(EDO DRAM)

Error   : A1150E: Bad symbol
Memcfg.s line 95   

   95 00000000  [ BDRAMTYPE = "DRAM" ;MT=01(FP DRAM) or 10(EDO DRAM)

2 Errors, 0 Warnings


也就是说找不到BDRAMTYPE定义,而BDRAMTYPE定义是在option.s文件中进行的。是不是要加一句类似include的语句?不过在sdt下,memcfg.a和option.a是可以顺利编译通过的。

还有上面#elif问题,主要注释有问题,在sdt下没问题,但在ads下好像就不允许了。搞不懂
回复

使用道具 举报

 楼主| 发表于 2005-7-19 10:34:39 | 显示全部楼层
编译链接问题解决了,只要将memcfg.s和option.s从工程中删除即可,因为它们是不需要被编译的文件,它们相当于汇编语言头文件。

不过又来新问题了,原来由sdt生成的bin文件运行很正常,但是用sdt编译链接生成的bin,下载到sram空间后,凡是涉及到中断的地方都不能正常工作了,奇怪

感谢热心网友richard给我发的工程例程,我是看了他的例程才想到的,谢谢!
顺便也感谢所有帮助我的网友。
回复

使用道具 举报

发表于 2005-7-19 11:52:12 | 显示全部楼层
好像这个中断的问题我也碰到过,你的中断向量表的代码是怎么写的?
回复

使用道具 举报

 楼主| 发表于 2005-7-19 13:51:44 | 显示全部楼层
ENTRY
    b ResetHandler  ;for debug
    b HandlerUndef  ;handlerUndef
    b HandlerSWI    ;SWI interrupt handler
    b HandlerPabort ;handlerPAbort
    b HandlerDabort ;handlerDAbort
    b .                    ;handlerReserved
    b HandlerIRQ
    b HandlerFIQ
        ;***IMPORTANT NOTE***
        ;If the H/W vectored interrutp mode is enabled, The above two instructions should
        ;be changed like below, to work-around with H/W bug of S3C44B0X interrupt controller.
        ; b HandlerIRQ  ->  subs pc,lr,#4
        ; b HandlerIRQ  ->  subs pc,lr,#4

VECTOR_BRANCH
    ldr pc,=HandlerEINT0    ;mGA    H/W interrupt vector table
    ldr pc,=HandlerEINT1    ;       
    ldr pc,=HandlerEINT2    ;
    ldr pc,=HandlerEINT3    ;
    ldr pc,=HandlerEINT4567 ;
    ldr pc,=HandlerTICK            ;mGA
    b .
    b .
    ldr pc,=HandlerZDMA0    ;mGB
    ldr pc,=HandlerZDMA1    ;
    ldr pc,=HandlerBDMA0    ;
    ldr pc,=HandlerBDMA1    ;
    ldr pc,=HandlerWDT            ;
    ldr pc,=HandlerUERR01   ;mGB
    b .
    b .
    ldr pc,=HandlerTIMER0   ;mGC
    ldr pc,=HandlerTIMER1   ;
    ldr pc,=HandlerTIMER2   ;
    ldr pc,=HandlerTIMER3   ;
    ldr pc,=HandlerTIMER4   ;
    ldr pc,=HandlerTIMER5   ;mGC
    b .
    b .
    ldr pc,=HandlerURXD0    ;mGD
    ldr pc,=HandlerURXD1    ;
    ldr pc,=HandlerIIC            ;
    ldr pc,=HandlerSIO            ;
    ldr pc,=HandlerUTXD0    ;
    ldr pc,=HandlerUTXD1    ;mGD
    b .
    b .
    ldr pc,=HandlerRTC            ;mGKA
    b .                                                ;
    b .                                                ;
    b .                                                ;
    b .                                                ;
    b .                                                ;mGKA
    b .
    b .
    ldr pc,=HandlerADC            ;mGKB
    b .                                                ;
    b .                                                ;
    b .                                                ;
    b .                                                ;
    b .                                                ;mGKB
    b .
    b .
;0xe0=EnterPWDN

。。。。。。

                ^        _ISR_STARTADDRESS
HandleReset        #        4
HandleUndef        #        4
HandleSWI        #        4
HandlePabort        #        4
HandleDabort        #        4
HandleReserved        #        4
HandleIRQ        #        4
HandleFIQ        #        4

;Don't use the label 'IntVectorTable',
;because armasm.exe cann't recognize this label correctly.
;the value is different with an address you think it may be.
;IntVectorTable
HandleADC        #        4
HandleRTC        #        4
HandleUTXD1        #        4
HandleUTXD0        #        4
HandleSIO        #        4
HandleIIC        #        4
HandleURXD1        #        4
HandleURXD0        #        4
HandleTIMER5        #        4
HandleTIMER4        #        4
HandleTIMER3        #        4
HandleTIMER2        #        4
HandleTIMER1        #        4
HandleTIMER0        #        4
HandleUERR01        #        4
HandleWDT        #        4
HandleBDMA1        #        4
HandleBDMA0        #        4
HandleZDMA1        #        4
HandleZDMA0        #        4
HandleTICK        #        4
HandleEINT4567        #        4
HandleEINT3        #        4
HandleEINT2        #        4
HandleEINT1        #        4
HandleEINT0        #        4   ;0xc1(c7)fff84

就是44b0测试代码自带的44binit.s文件啊,这些中断使用sdt编译后,生成的bin都能很好响应,为什么使用ads编译后生成的bin却不能正常响应呢?
奇怪啊
回复

使用道具 举报

发表于 2006-3-21 15:18:58 | 显示全部楼层
不知道各位的问题解决了没有?我也遇到了这个问题,我在ADS帮助文件里找到了这段话,但能读懂英文但没搞懂意思,各位群策群力把这个问题解决掉哟!
想把此文件共享出来,但不知道怎么贴。
A1150E: Bad symbol
This typically occurs in two cases:
1) when the current file requires another file to be INCLUDEed to define some symbols, for example:
"init.s", line 2: Error: A1150E: Bad symbol
2 00000000 DCD EBI_CSR_0
typically requires a definitions file to be included, e.g:
INCLUDE targets/eb40.inc
2) when the current file requires some symbols to be IMPORTed, for example:
"init.s", line 4: Error: A1150E: Bad symbol
4 00000000 LDR r0, =||Image$$RAM$$ZI$$Limit||
typically requires the symbol to be imported, e.g:
IMPORT ||Image$$RAM$$ZI$$Limit||
回复

使用道具 举报

发表于 2006-3-22 15:31:52 | 显示全部楼层
将44blib_A.s添加到工程中并将源文件中的GET....和文件夹中的文件扩展名从.a改为.s就可以了
回复

使用道具 举报

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

本版积分规则

GMT+8, 2024-11-2 02:21 , Processed in 0.079884 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

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