Windows下ARM Linux应用程序开发环境搭建说明
这是因为工作写的一个文档,主要是我们开发人员都不会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应用程序开发环境搭建说明相关推荐
- 单片机(一):VScode+SDCC+Make的Windows下51(CH552)单片开发环境搭建
CH552芯片是一款兼容 MCS51 指令集的增强型 E8051 内核单片机.CH552既然是51单片机,按照以前的惯例都是用Keil来进行开发.但是本次决定抛弃Keil的开发环境,主要原因是Keil ...
- 第1章 Window下VSCode的C语言开发环境搭建 (一)
文章目录 文档视频讲解链接地址 第01章 开发环境搭建 1.1 C语言开发环境搭建 1. 常用的C语言开发环境介绍 VC++ 6.0 VS 2019 Clion DevC++ vim编辑 VSCode ...
- 从零开始:小程序开发环境搭建详解
文章目录 人工智能福利文章 前言 一.了解小程序 二.小程序开发环境搭建 开发工具 开发环境 三.小程序开发入门 注册开发者账号 下载小程序开发工具 创建小程序项目 开发小程序页面 调试和测试小程序 ...
- 如何直接在Windows下进行ARM-Linux应用程序开发调试
偷个懒,不安装虚拟机,直接在Windows下开发 ARM Linux应用程序. 友情提醒1:本篇适合在嵌入式软件开发已经有一定基础的读者. 1 缘由 在嵌入式行业摸爬滚打了八年有余,一直都没在Linu ...
- stm32mp1安装linux系统,stm32mp1linux开发环境搭建(cortex a7)
原标题:stm32mp1linux开发环境搭建(cortex a7) 写在前面: 本文章为<STM32MP1系列教程之Cortex-A7开发篇>系列中的一篇,全系列总计11篇.笔者使用的开 ...
- 嵌入式开发之Qt-5.9.6应用程序开发环境搭建
参考文档 嵌入式开发之Qt-5.9.6交叉编译(带WebEngine) Qt-5.9.6 linux安装包官方下载地址 Qt-5.9.6 linux安装包百度云下载地址 开发环境介绍 主机操作系统:U ...
- linux以太坊开发环境搭建
2019独角兽企业重金招聘Python工程师标准>>> 如果你希望马上开始学习以太坊DApp开发,可以访问汇智网提供的出色的在线互动教程: 以太坊DApp实战入门教程 以太坊去中心化 ...
- linux服务器程序开发,怎样搭建一个linux开发服务器
在开发过程中,必然会出现多人同时工作.协着的情况,在嵌入式开发项目中更为平常,这样可以加快项目周期,为产品上市占得时间先机.目前,使用Linux作为开发产品的操作系统情况越来越多,使用越来越广泛.为了 ...
- 米家插件(APP扩展程序)开发环境搭建
1.参考官方文档:小米IoT文档与资源中心 米家插件依赖React Native环境,可以参考我的这篇文章搭建React Native开发环境 搭建React Native开发环境_dear_Wall ...
最新文章
- short s1 = 1; s1 = s1 + 1;和short s1 = 1; s1 += 1;的区别
- HTTP协议header头域
- (仿头条APP项目)6.点击过的新闻列表文字变灰和下拉刷新与滚动加载新闻数据
- 【14】全歌王歌后合集
- 基础算法之快速排序Quick Sort
- SemEval-2010任务8:成对名词之间的语义关系的多分类
- 关于未来世界,永生的几个方向和总结思考
- 删除和创建用户的脚本
- python导入模块_Python导入
- 有关风向及风向处理的笔记
- 智慧农业项目建设体系之质量追溯平台建设体系
- could not access network location \Hewlett-Packard\\
- mysql 求和_mysql分组求和
- Guice依赖注入(接口多实现)
- 用户增长:APP推广的五大方法
- MFC 的List Control控件实现可编辑
- 第1137期AI100_机器学习日报(2017-10-29)
- 某广告SDK流量加解密-响应
- MySQL--必知必会补充知识
- 云队友丨对话“中国奥格威”:不要迷失在点击率上,销售才是根本