ARM---解决ads工程转到MDK(keil)可能出现的error

发布者:橙子1234最新更新时间:2020-06-17 来源: eefocus关键字:ARM  ads工程  MDK(keil)  error 手机看文章 扫描二维码
随时随地手机看文章

最近把ADS1.2工程转到MDK4.03出现一些error,罗列了可能出现的error,并给予相关的办法,让大家在以后的转换中尽快搞定

1:error : No section matches selector –no section to be FIRST/LAST.
把原来的Init 代码段名修改成RESET:
    ;     AREA  Init,CODE,READONLY
         AREA  RESET,CODE,READONLY

2:error  Undefined symbol Main (referred from 2440init.o).
      error: scatter-load file declares no heap or stack regions and __user_initial_stackheap is not defined
    一般完成上一步修改就不会出现这个error;

    如果代码中使用了main则加入部分代码
                EXPORT  __user_initial_stackheap
__user_initial_stackheap

                LDR     R0, =  Heap_Mem
                LDR     R1, =(Stack_Mem + USR_Stack_Size)
                LDR     R2, = (Heap_Mem +      Heap_Size)
                LDR     R3, = Stack_Mem
                BX      LR


3: Undefined symbol Image

RWRW

Limit (referred from *.o)
   Undefined symbol Im.............

把Image

RORO

Base,  Image

RORO

Limit, Image

RWRW

Base,  Image

ZIZI

Base, Image

ZIZI

Limit
改成:
Image

ERROM1ERROM1

RO

Base,ImageBase,Image

ER_ROM1

RORO

Limit, Image

RWRAM1RWRAM1

RW

Base,ImageBase,Image

RW_RAM1

ZIZI

Base, Image

RWRAM1RWRAM1

ZI$$Limit

4:error  contains invalid call from '~PRES8' function to'REQ8' function *
     汇编文件的开头,添加“PRESERVE8”指令。


5:error: L6235E: More than one section matches selector - cannot all be FIRST/LAST.
    建立realview工程时,不要导入realview的S3C2440.s,否则当把Init代码段名改成RESET时,会存在两个RESET段。


6.error: A1355U: A Label was found which was in no AREA

KEIL工程中,我使用另一个工程中正确的分散加载文件到一个新工程中,竟然就出现这样的提示。

到网上搜索,有很多内容是关于这个问题的,但是却没有几个很好解决问题的。

其实出现这个问题有两种情况,一种是出现在.s的汇编文件中,另一种是出现在.scf (或者.scat)等的分散加载文件中。

原来很多人在汇编文件(多数为.s的启动代码)中出现这个问题的,基本上是因为使用汇编的格式不对,

关于这个错误,ARM官网有相关的说明:

A1355U: A Label was found which was in no AREA
Example:
This can occur where no white-space precedes an assembler directive.
Assembler directives must be indented with white-space, for example:
use:
    IF :DEF: FOO
    ; code
    ENDIF
not:
IF :DEF: FOO
; code
ENDIF
Symbols in the left hand column 1 are assumed to be labels, hence the error message.

意思是在编写汇编文件时,标号要顶格写,而其他的代码都要用空格或者TAB键来使代码进行缩进,这样,就不会出现编译的问题了。

如果问题是出现在分散加载文件中,那么很可能你是把分散加载文件一起加入到了KEIL的工程中,类似这样:


这时候,就可能会出现

 

 

error: A1355U: A Label was found which was in no AREA这样的报错,不管你用多么正确的SCATTER文件格式,它始终都会报错。为什么呢?

原来我们通常加到KEIL工程中的.c ,.s, .h等文件是供ARMCC,ARMASM等编译器处理的,而分散加载文件 .scf ,.scat等文件是供ARMLINKER等连接器处理的,当我们把分散加载文件加入到工程中后,KEIL会调用ARMASM编译器将分散加载文件做为汇编文件去处理,因为分散加载文件本来就不是合法的汇编文件,所以在编译的时候就出现了编译错误的提示。

解决方法:在工程中删除分散加载文件,在option->linker->scatter file路径中指定即可,如图:

关键字:ARM  ads工程  MDK(keil)  error 引用地址:ARM---解决ads工程转到MDK(keil)可能出现的error

上一篇:用jlink在mini2440上烧写uboot
下一篇:解决ads工程转到MDK(keil)可能出现的error

推荐阅读最新更新时间:2024-11-13 03:59

ARM7入门1,跑马灯实验
用keil uvision3和proteus做的程序。 主程序: /******************************************************************************/ /* This file is part of the uVision/ARM development tools */ /* Copyright KEIL ELEKTRONIK GmbH 2002-2004 */ /********************************************************************
[单片机]
<font color='red'>ARM</font>7入门1,跑马灯实验
ARM微处理器的指令集概述一——ARM应用系统开发详解笔记
ARM微处理器的指令集概述 ARM指令集是加载/存储型的,就是说指令集仅仅能处理寄存器中的数据,而且处理结果都要放回寄存器中,而对系统存储器的访问则需要通过专门的加载/存储指令来完成。 ARM微处理器的指令集可以分为六大类 跳转指令、数据处理指令、程序状态寄存器(PSR)处理指令、加载/存储指令、协处理器指令和异常产生指令。 一 指令的条件域 当处理器工作在ARM状态时,几乎所有的指令均根据CPSR中条件码的状态和指令的条件域有条件的执行。当指令的执行条件满足时,指令被执行,否则指令被忽略。每一条ARM指令包含4位的条件码,位于指令的最高4位 。条件码共有16种,每种条件码可用两个字符表示,这两个字符可
[单片机]
ARM 常用汇编指令
ARM 汇编程序的框架结构 .section .data 初始化的数据 .section.bss 未初始化的数据 .section .text .global _start _start: 汇编代码 注意: 一般是将上面结构进行简化 .text .global _start _start: 汇编代码 寄存器操作指令: 算术和逻辑指令: MOV :用于将一个寄存器或被移位寄存器或一个立即数移动到目的寄存器 MOV r1 ,#8 (注意:#+数,表示一个十进制数,#+0b数,表示一个二进制数,#+0x数,表示一个十六进制数) MVN :对源操作数取反再赋值给目的寄存器 MOV R1,#8
[单片机]
Nordic Semiconductor 与 Arm 扩展合作关系
签署最新低功耗处理器设计、软件平台和安全 IP 许可协议 Nordic签署 Arm Total Access 授权许可协议,确保其现有和未来的多协议、Wi-Fi、蜂窝物联网和DECT NR+ 产品具备业界领先的处理器和安全技术 挪威奥斯陆 – 2024年2月20日 – Nordic Semiconductor宣布与世界领先的半导体设计和软件平台企业Arm签署一项多年期Arm Total Access (ATA)授权许可协议 。ATA 保证为Nordic当前和未来的产品 (包括多协议、Wi-Fi、蜂窝物联网和 DECT NR+ 解决方案) 提供广泛的Arm® IP、工具、支持和培训。 两家企业的合作始于 2012
[物联网]
Nordic Semiconductor 与 <font color='red'>Arm</font> 扩展合作关系
ARM中断PC返回值分析
在ARM程序的开发过程中,对中断的处理是很普遍的、也是相当重要的。Realview MDK使用的RVCT编译器提供了__irq关键字,用此关键字修饰的函数被作为中断来函数编译,即在编译的过程中,编译器会自动添加中断处理过程中现场保护和恢复的代码,减小程序的开发难度,加快软件的开发过程。 在理解__irq关键字的作用之前,先看一下ARM核对异常的处理过程。当产生异常时, ARM核拷贝CPSR寄存器的内容SPSR_ mode 寄存器中,同时设置适当的CPSR 位、改变处理器状态进入ARM 态和处理器模式,从而进入相应的异常模式。在设置中断禁止位禁止相应中断(如果需要)后,ARM核保存返回地址到LR_ mode ,同时设置PC为相应的异常
[单片机]
学习ARM反汇编工具objdump和一个简单实例
1、反汇编的原理&为什么需要反汇编 arm-linux-objdump -D led.elf led_elf.dis objdump是gcc工具链中的反汇编工具,作用是由编译链接好的elf 格式的可执行程序,来反过来得到汇编源代码。 -D表示反汇编。 左边的是ELF的可执行程序(反汇编时候的原材料) 右边的是反汇编生成的反汇编程序。其实就是一个汇编语言。 一般情况下我们写一个源代码 类似于我们WINDOW里面是EXE的格式,PE格式是官方的名字。 2、为什么我们需要进行反汇编,我们要的就是可执行程序。 反汇编的原因有以下: 1、逆向破解 你想盗版的原来的程序,最终得到程序的源代码。 2、调式程序的时候
[单片机]
建立在ARM基础上的ADSL2+测试仪的设计
  引言   近几年来,不对称数字用户线(ADSL)作为网络“最后一公里”问题的理想解决方案在世界范围内得到了广泛运用。在我,ADSL业务已成为运营商收入的主要增点之一。但由于现有电话线路专门为传送低频语音信号所设计,不利于高频信号传输,线路周边环境恶劣且复杂多变,无论ADSL业务的开通还是正常的运营维护,都需进行一系列复杂的测试工作。   现有测试仪表多为国外品牌且价格昂贵,国内产品普遍存在测试频段有限,测试结果片面的问题;而且由于核心芯片处理能力有限,嵌入式操作系统不先进,软件包功能不够完善,对测试结果的管理也比较混乱。随着市场不断壮大,尤其是基于ITU G.992.3/ G.992.5标准的ADSL2/ 2+推出后,价格
[测试测量]
建立在<font color='red'>ARM</font>基础上的ADSL2+测试仪的设计
基于ARM与DSP的智能仪器系统设计
1引言 随着智能仪器及控制系统对实时性信号处理的要求不断提高和大规模集成电路技术的迅速发展。越来越迫切的要求有一种高性能的设计方案与之相适应,将DSP技术和ARM技术结合起来应用于嵌入式系统中,将会充分发挥两者优势以达到智能控制系统中对数据的实时性、高效性的通信要求。该嵌入式系统要求实时响应,具有严格的时序性。其工作环境可能非常恶劣,如高温、低温、潮湿等,所以系统还要求非常高的稳定性。 2嵌入式系统的总体设计 2.1核心器件的主要功能 ARM和DSP分别选用Cirrus Logic公司的EP7312、TI公司的TMS320VC5402。充分利用ARM丰富的片上资源和DSP强大的信号处理功能,实现高效性、实时性的信号处理及网络通信功能
[单片机]
基于<font color='red'>ARM</font>与DSP的智能仪器系统设计
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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