如何直接在Windows下进行ARM-Linux应用程序开发调试
偷个懒,不安装虚拟机,直接在Windows下开发ARM Linux应用程序。友情提醒1:本篇适合在嵌入式软件开发已经有一定基础的读者。1 缘由在嵌入式行业摸爬滚打了八年有余,一直都没在Linux进行...
偷个懒,不安装虚拟机,直接在Windows下开发
ARM Linux应用程序。
友情提醒1:本篇适合在嵌入式软件开发已经有一定基础的读者。
1 缘由
在嵌入式行业摸爬滚打了八年有余,一直都没在Linux进行嵌入式软件开发。因为之前都是开发工业领域的产品,对于人机交互、网络应用、文件管理等方面的需求并不迫切,此外受限于成本、行业领域专用芯片以及实时性的要求,所以开发模式一般都是裸跑或者移植轻量级的RTOS(以FreeRTOS)进行简单的任务管理。
刚好前一阵需要在ARM Linux下进行应用程序的开发,所以摸索了开发模式,把一些经验和感悟分享下。
友情提醒2:此篇不涉及Linux底层驱动开发和移植,只讲在已经移植好Linux内核的目标板上开发应用程序的方法。
友情提醒3:市面上已经有许多专业做ARM Linux核心板的厂家,并已经做好了外围电路和移植好了比较稳定的Linux内核,如果读者朋友只想快速开发产品的应用程序,没必要自己从零开始设计ARM板电路,移植Linux系统,编写底层驱动等,直接购买ARM-Linux核心板,专注于应用层的开发即可。
2 必备基础概念-万物皆文件
在切入主题之前,先从Linux的万物皆文件说起。因为这个是习惯在Windows下开发的工程师们要立马扭转过来的观念。不要问我为什么,咱啥也不敢说,啥也不知道,要问就去问Linux本人吧。
Linux 中所有内容都是以文件的形式保存和管理的,普通文件是文件,目录(Windows 下称为文件夹)是文件,硬件设备(键盘、监视器、硬盘、打印机)是文件,就连套接字(socket)、网络通信等资源也都是文件。
这样做最明显的好处是,开发者仅需要使用一套 API 和开发工具即可调取 Linux 系统中绝大部分的资源。举个简单的例子,Linux 中几乎所有读(读文件,读系统状态,读 socket,读 PIPE)的操作都可以用 read 函数来进行;几乎所有更改(更改文件,更改系统参数,写 socket,写 PIPE)的操作都可以用 write 函数来进行。---上述这段话摘自网路,供大家参考理解。
3 必备基础概念-应用程序开发流程与方法
以下图片摘自ZLG 《嵌入式Linux开发教程 (上册)》
开发模型
开发的一般步骤
下文提到的主机为开发人员电脑的Windows系统,目标板即为ARM Linux板。后续不再赘述。另外需要注意的是,如果需要直接在Windows下与目标板进行远程调试,目标板的Linux内核需要具备SSH功能。
4 Windows下环境搭建
最开始完整跑了一下全过程:使用windows下安装VMware,加载Linux镜像创建Linux虚拟机,然后在虚拟机下使用VIM编辑代码,编译生成执行文件,接着传送到ARM-Linux核心板中运行调试。因为之前都是Windows下开发,所以切换到Linux下不太适应,尤其经常需要使用Terminal进行命令操作。在命令不熟悉的情况下,开发效率较低。后来偶然发现原来在Windows平台下,不使用虚拟机也可以搭建开发所需环境, 省去了来回折腾和Makefile的撰写。
友情提醒4:如果读者朋友是专注于ARM-Linux开发,建议还是在Linux下进行开发。
下文的提到的搭建方法来源自ZLG《嵌入式Linux开发教程 (上册)》,该书籍可以前往书店购买或者公众号对话框回复“Linux环境搭建”获取部分章节。
-
安装交叉编译环境:arm-none-linux-gnueabi
已经有大神汇总了安装方法和下载链接:
https://blog.csdn.net/guodeqiangde/article/details/78239408
需要注意的是,arm-none-linux-gnueabi中的libstdc++.so.6的版本要与目标板的一致,否则主机中编译生成的执行文件copy到目标板的时候会报如下错误
目标板中查看该版本的方法如下:
建议主机中先安装此版本(比较老的版本,够用即可):https://pan.baidu.com/s/1kTkNbpX
安装完成后记住你安装到了哪个目录,后续Eclipse中创建工程时需要选择该路径。
-
安装JDK:根据自己系统的位数,选择合适Java SE Development Kit进行安装,一路next即可。
-
安装Eclipse IDE for C/C++ Developers:
直接去官网下载即可https://www.eclipse.org/downloads/
5 利用Eclipse创建并编译工程
参看《嵌入式Linux开发教程 (上册)》章节10.5,不再赘述一般性的内容,这里补充一点:
工程创建好以后,编译选项有一处需要修改,否则会报:g/g++ not found之类的错误
6 将编译生成的可执行文件加载到目标板并远程调试
参看《嵌入式Linux开发教程 (上册)》章节10.5,不再赘述一般性的内容,这里补充两点:
1. 目标板与主机需要在同一个网段
2. Debug选项中,红框处默认会关联一个不存在gdb调试文件,会报错,直接删除留空即可,
关注公众号,后台回复“Linux环境搭建”获取嵌入式Linux开发教程 (上册)。
作者:跨界程序员Vincent
更多推荐
所有评论(0)