8388|17

126

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

使用EclipseCDT搭建Beaglebone Linux开发环境 [复制链接]

今天看了很久 Derek Molly的视频https://www.youtube.com/watch?v= ... =PLF4A1A7E09E5E260A,最后终于成功搭建好Beaglebone Linux的开发环境,在此记录一下。
我的主机环境: Ubuntu 12.04+Eclipse (Kepler Service Release 1), 开发板是Beaglebone Black, 开发板的操作系统是 Angstrom v2012.12
先说一句,通过ssh远程登陆到Beaglebone中,通过安装g++(opkg install g++)也是可以开发的,但是调试时未免麻烦。

下面进入正题:
首先下载Eclipse + CDT plugin,现在可以直接下载集成好的,下载地址为http://www.eclipse.org/downloads ... evelopers/keplersr1 ,打开链接后在页面右侧有Download Link,可以根据自己的操作系统进行选择,我的是 Linux 64bit。
下载好之后直接解压就可以使用了(起码Linux是这样),无需安装。
为了能够更方便地通过PC来查看、操作Beaglebone,以及更加方便地调试,需要安装另外一个插件, RSE-runtime。 打开Eclipse之后,依次选择Help -> Install new software, 在弹出来的对话框里的第一个输入框里输入Kepler - http://download.eclipse.org/releases/kepler,之后Eclipse会联网下载可更新软件目录,下载目录完成后,对话框的中间会有很多插件可供安装,点击 Mobile and Device Development 前面的小三角,在展开的目录项中勾选    Remote System Explorer End-User Runtime,然后按照提示即可安装完成。如下图所示:

接着来验证一下是否顺利安装成功了。要先确保安装好Linux操作系统的Beaglebone Black和计算机已经可靠连接。回到Eclipse主界面,选择 Window -> Show View -> Other, 弹出的对话框中选择 Remote System, 点击OK。Remote System的窗口就会显示在界面的下方,可以根据需要把这个窗口拖放的自己喜欢的位置,我把它拖到了界面的左侧,和Project Explorer处于同一位置。                                                                                                                                                                                  a. 在Remote System 窗口中右击,然后选择New -> Connection, 弹出如下图所示的对话框

             b. 选择Linux, 单击Next。
             c. 然后,按照下图进行设置:
            

             其中Host Name填写BeagleboneBlack的IP地址,第二条会自动填写。Description可以任意填写一个自己喜欢用的名字。
             点击Next。
             d. 勾选Configuration中的ssh.files,点击Next:
            

            
             e. 勾选Configuration中的processes.linux.shell,点击Next:
            

      
             f. 勾选Configuration中的ssh.linux,点击Finish:
            

            g. 右击Ssh Terminals, 选择Connect, 在弹出的对话框中填写Beaglebone Black 上Linux中的用户名和密码,就可以登陆了。右击Ssh Terminal,选择Launch Terminal,可以在下方的窗口中看到Terminal,这样,就已经远程登陆到Linux中了。 试一试,可以交互:
            

5. 下面编写一个C++程序控制Beaglebone Black上4个User LED的亮灭(这里先以控制一个为例):
新建一个C++ Project
源程序为
  1. #include
  2. #include
  3. using namespace std;

  4. int main() {
  5.         cout << "LED 1 starts flashing" << endl;

  6.         FILE *LEDHandle = NULL;
  7.         char *LED1Brightness = "/sys/class/leds/beaglebone:green:usr1/brightness";

  8.         for(int i=0; i<10; i++)
  9.         {
  10.                 if((LEDHandle=fopen(LED1Brightness, "r+"))!=NULL)
  11.                 {
  12.                         fwrite("1", sizeof(char), 1, LEDHandle);
  13.                         sleep(1);
  14.                         fclose(LEDHandle);
  15.                 }

  16.                 if((LEDHandle=fopen(LED1Brightness, "r+"))!=NULL)
  17.                 {
  18.                         fwrite("0", sizeof(char), 1, LEDHandle);
  19.                         sleep(1);
  20.                         fclose(LEDHandle);
  21.                 }
  22.         }
  23.         cout << "LED 1 ends flashing" << endl;
  24.         return 0;
  25. }
复制代码
  • 下面配置交叉编译的工具,首先下载arm-linux-gnueabi, 直接在Ubuntu中输入
  1. sudo install apt-get install arm-linux-gnueabi
复制代码
  • 然后单击工程, 选择Project->Properties-> C/C++ Build -> Settings, 将GCC  C++ Compiler 和GCC  C++ Linker中的Command改为arm-linux-gnueabi-g++,将GCC  C Compiler的Command改为arm-linux-gnueabi-gcc, 将GCC Assembler的Command 改为arm-linux-gnueabi-as。同一窗口中,进入C/C++ General -> Paths and Symbols, Includes选项卡中选择 GNU C, 添加/usr/arm-linux-gnueabi/include,添加方式就是点击ADD, 然后选择目录,并单击Apply to all configurations:                                                                     
  •         成功添加之后如下:                                                                                                                                                                                                                                                                           
  • 同样的方法,为GNU C++添加 /usr/arm-linux-gnueabi/include/c++/4.6.3,为Library Paths选项卡添加/usr/arm-linux-gnueabi/lib。这样,就顺利配置好交叉编译器 了。可以编译了。
  • Build All。编译万整个工程之后, 在Project Explorer中可以看到成功编译出的可执行文件。
  • 复制可执行文件,切换到RemoteSystem窗口,粘贴到 Beaglebone Black根目录下。在下方的Terminal中输入
  1. chmod a+x  Helloworld
  2. ./Helloworld
复制代码
可以看见User Led已经在闪了,同时Terminal中出现了一句话:

20秒以后,User Led熄灭,同时Terminal中输出另一句:

成功了!
就写到这儿了,改天再写在线调试。

[ 本帖最后由 651927693 于 2013-11-9 10:23 编辑 ]

最新回复

期待 Eclipse 在线调试BBB  详情 回复 发表于 2014-9-23 09:18

点评

楼主图片引用的是21IC的,应该是对方的图有问题了吧,建议将图直接上传到本站。  详情 回复 发表于 2013-11-22 11:44
点赞 关注
 

回复
举报

1173

帖子

3

TA的资源

五彩晶圆(初级)

沙发
 
这个好东西,学习学习来
 
 

回复

132

帖子

122

TA的资源

一粒金砂(高级)

板凳
 
不错,学习一下
 
 
 

回复

132

帖子

122

TA的资源

一粒金砂(高级)

4
 
顺便问一下那个include后面的文件是什么,怎么是空的?

点评

内容是#include #include 我编辑的时候是有的。。。 还有就是我的图片怎么都没有了。。。。 [ 本帖最后由 651927693 于 2013-11-9 10:24 编辑 ]  详情 回复 发表于 2013-11-9 10:22
 
 
 

回复

126

帖子

0

TA的资源

一粒金砂(中级)

5
 

回复 4楼yangking91 的帖子

内容是#include
#include
我编辑的时候是有的。。。
还有就是我的图片怎么都没有了。。。。

[ 本帖最后由 651927693 于 2013-11-9 10:24 编辑 ]
 
 
 

回复

54

帖子

1

TA的资源

一粒金砂(中级)

6
 
感谢分享 4
 
 
 

回复

535

帖子

0

TA的资源

版主

7
 
我用这个44我的OMAP44X0看看.如果成功了,我也写一篇.

点评

恩,加油!  详情 回复 发表于 2013-11-20 19:55
 
 
 

回复

126

帖子

0

TA的资源

一粒金砂(中级)

8
 

回复 7楼besk 的帖子

恩,加油!
 
 
 

回复

157

帖子

5

TA的资源

一粒金砂(中级)

9
 
话说,图好像挂了
 
 
 

回复

2万

帖子

71

TA的资源

管理员

10
 
原帖由 651927693 于 2013-11-9 01:03 发表
今天看了很久 Derek Molly的视频https://www.youtube.com/watch?v= ... =PLF4A1A7E09E5E260A,最后终于成功搭建好Beaglebone Linux的开发环境,在此记录一下。
我的主机环境: Ubuntu 12.04+Eclipse (Kepler Servi ...
楼主图片引用的是21IC的,应该是对方的图有问题了吧,建议将图直接上传到本站。
加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身
个人签名

加油!在电子行业默默贡献自己的力量!:)

 
 
 

回复

5979

帖子

8

TA的资源

版主

11
 
加油 加油!
个人签名生活就是油盐酱醋再加一点糖,快活就是一天到晚乐呵呵的忙
===================================
做一个简单的人,踏实而务实,不沉溺幻想,不庸人自扰
 
 
 

回复

19

帖子

0

TA的资源

一粒金砂(中级)

12
 
感谢分享
 
 
 

回复

2

帖子

0

TA的资源

一粒金砂(初级)

13
 
楼主,请教一下您上面的代码是怎么弄进去的,是用编辑软件还是其它,如果弄在word中是否也有同样的效果
 
 
 

回复

2

帖子

0

TA的资源

一粒金砂(初级)

14
 
#include
#include
using namespace std;

int main() {
        cout << "LED 1 starts flashing" << endl;

        FILE *LEDHandle = NULL;
        char *LED1Brightness = "/sys/class/leds/beaglebone:green:usr1/brightness";

        for(int i=0; i<10; i++)
        {
                if((LEDHandle=fopen(LED1Brightness, "r+"))!=NULL)
                {
                        fwrite("1", sizeof(char), 1, LEDHandle);
                        sleep(1);
                        fclose(LEDHandle);
                }

                if((LEDHandle=fopen(LED1Brightness, "r+"))!=NULL)
                {
                        fwrite("0", sizeof(char), 1, LEDHandle);
                        sleep(1);
                        fclose(LEDHandle);
                }
        }
        cout << "LED 1 ends flashing" << endl;
        return 0;
}
 
 
 

回复

126

帖子

0

TA的资源

一粒金砂(中级)

15
 
这个是这个论坛里的功能。
  1. Hello, world below!
复制代码
 
 
 

回复

126

帖子

0

TA的资源

一粒金砂(中级)

16
 
图片不知怎的,莫名其妙地又出来了。
 
 
 

回复

182

帖子

3

TA的资源

一粒金砂(高级)

17
 
很不错,我也准备搭个玩玩
 
 
 

回复

10

帖子

0

TA的资源

一粒金砂(中级)

18
 
期待 Eclipse 在线调试BBB
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表