这是因为工作写的一个文档,主要是我们开发人员都不会Linux不会vi也不会命令行,于是研究了一下Windows系统调试ARM Linux程序的办法,在这共享一下。

1. 概述

嵌入式Linux系统的应用程序开发,编译器一般是gcc,一般都说是要在Linux虚拟机中进行开发和编译。本文提供了一种能够在Windows系统下编译、调试Linux应用程序的方法,可大大简化Linux软件开发环境的搭建难度,保留原开发人员的操作习惯,让Linux程序开发和开发VxWorks一样方便快捷。

2. 软件包

2.1. IDE环境:EclipseIDE for C/C++ Developers

地址:

Eclipse IDE for C/C++ Developers

Eclipse下载后,无需安装配置,直接解压到program files目录即可运行,可放快捷方式到桌面。

2.2. 交叉编译工具:Linaro GCC

地址:

Linaro Releases

编译器版本选择,建议与CPU官方开发包提供的版本一致或接近,不必要追求最新版本。Windows下的编译器,命名一般为:gcc-linaro-4.9.4-2017.01-i686-mingw32_arm-linux-gnueabihf.tar.xz。带有mingw32字样的,就是Windows版的。

安装方法:

将下载的包用7zip解压到D:\gcc(winRAR似乎有问题,待确认),目录结构如下:

其中主要的几个目录位置如下:

bin/ 交叉编译工具目录

arm-linux-gnueabihf/libc/usr/include Linux user-space程序头文件目录

添加环境变量:

解压文件后,将D:\gcc\bin目录,添加到系统PATH环境变量中(系统属性-高级属性-环境变量),确保在任何位置调用arm-linux-gnueabihf-gcc均能成功。

2.3. Cygwin环境

地址:Cygwin Installation

根据安装向导进行在线安装,随本文档提供离线安装包

注意:

1、 源选择国内的某个http://edu.cn源,或网上寻找合适的国内源(如163mirror)

2、 软件包选择一定要包含“man”包,其他开发包根据需要可以以后追加

安装完成后,就可以在Windows环境使用Linux命令了

2.4. Linux API man库

地址:Index of /pub/linux/docs/man-pages

需要下载两个包:

man-pages

man-pages-posix

均可选择最新版本下载

下载后解压,将其中的man1~man7,man1p~man7p目录,复制到Cygwin安装目录下Cygwin_base/usr/share/man,如果重名则选择覆盖。

完成后,打开Cygwin终端测试:

man aio

manpthread_mutex_lock

如果能正确打开对应的帮助文档,说明安装完成。

以后开发中,可以随时通过man程序查看函数手册。

3. 目标板准备

目标板应能正常运行Linux系统,与开发机网络连通。在此基础上,确保以下功能被配置正确。本章节的准备工作,一般可由内核或rootfs维护人员处理,应用程序开发工程师一般不需要处理。

3.1. 开启SSH服务器

确保系统打开了SSH服务,一般在嵌入式Linux下,由dropbear提供该功能。

通过以下命令确认是否开启:

ps | grep dropbear

如果没有开启,需要找内核和rootfs维护人员处理。

3.2. GDB Server

远程调试依赖GDB Server功能,需要确保目标板上的GDB Server版本与开发环境中的一致,可复制位于GCC环境下的gdbserver到目标板。Windows下的gdbserver位于如下路径:

D:\gcc\bin\gdbserver

3.3. 调试临时目录

程序开发调试时,会反复地把编译好的应用程序复制到目标板的文件系统中。当目标板中Linux系统完全运行在Flash并无NFS文件系统时,下载文件的速度可能较慢,反复下载也可能导致Flash寿命提前结束。

为了提高调试效率,保证寿命,我们可以在目标板上申请一块tmpfs内存目录,调试程序都可以在该目录下进行。

这里我们约定基于tmpfs的调试目录为/run/app,后续文档中说明的应用程序调试目录均在此。

335x系统中,可修改/etc/default/volatiles/00_core,增加下面一行后自动创建app目录:

d root root 1777 /run/app none

4. 应用程序开发

4.1. Eclipse配置

Window-Preference

搜索path

在C/C++的Source Lookup Path中,添加一个File System Dir.,路径指向

D:\gcc\arm-linux-gnueabihf\libc\usr\include

并包含其子目录

4.2. 创建连接

File – New –Other

Remote SystemExplorer – Connection

创建一个连接:

连接类型为Linux:

输入HostName和IP地址:

下一步后,选择文件传输方式为SSH方式:

下一步,选择进程控制方式为通过系统shell控制

图略,同上

下一步,选择ssh.shells

图略,同上

下一步,选择ssh.terminals:

图略,同上

点击Finish完成。

测试

Window – View中打开Remote Systems窗口

右键Connect,当提示输入密码时,输入目标板用户名、密码(通常为root,密码空)

如果一切正常,可以展开SftpFiles查看目标板上的文件,右键SSH Terminals可以启动一个ssh终端。

4.3. 创建工程

新建一个工程,选择CProject

输入工程名,工程类型选择Executable—EmptyProject –Cross GCC

Cross GCC设置中,输入gcc前缀和gcc路径:

创建工程后,选择工程属性

C/C++ Build中,Builder选择内建builder:InternalBuilder

完成配置后,编译程序,应能成功:

4.4. 程序调试

打开DebugConfigurations

在C/C++ RemoteApplication下新建一个config.

在右侧配置页Main中

选择Connection为之前创建的Linux目标板连接LINUX_PMC-1308V2
远程运行程序路径,选择3.3调试临时目录中指定的调试目录,并在后面追加调试程序名:/run/app/appdemo

在Debugger选项卡中,指定gdb程序名为arm-linux-gnueabihf-gdb

配置完成后,即可点击对话框右下角Debug按钮启动调试。

剩下的工作,和Windows系统其他基于Eclipse的嵌入式开发环境下调试单片机程序、VxWorks程序没什么区别了。

Windows下ARM Linux应用程序开发环境搭建说明相关推荐

  1. 单片机(一):VScode+SDCC+Make的Windows下51(CH552)单片开发环境搭建

    CH552芯片是一款兼容 MCS51 指令集的增强型 E8051 内核单片机.CH552既然是51单片机,按照以前的惯例都是用Keil来进行开发.但是本次决定抛弃Keil的开发环境,主要原因是Keil ...

  2. 第1章 Window下VSCode的C语言开发环境搭建 (一)

    文章目录 文档视频讲解链接地址 第01章 开发环境搭建 1.1 C语言开发环境搭建 1. 常用的C语言开发环境介绍 VC++ 6.0 VS 2019 Clion DevC++ vim编辑 VSCode ...

  3. 从零开始:小程序开发环境搭建详解

    文章目录 人工智能福利文章 前言 一.了解小程序 二.小程序开发环境搭建 开发工具 开发环境 三.小程序开发入门 注册开发者账号 下载小程序开发工具 创建小程序项目 开发小程序页面 调试和测试小程序 ...

  4. 如何直接在Windows下进行ARM-Linux应用程序开发调试

    偷个懒,不安装虚拟机,直接在Windows下开发 ARM Linux应用程序. 友情提醒1:本篇适合在嵌入式软件开发已经有一定基础的读者. 1 缘由 在嵌入式行业摸爬滚打了八年有余,一直都没在Linu ...

  5. stm32mp1安装linux系统,stm32mp1linux开发环境搭建(cortex a7)

    原标题:stm32mp1linux开发环境搭建(cortex a7) 写在前面: 本文章为<STM32MP1系列教程之Cortex-A7开发篇>系列中的一篇,全系列总计11篇.笔者使用的开 ...

  6. 嵌入式开发之Qt-5.9.6应用程序开发环境搭建

    参考文档 嵌入式开发之Qt-5.9.6交叉编译(带WebEngine) Qt-5.9.6 linux安装包官方下载地址 Qt-5.9.6 linux安装包百度云下载地址 开发环境介绍 主机操作系统:U ...

  7. linux以太坊开发环境搭建

    2019独角兽企业重金招聘Python工程师标准>>> 如果你希望马上开始学习以太坊DApp开发,可以访问汇智网提供的出色的在线互动教程: 以太坊DApp实战入门教程 以太坊去中心化 ...

  8. linux服务器程序开发,怎样搭建一个linux开发服务器

    在开发过程中,必然会出现多人同时工作.协着的情况,在嵌入式开发项目中更为平常,这样可以加快项目周期,为产品上市占得时间先机.目前,使用Linux作为开发产品的操作系统情况越来越多,使用越来越广泛.为了 ...

  9. 米家插件(APP扩展程序)开发环境搭建

    1.参考官方文档:小米IoT文档与资源中心 米家插件依赖React Native环境,可以参考我的这篇文章搭建React Native开发环境 搭建React Native开发环境_dear_Wall ...

最新文章

  1. short s1 = 1; s1 = s1 + 1;和short s1 = 1; s1 += 1;的区别
  2. HTTP协议header头域
  3. (仿头条APP项目)6.点击过的新闻列表文字变灰和下拉刷新与滚动加载新闻数据
  4. 【14】全歌王歌后合集
  5. 基础算法之快速排序Quick Sort
  6. SemEval-2010任务8:成对名词之间的语义关系的多分类
  7. 关于未来世界,永生的几个方向和总结思考
  8. 删除和创建用户的脚本
  9. python导入模块_Python导入
  10. 有关风向及风向处理的笔记
  11. 智慧农业项目建设体系之质量追溯平台建设体系
  12. could not access network location \Hewlett-Packard\\
  13. mysql 求和_mysql分组求和
  14. Guice依赖注入(接口多实现)
  15. 用户增长:APP推广的五大方法
  16. MFC 的List Control控件实现可编辑
  17. 第1137期AI100_机器学习日报(2017-10-29)
  18. 某广告SDK流量加解密-响应
  19. MySQL--必知必会补充知识
  20. 云队友丨对话“中国奥格威”:不要迷失在点击率上,销售才是根本

热门文章

  1. Linux命令之dhclient,Linux中dhclient命令起什么作用呢?
  2. python signal模块作用_Python模块:signal
  3. MacOS 驱动调试笔记
  4. js字符串数组方法总结
  5. 算法导论-麻省理工公开课-百度云
  6. google2011校园招聘
  7. c语言自动刷票代码,简单刷票系统 c语言实现(转)
  8. 感知世界的最新利器、毫米波技术的继任者——超宽带(UWB)雷达技术
  9. JAVA 中的单元测试(IDEA)
  10. 企业发展最大的敌人------内耗