今天看了很久 Derek Molly的视频https://www.youtube.com/watch?v=vFv_-ykLppo&list=PLF4A1A7E09E5E260A,最后终于成功搭建好Beaglebone Linux的开发环境,在此记录一下。
我的主机环境: Ubuntu 12.04+Eclipse (Kepler Service Release 1), 开发板是Beaglebone Black, 开发板的操作系统是 Angstrom v2012.12
先说一句,通过ssh远程登陆到Beaglebone中,通过安装g++(opkg install g++)也是可以开发的,但是调试时未免麻烦。
下面进入正题:
5. 下面编写一个C++程序控制Beaglebone Black上4个User LED的亮灭(这里先以控制一个为例):成功了!
- 新建一个C++ Project
- 源程序为
- #include <iostream>
- #include <stdio.h>
- 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;
- }
- 下面配置交叉编译的工具,首先下载arm-linux-gnueabi, 直接在Ubuntu中输入
然后单击工程, 选择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。这样,就顺利配置好交叉编译器了。可以编译了。
- sudo apt-get install arm-linux-gnueabi
- Build All。编译万整个工程之后, 在Project Explorer中可以看到成功编译出的可执行文件。
- 复制可执行文件,切换到RemoteSystem窗口,粘贴到 Beaglebone Black根目录下。在下方的Terminal中输入
- chmod a+x Helloworld
- ./Helloworld
可以看见User Led已经在闪了,同时Terminal中出现了一句话: 20秒以后,User Led熄灭,同时Terminal中输出另一句: