Linux Application Debugging Using DS-5

简介

这个教程主要是带你创建一个简单的“Hello world”程序,然后加载到DS-5提供的Cortex- A9的固定虚拟平台(FVP),平台运行嵌入式Linux系统。

预准备

这个教程假设您已经安装了ARM DS-5并安装了license,如果没有,请学习Getting Started with ARM DS-5安装DS_5并获取License。

创建一个简单的helloworld的Linux程序,

在DS-5中创建一个LinuxC程序:

创建一个新的C工程并使用DS-5自带的GCC工具链。

配置好DS-5GCC工具链编译器和链接器,生成与FVP中ARM嵌入式Linux系统对应的编译选项。

创建源文件并编译这个文件生成相映红的应用程序。

创建 一个新工程

1.      打开DS-5,在DS-5的工具栏中选择select File> New > C Project 弹出相应的C工程对话框。

2.在C工程对话框中:

a.在工程名栏,输入HelloWorldGCC作为你工程的工程名

b.      在 Project type, s选择 Executable >Empty Project。

c.       在 Toolchains选项中,选择GCC 4.x[arm-linux-gnueabihf] (DS-5 built in)选项。

d.点击Finish创建一个HelloWorld_GCC的C工程。

你可以在ProjectExplorer中查看工程。

配置和设置新工程

1.      在ProjectExplorer 视图中, 右键HelloWorld_GCC 工程,选择Properties。

小贴士:你也可以通过在DS-5的工具栏打开project的properties选项,在主工具栏选择Project >Properties.

2.      选择C/C++ Build >Settings > Tool Settings 对话框.

a.       Y你需要特定的相关的选项,在GCC C Compiler 4[arm-linux-gnueabihf] > Miscellaneous > Other flags:

§DS-5 v5.21.1和以前的支持软浮点文件系统。所以输入:

-marm -march=armv4t -mfloat-abi=soft

§DS-5 v5.22及以后的版本支持硬浮点文件系统,所以输入:

-marm-mfloat-abi=hard

这些标志指示GCC编译器编译生成二进制文件与特定的架构和文件系统相兼容。

更多关于ARM GCC编译器的信息和编译选项请参照,请看:http://gcc.gnu.org/onlinedocs/gcc/ARM-Options.html

b.在HelloWorld_GCC工程的配置对话框,单机OK应用这个设置关闭对话框。

源文件并编译工程

1.      在ProjectExplorer 视图中,右键单击HelloWorld_GCC 工程并选择 New > SourceFile.

2.在新的源文件对话框中,输入文件名HelloWorld_GCC.c。

3.      点击Finish完成创建,打开文件并编辑。Click  tocreate the source file and open it in the code editing view.

源文件也可以在在Project Explorer视图中查看,在HelloWorld_GCC中。

4.添加下列代码在新文件中,使用快捷键CTRL+S保存。

什么是argc和argv?

argc和argv是C或C++中用来将命令行的参数传递给main函数。

argc是argv的指针数

变量命名为argc(argumentcount)和argv(argumentvector)是通用命名规则

5.      在ProjectExplorer 视图中, 右键点击HelloWorld_GCC 工程并选择 Build 工程。

这将生成Linux可执行文件和所需的支持文件。

Debug条目下的文件夹包含调试所需的额外文件。

在Fixed Virtual Platform (FVP) Model上调试Linux程序。

当你创建了工程并编译了代码,启动调试器在DS-5提供的Fixed Virtual Platform(FVP)运行程序。

在这个教程里,我们使用DS-5提供的FVP_VE_Cortex-A9x4。

创建DS-5 Debug Configuration和连接FVP Model

1.      在 DS-5菜单栏,选择Run > DebugConfigurations.

2.在Debug Configurations对话框中:

a.选择DS-5 Debugger.

b.      点击New launchconfigurations 按钮。

这将创建一个新的DS-5调试配置,这将显示各种需要特殊设置的的选项,从而将您的应用程序加载到目标板中。

3.      在DebugConfigurations 对话框中:

a.创建一个新的配置选项。例如名字HelloWorld_Linux_FVP.

b.      在Connection t栏中, 选择ARM FVP (Installedwith DS-5) > Cortex-A9x4 pre-configured to boot ARM Embedded Linux >Linux Application Debug > Start gdbserver and debug target residentapplication。

默认情况,你的工作区相关路径是相关的HOST挂载点,这个位置用于目标板挂载区的可读写挂载点上。

c.       在 Files 对话框,在 TargetConfiguration > Application on target 区域 输入/writeable/HelloWorld_GCC/Debug/HelloWorld_GCC.

这个指定的HelloWorld_GCC应用将会挂载在目标板的/writeable/HelloWorld_GCC/Debug/目录下。

d.      在 Files对话框中, 选择 Load symbolsfrom file, 并选择工作目录。

e.在Open对话框,选择Debug文件夹下HelloWorld_GCC应用。

f.       点击 OK

这个设置的路径下的文件包含需要的symbols信息。

g.     选择Debugger 栏, 选择Debug from entry point。

h.点击Debug加载应用程序到目标板上,加载调试信息到调试器中。

i.       I在确认视图对话框出现时,点击 Yes.

DS-5连接FVP model,,加载Linux到FVP model,,并显示连接状态到Debug Control视图。

应用程序加载到目标板上,停在entry point,准备进一步操作。

其他的视图将显示其他的相关调试连接信息。

例如:

·        Commands 视图将显示调试器的输出的信息,也可以使用这个视图输入DS-5 命令。

·        C/C++ 编辑器视图显示C, C++, or makefile的内容。当您编辑这些内容的时候他们就会更新。

·        反汇编视图显示了加载的程序在内存中的地址和汇编指令。

指示了你的程序在代码中停止的位置。在这个例子中,他停止在main()函数中。这个视图显示了其他的信息使你能够了解代码的细节。

·         Memory视图显示了代码怎么存储在目标内存中的。例如,去查看程序中字符串 Hello World 怎样存在内存中的。

1.打开Memory视图。

2.在地址栏中输入,0x00008440并回车视图将会显示目标板内存中的内容。

3.        标记关键字符串 Hello World查看他们ASCII 编码值。

Memory视图显示代码的16进制值,旁边页显示相应的代码在内存中ASCII码值

·        点击

  运行应用。

你可以在App Console查看应用输出情况。

单步执行程序

使用Debug提供的控制功能实现单步执行程序。

-点击继续执行代码

-点击中断或者暂停执行的代码

-点击执行代码

-点击执行过该函数

-点击跳出执行的函数

-这是一个开关,选择这个是你想让以上控制执行汇编行还是C源码行。

断开调试连接

想要断开调试连接,你可以右键选择连接工程并选择selectDisconnect fromTarget或者选择Debug控制栏的连接选项,点击断开连接。

linux上的ds命令,使用DS-5 进行Linux应用开发相关推荐

  1. Linux上的free命令详解

    Linux上的free命令详解 转自: http://www.cnblogs.com/coldplayerest/archive/2010/02/20/1669949.html 解释一下Linux上f ...

  2. Apache RocketMQ在linux上的常用命令

    Apache RocketMQ在linux上的常用命令 进入maven安装后的rocketmq的bin目录  1.启动Name Server  2.启动Broker 3.关闭Name Server 4 ...

  3. php 运行外部程序_PHP在linux上执行外部命令的方法

    目录: 一.PHP中调用外部命令介绍 二.关于安全问题 三.关于超时问题 四.关于PHP运行linux环境中命令出现的问题 一.PHP中调用外部命令介绍 在PHP中调用外部命令,可以用,1>调用 ...

  4. 安卓开发 登录用户信息缓存_在Linux上使用finger命令查询登录用户信息

    请关注本头条号,每天坚持更新原创干货技术文章. 如需学习视频,请在微信搜索公众号"智传网优"直接开始自助视频学习 1. 前言 本文主要讲解finger命令的作用和日常使用案例. f ...

  5. linux+tar怎样解压,如何在Linux上使用tar命令解压和压缩文件

    linux上的tar命令通常用来创建名为.tar.gz或.tgz的归档文件,也被称为"压缩包".该命令有大量的选择,但你只需要记住几个字母来快速创建tar归档. tar命令可以提取 ...

  6. linux命令中xargs,在Linux上使用xargs命令的详细教程

    大家好,我是良许. 在使用 Linux 时,你是否遇到过需要将一些命令串在一起,但是其中一个命令不接受管道输入的情况呢?在这种情况下,我们就可以使用 xargs 命令. xargs 可以将一个命令的输 ...

  7. Linux 上配置网络设备命令举例

    Linux 上配置网络设备命令举例 PS:本来内容来自http://www.ibm.com/developerworks/cn/linux/1310_xiawc_networkdevice/ 以 Re ...

  8. linux压缩命令bzip2,Linux上常用压缩命令gzip,bzip2,zip/unzip

    Linux上常用压缩命令gzip,bzip2,zip/unzip 1. gzip gzip生成的压缩文件为*.gz 格式: gzip [-cdtv#] file 主要参数: -c :将压缩的数据输出到 ...

  9. linux上 用unzip命令解压带密码保护的 zip 文件报错 unsupported compression method 99

    1.问题: Linux上用 unzip 命令解压带密码保护的 zip 文件报错 unsupported compression method 99 2.解决办法: mac自带的解压工具,无法解密加密的 ...

  10. Linux上通过dd命令低格硬盘

    Linux上通过dd命令低格硬盘 背景 格式化脚本以及查询进度的方法 背景 手里有几台租借的服务器需要归还,为了保护数据不被泄露,需要对服务器数据盘(除系统盘外其他所有硬盘)进行低级格式化. 格式化脚 ...

最新文章

  1. python 排序函数 sort sorted 简介
  2. html制作固定列的表格,带固定列的简单HTML表格
  3. 如何在JAVA程序中使用Struct一次传入多条数据给Oracle的存储过程
  4. java反射随意值_Java反射笔记
  5. 挺起你作为一个中国人的脊梁骨
  6. 神马是代码简单的cmd模式,这就是!
  7. MongoDB C#:如何将包含DateTime的JSON反序列化为正确的BsonDocument DateTime值
  8. jsp数据交互(一),九大内置对象
  9. Using Cobbler Web Interface
  10. re 模块, 正则表达式 \w+\d+ 的重复问题引发的题目解析
  11. 【oracle】changePerm.sh
  12. python自动生成报告_python实现自动生成oracle awr报告
  13. 微软出品 Remote Desktop for Mac(远程连接工具) 汉化版
  14. 教你如何弹好吉他-合理的安排你的练习时间
  15. 又看了一遍鲁迅的《祝福》
  16. matplotlib画图并设置图片大小
  17. 常用的大功率电阻有哪些,电阻功率降额设计要注意什么
  18. ios 扇形 按钮_iOS开发教程之扇形动画的实现
  19. QT学习11:clicked和toggled信号
  20. java+selenium,40行代码完成支付宝账单爬取

热门文章

  1. (七)OpenCV | 色度图
  2. xctf crackme
  3. html怎么制作壁纸,CSS3制作皮卡丘动画壁纸的示例
  4. RapidMiner介绍与实践(三)K-Means
  5. AutoJs学习-QQ批量加好友
  6. Matlab Gramm绘图工具箱
  7. 海量数据处理的方法总结
  8. [转] 如何把书上的字弄到电脑
  9. 有盘和无盘服务器,网吧系统的终极解决之道:无盘系统+有盘(转)
  10. pxe无盘服务器教程,[教程]Synology+PXE挂载iSCSI网络无盘启动Win7(08.04更新)