ADS操作简略

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Create PDF with GO2PDF for free, if you wish to remove this line, click here to buy Virtual PDF Printer
; dmc.o (+RW, +ZI) dmc_library.o (+RW, +ZI) } }
复杂的分区 简单的 AXF 的分区,认为程序只有一个 RO 段,一个 RW 段。但是在嵌入式程序,很多程 序需要更为复杂的分区,可能有好几个 RO 分不在同地址。在 GCC 中,非常规的分段需要 ld 调用 lds 脚本来设定,在 ADS 中,需要调用 scatter 描述文件来设置. 以下就是 6410 test 的 scatter 描述文件内容 可以看到除了传统的 RO,RW 外,它还增加了 IRAM 和 ITCM 段. DRAM 0x50200000 { CODE 0x50200000 { startup.o (Init,+FIRST) scatter_load.o (+RO)
ADS 的 IDE 实际上也是调用这一些工具来编译程序。如果你愿意,可以写脚本直接调用命 令行工具来编译。象 MTK 就是这样做的,它们写了一个 Makefile 脚本来直接调用编译器来 编译器---因为这个项目文件太多了。。
AXF 分区命名
一般的 C 程序对于程序分区,一般采用 TEXT/BSS/DATA 这样的分区.Gcc 的编译程序文件 成 功 后 , 最 后 都 会 生 一 个 .out 或 ELF 格 式 的 可 执 行 文 件 , 这 个 文 件 通 常 都 包 含 三 个 段.text,.data 和.bss 段,运行时,会在进程空间会生成.text,.data.bss 和 stack,heap 五个区. AXF 对于不同程序的分区采用另外命名.跟 GCC 程序对应,ADS 编写的程序也有两种状态, 一个保存状态.对于 ELF 可执行文件,一种是运行态,对应进程空间分区.
Uart_Printf( " Image$$RO$$Base = 0x%x\r\n", Image$$RO$$Base ); Uart_Printf( " Image$$RO$$Limit = 0x%x\r\n", Image$$RO$$Limit ); Uart_Printf( " Image$$RW$$Base = 0x%x\r\n", Image$$RW$$Base ); Uart_Printf( " Image$$RW$$Limit = 0x%x\r\n", Image$$RW$$Limit ); Uart_Printf( " Image$$ZI$$Base = 0x%x\r\n", Image$$ZI$$Base ); Uart_Printf( " Image$$ZI$$Limit = 0x%x\r\n", Image$$ZI$$Limit ); Uart_Printf("<***********************************************>\r\n");
二.ADS 开发流程 --------------------------------------------------------------------------
ADS 最后链接出来的是可执行文件是 AXF,它实际上是一个 ELF 的格式。因此 ADS 链接出 来的程序跟 LINUX 的应用程序结构差不多,只在一些细微的段上有差别.
* (+RO) * (0x0c000000~0x0c0003ff : Exception vector area(Nand Booting) { ;dmc.o (+RO) ;dmc.o (+RW, +ZI) ; all remaining data } ITCM 0x80000000 0x4000 { ; dmc.o (+RO) dmc_library.o (+RO) } DTCM 0x80004000 0x4000 {
切换构造输出选项ads与一般开发环境不一样的ads的项目除了有debug和release输出两个选项之外还多出了一debugrel选项它与debug的区别在debugrel只有一个基本的调试信息createpdfyouwishlineclickherebuyvirtualpdfprinter体积小一点一般我们在线调试选择debugrel的构造结果来调试切换的方法在项目窗口右边的下拉列表选择相应输出选项
如果想烧录到开发板上,需要转换成原始的 bin 文件。才能直接运行。相对于 ELF 它有两 个变化。第一 BIN 只有基本的 text/bss/data 段,没有调试信息。第二。因为 bin 要下载到 设备的。里面各段的地址是按相应地址对齐烧录的。因为两段之间很可能补一些空间的 0 空间。
ADS 命令行工具有 armcc.exe ARM C 编译器 armasm.exe ARM 汇编编译器 armcpp.exe ARM C++编译器 armlink.exe ARM 链接接器把上述编译目标文件链接成成 AXF armar.exe ARM 静态库制作工具,类似于 fromElf.exe 把 AXF 转换成 bin 格式。
AXF 文件可以直接用 ADS 的调试器 AXD 进行在线调试,(在线的意思即不断电情况下,直 接从 PC 下载,调式,运行)。
Create PDF with GO2PDF for free, if you wish to remove this line, click here to buy Virtual PDF Printer
三.ADS 快速使用手册 -----------------------------------------------------------一个 IDE 集成开发环境最重要的操作无非如下向个几操作
1.新建一个项目 2.向项目增加源码 3.切换输出结果 4.配置项目属性 5.构造程序 6.清除编译结果(make clean) 7.运行. 8.调试.
但是 ADS 1.2 仍然是很多开发人员喜欢用的裸机开发工具,因为安装后体积小,操作简单, 因此还是很多人在用。
ADS 的定位是是针对 ARM 的专用开发工具.与 gcc 以及使用 gcc 的 IDE 工具的定位有所不 同.ADS 只能使用自带的标准 C 库/C++库来进行开发.不能象 GCC 支持操作系统库.
在 ADS 程序运行中,可以用几个特殊的变量把 RO,RW 和 ZI 段的地址打印出来. 以下均是 unsigned char * 类型,在用打印时需要强制转入成 16 进制的地址显示(即用%x)
Image$$RO$$Base 表示 RO 段起始地址λ λ Image$$RO$$Limit 表示 RO 段结束地址
因此 ADS 与 gcc 的应用领域是有所差别的,ADS 主要集中比较底层的程序.由于 ADS 能直接 用 C 来控制硬件,也广泛用驱动的验证,硬件功能演示等作用. 在实际应用开发中,市面上最流行的手机方案是 MTK,展讯的方案.他们的操作系统是一个嵌 入式操作系统 Nuclues,CPU 的内核采用 ARM. 因此,MTK 方案的驱动和内核开发环境就是 ADS+Nuclues 的库为主.同时也用于应用程序开 发,但是他们手机界面程序(MMI)也能通 VC++加模拟器的方法来调试. 完整的 ADS 环境由命令行开发工具, ARM 实时库, GUI 开发环境 (Code Warrior 和 AXD) ,实用程序和支持软件组成。 有了这些部件,用户就可以为 ARM 系列的 RISC 处 理器编写和调试自己的开发应用程序了。
– DebugRel:使用该目标选项,在生成目标的时候,会为每一个源文件生成调试信息。 – Debug:使用该目标选项,在生成目标的时候,会为每一个源代码生成最完整的调试信息。 – Release:使用该目标选项,在生成目标的时候,不会生成任何调试信息。 4.配置项目属性 一般缺省项目是不能直接来编译的,往往需要对生成的目标进行配置,点击主菜单 Edit 菜 单,选择“DebugRelSetting…”(注意:这个选项会因为用户选择的不同目标而有所不同), 或者选择项目窗口的配置按钮,出现如图所示的设置窗口。
RO 段:ReadOnly 段的意思,可执行文件段,相当于 GCC 的 text 和 rodata 段 RW 段:ReadWrite 段,数据段,相当于 GCC 中的 Data 段 ZI 段,ZeroInit 段,未初始化数据段,相当于 GCC 中的 BSS 段,而且 ZI 是 RW 的一部分。
对于裸机程序,一般在链接时要指定 --ro-base,即 RO 段的起始地址,一般它就是程序最 开始段。 因为 RO 段包含数据和代码,所以 RO BASE 不一定等于可执行程序的入口.有时 ADS 里通 常还要手工指定 Image Entry Point,它即可以等于或大于 RO BASE 的地址
Image$$RW$$Base 表示 RW 段起始地址λ
Create PDF with GO2PDF for free, if you wish to remove this line, click here to buy Virtual PDF Printer
Image$$RW$$Limitλ 表示 RW 段结束地址 Image$$ZI$$Base 表示 ZI 段起始地址λ Image$$ZI$$Limitλ 表示 ZI 段结束地址 Uart_Printf("\r\n<***********************************************>\r\n"); Uart_Printf(" S3C6410 Test Program VER1.0\r\n"); Uart_Printf(" Build time is: %s %s\r\n", __DATE__ , __TIME__ ); Uart_SendString(" Mini6410 Andrew Huang \r\n");
下面我们来看下如何做如下操作,请初学者熟记几个操作.
1.新建一个项目 主菜单 File->New,里面选择 ARM Executealbe Image,表示要创建一个 axf 项目
我们在这里选择 ARM Executable Image,在“Project name:”中输入工程文件名,本为 “myled”,点击“Location:”文本 Set”按钮, 浏览 选择想要保存该工程的路径( 本例为 “D:\work”),将这些设置好之后,点击“ ,即可创建一个新的名为 myled 的工程。 注意 ADS 对中文支持非常不好,强烈建议不在放在中文路径下面
ADS 合适开发和调试如下项目 – 无操作系统的 C 程序.这个相当把 ARM 作为一个 32 单片机来使用. – 底层程序.如 bootloader – 能直接调试简单的操作系统,如 uC-OS-II,ucLinux,Nuclues – 驱动程序和硬件的验证 – 比如 LCD 屏的调试,往往先从 ADS 程序开始测试,一个新的 ARM 硬件被调试好往往也 先用 ADS 去测试
ADS 1.2 使用快速入门
一.ADS 1.2 简介 -------------------------------------------------------
ARM ADS 全称为 ARM Developer Suite 。是 ARM 公司推出集成开发工具。现在新版本 已经改名为 RealView Developer Suite.简称 RVDS .RVDS 2.2 就是 MDK. 现在 RVDS 4.0 采用 Eclipse 使用集成开发环境。
Create PDF with GO2PDF for free, if you wish to remove this line, click here to buy Virtual PDF Printer
体积小一点,一般我们在线调试选择 DebugRel 的构造结果来调试 切换的方法在项目窗口,右边的下拉列表选择相应输出选项.
ADS 的项目文件是 mcp.创建成功后会出现空项目窗口
2.向项目增加源码 把源码拷入项目目当,在项目窗按右键,选择增加文件
3.切换构造输出选项 ADS 与一般开发环境不一样的,ADS 的项目除了有 Debug 和 Release 输出两个选项之外, 还多出了一 DebugRel 选项,它与 Debug 的区别在,DebugRel 只有一个基本的调试信息,
相关文档
最新文档