zoukankan      html  css  js  c++  java
  • Windows下ARM Linux应用程序开发环境搭建说明

    https://blog.csdn.net/feifansong/article/details/80255276

    这是因为工作写的一个文档,主要是我们开发人员都不会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:gccin目录,添加到系统PATH环境变量中(系统属性-高级属性-环境变量),确保在任何位置调用arm-linux-gnueabihf-gcc均能成功。

    2.3. Cygwin环境

    地址:Cygwin Installation

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

    注意:

    1、 源选择国内的某个源,或网上寻找合适的国内源(如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:gccingdbserver

    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:gccarm-linux-gnueabihflibcusrinclude

    并包含其子目录


    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程序没什么区别了。

  • 相关阅读:
    RecyclerView 数据刷新的几种方式 局部刷新 notify MD
    【图片】批量获取几万张图片
    RV BaseRecyclerViewAdapterHelper 总结 MD
    RecyclerView.ItemDecoration 间隔线
    Kotlin【简介】Android开发 配置 扩展
    Kotlin 特性 语法糖 优势 扩展 高阶 MD
    一个十分简洁实用的MD风格的UI主框架
    折叠伸缩工具栏 CollapsingToolbarLayout
    FloatingActionButton FAB 悬浮按钮
    Glide Picasso Fresco UIL 图片框架 缓存 MD
  • 原文地址:https://www.cnblogs.com/xiang--liu/p/13050854.html
Copyright © 2011-2022 走看看