5.Eclipse集成开发环境

5.Eclipse集成开发环境

Eclipse集成开发环境不仅可以编译裸机工程,还可以调试整个裸机工程,这样当程序异常的时候,可以更加有效的进行修改。接下来就是搭建整个eclipse集成环境:这个调试环境的框架如下图1-1:

图1-1

从上面的框架图看到,要实现eclipse在线调试裸机程序,需要安装的软件是eclipse+CDTJLink驱动GDB调试软件,需要连接的硬件是JLink连接pc机和开发板

注意:为了避免干扰,最好对NandFlash进行格式化:图1-2:

然后选择y:

图1-2

格式化NandFlash不是必须的,只是为了更好确定因素。上面是格式化的过程。格式好了之后重新设置开发板从NandFlash启动。

安装GDB Server:

在配套资料的ARM-Tools文件夹里有GDB软件:图1-3:

图1-3

arm-linux-gdb:

1.解压命令:

tar -zxvf arm-linux-gdb-7.5.tar.gz,然后进入该文件夹,执行build-all:./build-all进行安装:图1-4:

图1-4

可以打开刚才运行的sh脚本看看做了哪些工作:图1-5:

#/bin/sh

 

rm -fr gdb-7.5

rm -r /opt/arm-linux-gdb/

 

tar xvzf gdb-7.5.tar.gz

cd gdb-7.5

 

./configure --target=arm-linux --prefix=/opt/arm-linux-gdb/ -v

 

make && make install

 

cd /opt/arm-linux-gdb/

图1-5

该脚本的功能是首先强制删掉当前目录gdb-7.5,删掉/opt/arm-linux-gdb/文件夹。确保环境里没有干扰因素。然后解压当前目录里的gdb-7.5.tar.gz。然后进入解压生成的文件夹gdb-7.5。接着进行gdb配置,执行./configure --target=arm-linux --prefix=/opt/arm-linux-gdb/ -v产生Makefile。接着就是执行make进行编译,最后执行make install进行安装。安装好了之后切换到arm-linux-gdb的目录。

 

解压安装完成之后,会在/opt/的目录下生成GDB的安装文件,在该文件夹的bin文件夹里的arm-linux-gdb就是调试工具:图1-6:

图1-6

上面完成了arm-linux-gdb的安装,还需要对该工具进行环境变量的配置,才方便使用。打开/etc/profile配置文件:vim /etc/profile。在最后arm-linux-gcc环境的配置的前面加上:

export PATH=$PATH:/opt/arm-linux-gdb/bin。注意必须是在arm-linux-gcc的前面配置。这是因为工具链里面也有arm-linux-gdb工具。为了确保使用的是现在安装的arm-linux-gdb。图1-7:

该版本是6.8的:

图1-7

测试一下安装是否成功:在命令行执行:arm-linux-gdb,看到刚才安装的gdb是7.5版本的。图1-8:

图1-8

 

安装JLink软件:

先解压:tar -zxvf JLink_Linux_V434a.tgz。图1-9:

图1-9

 

 

解压完成时候进入该文件夹:图1-10:

图1-10

接下来就是把对应的文件拷贝到对应的文件夹。相当于安装:图1-11:

图1-11

由于我前面已经装了一次,所以直接覆盖即可。这样就安装好了JLink了。从前面知道,当安装好了JLink之后,就可以来连接开发板了。下面进行测试。

 

首先是给开发板上电,图2-1:

图2-1

 

 

 

 

给开发板上电后,把JLink接到开发板的JLink接口:图2-2:

图2-2

这样硬件就连接好了。接下来就是把JLink从windows 7拉到虚拟机:

在vbox虚拟机的右下角的usb口里找到JLink,把它从windows拉到虚拟机:图2-3:

图2-3

然后运行一下JLinkGDBServer,看看能够检测到内核:图2-4:

图2-4

上面看到JLink成功连接了开发板,检测到了内核ARM11.

 

 

 

 

安装eclipse:

所谓的安装就是解压:tar -zxvf eclipse-cpp-helios-SR2-linux-gtk.tar.gz -C /usr/local/。完成如下图2-5:

图2-5

解压完成后就是等于安装完成。接下来运行eclipse,第一次运行的时候会出现指定默认工程路径的选项,我选的是是:图2-6:

cd /usr/local/eclipse

[root@FORFISH eclipse]# ./eclipse

图2-6

当然在上面中你也可以选择你要保存工程的目录。然后点击OK即可。这样就启动了eclipse:图2-7:

图2-7

这要eclipse就安装好了。这只是简单的安装好了。为了eclipse能够协调JLink,arm-linux-gdb等工具来方便裸机开发工作。必须安装一个插件。所以需要虚拟机电脑可以连接网络。

 

安装插件CDT:

打开eclipse后,选择工具栏的Help,在下拉菜单选择Install New Software:会出现Install窗口。图2-8:

图2-8

 

然后在Work with框里输入插件的位置:http://opensource.zylin.com/zylincdt。输入完成之后回车,会看到要下载的插件:图2-9:

图2-9

然后选中插件点击Next:图2-10:

图2-10

 

再点击Next:图2-11:

图2-11

接着选中我接受协议,然后点击Finish,就进行安装了:图2-12:

图2-12

 

 

 

安装图2-13:

图2-13

安装好了执行需要重启:图2-14,选择Restart Now。

图2-14

这样就安装好了插件。

 

 

 

 

 

 

 

 

 

 

 

 

 

Eclipse裸机调试:

测试eclipse裸机调试的代码在:/home/samba/OK6410_bare,所以直接导入eclipse即可。选择eclipse的工具栏File->New->Makefile Project with Existing Code.图3-1:

图3-1

在新打开的窗口里选择Browse,找到已经存在工程的目录:然后点右下角的OK:图3-2:

图3-2

回到原来的界面,点击Finish即可:图3-3:

图3-3

这样就把一个工程导入到了eclipse里面。图3-4:

图3-4

 

 

上面成功导入一个工程。

接下来就是编译了:

编译也很简单,用鼠标,选择该工程名字,右键,然后选择Build project,进行编译:图3-5:

图3-5

其实eclipse的编译是调用了工程里面的Makefile文件。

上面就编译好了,接下来就是利用刚刚安装的CDT插件来调试该工程。调试之前需要配置一下调试参数。

参数设置:

首先是点击eclipse的工具栏下面有一个像虫子的图标:点击它的下拉箭头之后会看见选项,选择Debug Configurations。图3-6:

图3-6

点击之后会出现下面的界面:图3-7:

图3-7

然后双击Zylin Embedded debug (Native),会生成一个默认的调试配置,名字是OK6410_bare Default,会出现下面的窗口。图3-8:

图3-8

然后在C/C++ Application里选择Browse,找到要调试的过程,然后选择过程里的elf文件。点击OK图3-9:

图3-9

然后切换到Debugger选项窗口。把默认停在main函数的选项去掉。把GDB debugger改为:arm-linux-gdb:图3-10:

改后:

图3-10

 

无论调试那一款开发板,在裸机调试之前都必须会开发板进行初始化,这里,初始化的命令,我使用的是飞凌标配的OK6410的,它的名字叫init-6410:图3-11:

图3-11

Init-6410的内容:

# tiny6410_config

# connect to the J-Link gdb server

target remote localhost:2331

# Set JTAG speed to 30 kHz

monitor endian little

monitor speed 30

# Reset the target

monitor reset

monitor sleep 10

#

# CPU core initialization (to be done by user)

#

# Set the processor mode

monitor reg cpsr = 0xd3

#config MMU

#flush v3/v4 cache

monitor cp15 7, 7, 0, 0 = 0x0

#/* flush v4 TLB */

monitor cp15 8, 7, 0, 0 = 0x0

#disable MMU stuff and caches

monitor cp15 1, 0, 0, 0 =0x1002

#Peri port setup

monitor cp15 15, 2, 0, 4 = 0x70000013

#disable watchdog

monitor MemU32 0x7e004000 = 0x00000000

monitor sleep 10

#disable interrupt

monitor MemU32 0x71200014 = 0x00000000

monitor MemU32 0x71300014 = 0x00000000

monitor MemU32 0x7120000C = 0x00000000

monitor MemU32 0x7130000C = 0x00000000

monitor MemU32 0x71200F00 = 0x00000000

monitor MemU32 0x71300F00 = 0x00000000

#set clock

monitor MemU32 0x7e00f900 = 0x0000801e

monitor MemU32 0x7e00f000 = 0x0000ffff

monitor MemU32 0x7e00f004 = 0x0000ffff

monitor MemU32 0x7e00f020 = 0x01043310

monitor MemU32 0x7e00f00C = 0xc2150601

monitor MemU32 0x7e00f010 = 0xc2150601

monitor MemU32 0x7e00f024 = 0x00000003

monitor MemU32 0x7e00f014 = 0x00200102

monitor MemU32 0x7e00f018 = 0x00000000

monitor MemU32 0x7e00f01C = 0x14000007

#config sdram

monitor MemU32 0x7e00f120 = 0x00000008

monitor MemU32 0x7e001004 = 0x00000004

monitor MemU32 0x7e001010 = 0x0000040f

monitor MemU32 0x7e001014 = 0x00000006

monitor MemU32 0x7e001018 = 0x00000001

monitor MemU32 0x7e00101c = 0x00000002

monitor MemU32 0x7e001020 = 0x00000006

monitor MemU32 0x7e001024 = 0x0000000a

monitor MemU32 0x7e001028 = 0x0000000c

monitor MemU32 0x7e00102c = 0x0000018f

monitor MemU32 0x7e001030 = 0x0000000c

monitor MemU32 0x7e001034 = 0x00000002

monitor MemU32 0x7e001038 = 0x00000002

monitor MemU32 0x7e00103c = 0x00000002

monitor MemU32 0x7e001040 = 0x00000002

monitor MemU32 0x7e001044 = 0x00000013

monitor MemU32 0x7e001048 = 0x00000013

monitor MemU32 0x7e00100C = 0x00010012

monitor MemU32 0x7e00104C = 0x00000b45

monitor MemU32 0x7e001200 = 0x000150f8

monitor MemU32 0x7e001304 = 0x00000000

monitor MemU32 0x7e001008 = 0x000c0000

monitor MemU32 0x7e001008 = 0x00000000

monitor MemU32 0x7e001008 = 0x00040000

monitor MemU32 0x7e001008 = 0x00040000

monitor MemU32 0x7e001008 = 0x000a0000

monitor MemU32 0x7e001008 = 0x00080032

monitor MemU32 0x7e001004 = 0x00000000

# Setup GDB for faster downloads

#set remote memory-write-packet-size 1024

set remote memory-write-packet-size 4096

set remote memory-write-packet-size fixed

monitor speed 12000

break _start

load

把这些内容拷贝到Commands窗口里,然后点击Apply,再点击Close关闭窗口:图3-12:

图3-12

到这里才配置好了整个工程的工作。呼呼……接下来运行一下。

 

在启动调试之前,确保JLInk成功连接开发板:图4-1:

图4-1

然后再次点击:Debug Configuretions:图4-2。

图4-2

双击配置工程的名字:OK6410_bare Defunct:如果裸机调试启动成功的话,eclipse会自动跳转到Debug模式:图4-3:

图4-3

第一次界面有点乱,可以自己调整:调整后的界面:图4-4:

图4-4

可以看见界面下面红黑交替的就是在Conmands配置的,初始化板子的硬件平台的。接下来就可以真正地进行裸机单步调试了。

 

 

调试:

在菜单栏的Run里有各种调试命令:图5-1:

图5-1

可以看到单步调试可以按F5(进入函数调试),F6(不进入函数)等。

按下F5:进入reset函数,图5-2:

在按F5,进入set_svc函数:图5-3:

图5-3

在运行的过程中,可以查看寄存器,参数等信息的变化:图5-4:

图5-4

转化为16进制的:选中要转换的参数,右键,选择Format->Hexadecimal.图5-5:

图5-5

上面就实现了eclipse裸机调试工程了。当完成调试之后,不要直接关掉eclipse,先关掉调试,红色方块。因为这样,当你需要在再次调试的时候,直接选择调试图标,再选择调试工程即可:图5-6:

图5-6

点击上面的调试工程名就可以实现调试了。不用才去配置。到这里,一个简单的工程的调试操作完成了。看是一个简单的过程,做个笔记也做了半天。菜鸟加油。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

接下来就是试一试直接点击调试里的工程名:正确启动图6-1:

图6-1

接下来试着跳转到light_led函数去点灯:图6-2:

这一次为了看到效果,把mov r0,#0xe改为mov r0,#0x3.

还没运行这一句之前:

图6-2

运行之后:

图6-3

 

记得退出按:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

最后就是,eclipse快捷方式的创建,因为前面老是要经过命令行去启动eclipse,有点烦:创建的过程如下:图6-4:

图6-4

如上,鼠标右键,选择Create Launcher..,会出现:图6-5:

图6-5

填写好信息,在Command的Browse里选择你自己的eclipse可执行文件:图6-6:

图6-6

然后点击Open,得到下图6-5:

图6-5

最后点击OK,这样在桌面就多了一个图标,这就是eclipse的快捷方式。直接双击就可以打开eclipse软件:图6-6:

图6-6

今天的笔记到此了。明天继续。

转载于:https://www.cnblogs.com/FORFISH/p/5188684.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/17128.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[ChatGPT 勘误] 关于 CL_WB_PGEDITOR 的用途

ChatGPT 对于 SAP ABAP 里 CL_WB_PGEDITOR 这个工具类用途的回答: 在 ABAP 中,CL_WB_PGEDITOR 是一个用于管理 SAP Web Dynpro ABAP 页签编辑器(Page Editor)的类。 Page Editor 是一个用于设计和维护 Web Dynpro ABAP 应用程序页…

我的周刊(第070期)

我的信息周刊,记录这周我看到的有价值的信息,主要针对计算机领域,内容主题极大程度被我个人喜好主导。这个项目核心目的在于记录让自己有印象的信息做一个留存以及共享。 🎯 项目 streamlit[1] 用 Python 快速构建数据应用&#x…

ChatGPT应用模板:英文视频转文章

正文共 800字,阅读大约需要 3 分钟 视频翻译、内容制作人群必备技巧,您将在3分钟后获得以下超能力: 1.高效英文字幕翻译校对 Beezy评级 :B级 * 经过简单的寻找, 大部分人能立刻掌握。主要节省时间。 推荐人 | 互联网…

chatgpt赋能python:Python调取摄像头:如何使用Python编程语言进行视频采集和分析?

Python调取摄像头:如何使用Python编程语言进行视频采集和分析? Python是一种广泛使用的编程语言,特别是在数据科学和人工智能方面。但是,很少有人知道Python也可以与摄像头通信,以便进行视频分析和处理。 在本文中&a…

AIGC+实时云渲染:开启3D内容生态的黄金时代

AIGC技术革命下,我们的3D内容生态将会迎来怎样的变化格局? 实时云渲染 / Cloud XR技术将在AIGC大潮中扮演什么样的角色? 作为云基础设施厂商,我们有哪些机会可以抓住? 这些问题已在XR产业、3D内容行业以及软件行业内…

用chatgpt设计调用chatgpt的api进行内容交互

chatgpt真是极大提高了开发的效率,现在完全离不开了,只要提出你要的需求,很快就生成你想要的代码,几乎不用修改。 比如提出“设你是python开发工程师,通过chapgpt的api实现在一个页面里输入内容并返回结果”&#xff…

前苹果工程师吐槽:“Siri” 代码过时且复杂,不可能变得像 ChatGPT 一样强大...

【CSDN 编者按】在将生成式人工智能引入 Siri 上,苹果的前工程师约翰伯基并不看好,他认为 Siri 不可能像 ChatGPT 一样强大。 原文链接:How Siri, Alexa and Google Assistant Lost the AI Race - The New York Times (nytimes.com) 未经授权…

【ChatGPT】《介绍和对比ChatGPT的两种扮演法指令模式》- 知识点目录

《介绍和对比ChatGPT的两种扮演法指令模式》 【扮演法】的两种常用指令模式 1\ 4A (网上常见): Actor (角色) – Aim (目标) – Ask (提要求) – Addition (补充) 2\ 4W (Up主提出): What (我的情况是) – Will(我想)-Who(你是谁) – Want(我要你) 测试两种句式 4A-hard…

不必依赖ChatGPT,这几款AI工具同样好用

近期,随着人工智能(AI)技术的普及和应用,在各个行业中AI的应用也越来越广泛。这一局面显然类似军备竞赛,各家企业纷纷入场,准备展现其AI技术的强大。然而,我们所看到的只是企业对外发布的结果&a…

《花雕学AI》Poe 一站式 AI 工具箱:ChatGPT4 体验邀请,亲,不要错过哦!

你有没有想过,如果你能在同一个平台上体验多种不同的 AI 模型,和他们进行有趣、有用、有深度的对话,甚至还能轻松地分享你的对话给其他人,那该有多好?如果你有这样的想法,那么你一定不能错过 Poe 一站式 AI…

ChatGP4 的体验 一站式 AI工具箱 -—Poe(使用教程)

最近由于人工智能聊天机器人的爆火(ChatGT),因此各种各样的AI助手流行与网络,各种各样的都有,不论是什么样的其实都是为了我们更方便的解决问题,今天介绍一款AI工具箱——Poe将多种AI集成与一个界面,大家可以一次感受&…

GPT-4 免费体验方法

POE 在Quora上非常受欢迎的手机聊天机器人Poe App已经集成ChatGPT助手!除了最初集成的三个聊天机器人Sage、Claude和Dragonfly外,Poe现在还加入了第四位ChatGPT。由于使用了ChatGPT API,因此Poe拥有真正的ChatGPT。 现在更是第一批集成了GP…

2023移动端技术探索

1. 行业背景 过去的2022年对大家来说都是困难的一年,难在疫情影响,难在宏观环境的增长放缓。没有增长带来的就是痛苦的体验,对于互联网行业,21年的主题是“反996”,到了22年风向就变成了“降本增效”、“业务搜索”以及…

一个让人类窒息的AI工具,或许未来人工智能真的能代替人类!

时隔几周,「神采PromeAI」又更新了 不仅页面做了小小的调整 又增加了「背景生成」功能 害怕各位小伙伴找不到使用位置 今天小编就给大家分享一个超全的使用教程 极速出图效率翻倍 让神采PromeAI在应用性设计方面更具优势 温馨提示:目前手机适配端无…

ChatGpt利用PHP实现PDF转成word的代码实现过程

1.前期准备,给chagpt一些数据认知的投喂,如图: 2.代码实现过程 PHP语言可以通过使用OpenOffice或LibreOffice处理PDF到Word文档的转换。 以下是实现代码过程: 1.安装OpenOffice或LibreOffice OpenOffice或LibreOffice是免费、…

零代码编程:用ChatGPT批量识别图片PDF中的文字

有些PDF页面是图片格式,要怎么批量把图片中的文字识别出来?借助ChatGPT可以轻松完成这个任务。 首先要安装一些相关的软件和Python库。 安装tesseract-ocr(OCR)软件,最新版的是tesseract-ocr-w64-setup-v5.3.0.20221…

android 调用短信,Android实现接收短信和发送短信功能

在学接收短信和发送短信之前,先简单介绍一下 SMS 短消息服务。 SMS(Short Message Service,短信息服务)是一种存储和转发服务。也就是说,短信息并不是直接从发信人发送到接收人,而是始终通过 SMS 中心进行转发。如果接收人处于未连接状态(可能电话已关闭),那么信息将在接收…

SMS发送接收流程

1.短信发送的起点是在短信编辑界面,点击发送按钮开始的 public class ComposeMessageActivity extends Activity ...{ ....public void sendMessage(boolean bCheckEcmMode) { ....//这里面准备发送的数据处理,比如生成PDU数据,存储到数据mWorkingMess…

android短信接收处理和发送

关于短信接收处理方面,当前已经有一些app做的比较好了,比如发给手机发验证码验证的问题,很多app在手机接收到验证码后,不需要输入,就直接可以跳过验证界面,这就是用到了对接收到的短信的处理。至于短信的发…

被 ChatGPT “霍霍”的文学界:由 AI 编写的投稿激增,17 岁老牌杂志宣布暂停征稿...

整理 | 郑丽媛 出品 | CSDN(ID:CSDNnews) 上线近三个月,这把名为 “ChatGPT” 的火,燃到了科技圈、烧到了教育界,如今终于也向文学界蔓延了——越来越多人开始用 ChatGPT 写文章甚至书籍。 在众多“尝鲜者”…