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

  • 相关阅读:
    企业生产环境不同业务linux系统分区方案
    linux 文件 s 权限
    shell中的命令与特殊符号
    Linux数组基础
    shell脚本学习(1)
    文件的压缩与打包
    Linux 磁盘管理基础命令df,du,fdisk,mke2fs
    mkpasswd的使用
    P1080 国王游戏
    P1315 观光公交
  • 原文地址:https://www.cnblogs.com/xiang--liu/p/13050854.html
Copyright © 2011-2022 走看看