ADS使用错误 could not open file debugrel objectcode

ARM 145浏览

转自:http://blog.csdn.net/shuaishuai80/article/details/6202346

感谢博主的总结。

(一)ADS介绍
      ADS(ARM Developer Suite)是ARM处理器下最主要的开发工具,在1993年由Metrowerks公司开发.ADS只是用于编写无操作系统下的硬件程序,即裸机程序,但ADS对操作系统下的驱动程序也提供了帮助.它包括:
(1) CodeWarrior IDE 
     CodeWarrior IDE是源代码浏览器、编辑器.其作用是
     1. 按照工程项目的方式来组织源代码文件、库文件以及其他文件
     2. 设置各种生成选项,以生成不同配置的映像文件
(2) AXD Debugger
     AXD Debugger是一个调试软件,运行该软件可以将映像文件下载到开发板的内存中,然后通过单步运行、断点调试、查看变量、寄存器状态等操作.这里,用户不需要仿真器,只需要并口的JTAG板或J-link.

(二)ADS的破解
(1) 解压并安装ADS软件.
(2) 选择Install License.
(3) 在Browse内加载破解文件,破解文件是CRACK/LICENSE.DAT.

(三)ADS注意事项
(1) 以.mcp结尾的文件就是ADS的工程文件.
(2) ADS工程不能放在中文路径下,否则双击mcp文件时无法打开.
(3) Make可以编译整个工程,并生成映像文件.在ADS中,ARM提供了三种映像文件,
     1. Debug:      使用本生成目标生成的映像文件中包含了所有的调试信息,用于开发过程中使用
     2. Release:    使用本生成目标生成的映像文件中不包含调试信息,用于生成实际发行的软件版本
     3. DebugRel: 使用本生成目标生成的映像文件中包含了基本的调试信息(常用的是DebugRel映像文件).
(4) 使用Make编译整个工程文件时,可能提示:
      Error:(Fatal) Could not open file E:2440test/DMA/DMA_Data/DebugRel/ObjectCode/2440init.o
     这是由于用户改变了用户在Make之前改变了整个工程文件的路径,解决途径是执行菜单Project/Remove Object Code,清除以前已编译过的目标文件,再重新编译即可.
(5) Dubug按钮用于调适,单击按钮后自动运行AXD Debugger,其功能有:
    1. 下载目标映像文件到目标系统中.
    2. 在目标程序中设置断点,包括程序端点和数据端点.
    3. 查看和修改断点处处理器状态.
    4. 查看和修改目标程序中变量的值.
    5. 单步执行目标程序,并可以显示反汇编的代码或者源程序代码.

(四)CodeWarrior IDE新建工程文件
步骤1:打开CodeWarrior IDE.执行菜单File/New,弹出新建对话框.在Project内选择ARM Executable Image(ARM可执行镜像).输入工程的名字及保存路径.注意,只需要输入工程名,不需要结尾,且保存路径必须是英文路径.这样就生成了以.mcp为结尾的工程文件.
        示例,输入工程名LED,路径D:/ARM/LED,这样就在D:/ARM下自动生成了LED文件夹,在LED文件夹下有两个文件,分别是LED_Data、LED.mcp.
步骤2:向工程中添加新建文件
         执行菜单File/New,弹出新建对话框.在File内输入文件的名字及保存路径.注意,需要输入以某种类型结尾的文件名,且保存路径必须是英文路径(系统默认新建文件的路径即为工程路径).选中"Add to Project",在Project栏内选择需要添加文件的工程,在Targets栏内只选择编译选项DebugRel(生成的镜像中只包含基本的调试信息).这样用户就可以在文件内进行编程,然后保存.
        示例,输入文件名main.c,(默认)路径D:/ARM/LED,选中Add to Project,在Project内选择需要添加文件的工程LED.mcp,
  在Targets栏内只选择编译选项DebugRel.
步骤3:向工程中添加已存在的文件
       将已有文件或文件夹复制到新建工程的路径下,执行菜单Project/Add Files,添加文件夹内的各个文件,注意只能添加文件,不能添加文件夹.在添加文件的过程中,CodeWarrior IDE会提醒用户来选择编译选项,这里只选择DebugRel(生成的镜像中只包含基本的调试信息),不选择Release、Debug.
       比如,复制系统文件夹system、文件夹uart到路径D:/ARM/LED下,执行菜单Project/Add Files,添加文件夹system、uart下的各个文件,并选择编译选项DebugRel.
步骤4:新建的文件以及新加文件都被列出来,为了将这些文件按功能进行分类,执行菜单Project/Create Group,新建组.在
Enter name for new group内输入组名,用户可以将各个文件按功能拖入组内.示例,执行菜单Project/Create Group,Enter name for new group内分别输入组名src、inc.其中,src表示存放系统的源码文件,inc表示存放系统的头文件,然后将以.c结尾的文件拖入组src内,将.h结尾的文件拖入组inc内.当然,如果工程较大,可以按模块进行分组,这样便于管理.

(五)CodeWarrior IDE的设置
  单击按钮DebugRel Settings,弹出DebugRel Settings对话框.
<1>Target Settings
     如果要生成可执行文件,则在Post-linker内选择ARM fromELF.如果不想生成可执行文件,则选择None.


<2>ARM Assembler
     在Architecture or Processor内选择ARM920T.因为s3c2440是ARM920T内核。


<3>ARM C Compiler
     在Architecture or Processor内选择ARM920T.
<4>ARM C++ Compiler
     在Architecture or Processor内选择ARM920T.
<5>Thumb C Compiler
     在Architecture or Processor内选择ARM920T.
<6>Thumb C++ Compiler
     在Architecture or Processor内选择ARM920T.
<7>ARM Linker
  1.Output/Simple image栏:RO是内存的起始地址输入0x30000000,因为在开发板上SDRAM是从0x30000000地址开始。

  2.Options/Image entry point栏:填入内存的起始地址,即输入0x30000000.

在Language Settings中的所有语言的Target下的Architecture or Processor,选择ARM920T,在ARM Linker中的Output中的RO Base填写0x30000000,在Layout中的Object/Symbol中填写2440init.o,


  3.Layout/Place at beginning of image/Object/Symbol栏:指定初始化代码的目标文件.
     初始化代码是已添加的汇编文件2440init.s,该文件编译后生成2440init.o,即输入2440init.o,它是启动文件的目标文件

  4.Layout/Place at beginning of image/Section栏:输入Init


     打开初始化代码文件2440init.s,找到
     IMPORT Main ;The main entry of mon program    //main函数的入口地址
     AREA   Init,CODE,READONLY                     //定义名为Init的只读代码段.
     这个Init就是Section栏需要输入的.当然,用户也可以修改名字Init,然后将修改后的名字填入Section即可.此时,在Equivalent Command Line内会出现用户所设置的参数
<8>ARM fromELF
   1.Output format:设置输出可执行文件的类型.选择Plain binary(二进制文件).
   2.Output file name:指定生成的可执行文件的文件名.当然也可以不用设置,系统默认生成以工程名加后缀.bin的文件.

转自:http://blog.csdn.net/shuaishuai80/article/details/6202346

感谢博主的总结。

(一)ADS介绍
      ADS(ARM Developer Suite)是ARM处理器下最主要的开发工具,在1993年由Metrowerks公司开发.ADS只是用于编写无操作系统下的硬件程序,即裸机程序,但ADS对操作系统下的驱动程序也提供了帮助.它包括:
(1) CodeWarrior IDE 
     CodeWarrior IDE是源代码浏览器、编辑器.其作用是
     1. 按照工程项目的方式来组织源代码文件、库文件以及其他文件
     2. 设置各种生成选项,以生成不同配置的映像文件
(2) AXD Debugger
     AXD Debugger是一个调试软件,运行该软件可以将映像文件下载到开发板的内存中,然后通过单步运行、断点调试、查看变量、寄存器状态等操作.这里,用户不需要仿真器,只需要并口的JTAG板或J-link.

(二)ADS的破解
(1) 解压并安装ADS软件.
(2) 选择Install License.
(3) 在Browse内加载破解文件,破解文件是CRACK/LICENSE.DAT.

(三)ADS注意事项
(1) 以.mcp结尾的文件就是ADS的工程文件.
(2) ADS工程不能放在中文路径下,否则双击mcp文件时无法打开.
(3) Make可以编译整个工程,并生成映像文件.在ADS中,ARM提供了三种映像文件,
     1. Debug:      使用本生成目标生成的映像文件中包含了所有的调试信息,用于开发过程中使用
     2. Release:    使用本生成目标生成的映像文件中不包含调试信息,用于生成实际发行的软件版本
     3. DebugRel: 使用本生成目标生成的映像文件中包含了基本的调试信息(常用的是DebugRel映像文件).
(4) 使用Make编译整个工程文件时,可能提示:
      Error:(Fatal) Could not open file E:2440test/DMA/DMA_Data/DebugRel/ObjectCode/2440init.o
     这是由于用户改变了用户在Make之前改变了整个工程文件的路径,解决途径是执行菜单Project/Remove Object Code,清除以前已编译过的目标文件,再重新编译即可.
(5) Dubug按钮用于调适,单击按钮后自动运行AXD Debugger,其功能有:
    1. 下载目标映像文件到目标系统中.
    2. 在目标程序中设置断点,包括程序端点和数据端点.
    3. 查看和修改断点处处理器状态.
    4. 查看和修改目标程序中变量的值.
    5. 单步执行目标程序,并可以显示反汇编的代码或者源程序代码.

(四)CodeWarrior IDE新建工程文件
步骤1:打开CodeWarrior IDE.执行菜单File/New,弹出新建对话框.在Project内选择ARM Executable Image(ARM可执行镜像).输入工程的名字及保存路径.注意,只需要输入工程名,不需要结尾,且保存路径必须是英文路径.这样就生成了以.mcp为结尾的工程文件.
        示例,输入工程名LED,路径D:/ARM/LED,这样就在D:/ARM下自动生成了LED文件夹,在LED文件夹下有两个文件,分别是LED_Data、LED.mcp.
步骤2:向工程中添加新建文件
         执行菜单File/New,弹出新建对话框.在File内输入文件的名字及保存路径.注意,需要输入以某种类型结尾的文件名,且保存路径必须是英文路径(系统默认新建文件的路径即为工程路径).选中"Add to Project",在Project栏内选择需要添加文件的工程,在Targets栏内只选择编译选项DebugRel(生成的镜像中只包含基本的调试信息).这样用户就可以在文件内进行编程,然后保存.
        示例,输入文件名main.c,(默认)路径D:/ARM/LED,选中Add to Project,在Project内选择需要添加文件的工程LED.mcp,
  在Targets栏内只选择编译选项DebugRel.
步骤3:向工程中添加已存在的文件
       将已有文件或文件夹复制到新建工程的路径下,执行菜单Project/Add Files,添加文件夹内的各个文件,注意只能添加文件,不能添加文件夹.在添加文件的过程中,CodeWarrior IDE会提醒用户来选择编译选项,这里只选择DebugRel(生成的镜像中只包含基本的调试信息),不选择Release、Debug.
       比如,复制系统文件夹system、文件夹uart到路径D:/ARM/LED下,执行菜单Project/Add Files,添加文件夹system、uart下的各个文件,并选择编译选项DebugRel.
步骤4:新建的文件以及新加文件都被列出来,为了将这些文件按功能进行分类,执行菜单Project/Create Group,新建组.在
Enter name for new group内输入组名,用户可以将各个文件按功能拖入组内.示例,执行菜单Project/Create Group,Enter name for new group内分别输入组名src、inc.其中,src表示存放系统的源码文件,inc表示存放系统的头文件,然后将以.c结尾的文件拖入组src内,将.h结尾的文件拖入组inc内.当然,如果工程较大,可以按模块进行分组,这样便于管理.

(五)CodeWarrior IDE的设置
  单击按钮DebugRel Settings,弹出DebugRel Settings对话框.
<1>Target Settings
     如果要生成可执行文件,则在Post-linker内选择ARM fromELF.如果不想生成可执行文件,则选择None.


<2>ARM Assembler
     在Architecture or Processor内选择ARM920T.因为s3c2440是ARM920T内核。


<3>ARM C Compiler
     在Architecture or Processor内选择ARM920T.
<4>ARM C++ Compiler
     在Architecture or Processor内选择ARM920T.
<5>Thumb C Compiler
     在Architecture or Processor内选择ARM920T.
<6>Thumb C++ Compiler
     在Architecture or Processor内选择ARM920T.
<7>ARM Linker
  1.Output/Simple image栏:RO是内存的起始地址输入0x30000000,因为在开发板上SDRAM是从0x30000000地址开始。

  2.Options/Image entry point栏:填入内存的起始地址,即输入0x30000000.

在Language Settings中的所有语言的Target下的Architecture or Processor,选择ARM920T,在ARM Linker中的Output中的RO Base填写0x30000000,在Layout中的Object/Symbol中填写2440init.o,


  3.Layout/Place at beginning of image/Object/Symbol栏:指定初始化代码的目标文件.
     初始化代码是已添加的汇编文件2440init.s,该文件编译后生成2440init.o,即输入2440init.o,它是启动文件的目标文件

  4.Layout/Place at beginning of image/Section栏:输入Init


     打开初始化代码文件2440init.s,找到
     IMPORT Main ;The main entry of mon program    //main函数的入口地址
     AREA   Init,CODE,READONLY                     //定义名为Init的只读代码段.
     这个Init就是Section栏需要输入的.当然,用户也可以修改名字Init,然后将修改后的名字填入Section即可.此时,在Equivalent Command Line内会出现用户所设置的参数
<8>ARM fromELF
   1.Output format:设置输出可执行文件的类型.选择Plain binary(二进制文件).
   2.Output file name:指定生成的可执行文件的文件名.当然也可以不用设置,系统默认生成以工程名加后缀.bin的文件.