设为首页收藏本站

米尔科技论坛

 找回密码
 注册账号

QQ登录

只需一步,快速开始

查看: 10362|回复: 0

[DS-5] 使用DS-5 进行Linux应用开发

[复制链接]

135

主题

181

帖子

4980

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
4980
kaiyueperfect 发表于 2016-8-31 09:41:52 | 显示全部楼层 |阅读模式
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。
创建一个简单的hello world的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.       在工程名栏,输入Hello World GCC 作为你工程的工程名

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

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


                              

d.      点击 Finish 创建一个HelloWorld_GCCC工程。

  你可以在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 保存。

#include <stdio.h> 
int main(int argc, char** argv) {

      printf("Helloworld\n"); 
      return 0;

} 

什么是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控制栏的连接选项,点击  断开连接。




回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|米尔科技论坛   

GMT+8, 2019-10-21 12:13 , Processed in 0.424921 second(s), 29 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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