从一个文件说起

面对一块跑起来的BBBlack板子的时候,如何开始运行自己的第一个程序呢?且听我一步一步的讲起。

首先我们线连接到BBBlack,并且登录。此时处于我所登录的用户目录下,我新建一个目录(文件夹)用于放置代码:

$mkdir code

当然如果你登陆的不是root用户会发现被提示:

mkdir: cannot create directory ‘code’: Permission denied

此时你可以直接获取root权限或是使用sudo的方式运行指令,此处为后续操作的方便,直接获取root权限。方法是先输入su,然后根据提示输入密码:

Password:

然后再运行上述创建目录指令,即可。创建完成后可以使用ls指令查看目录列表,查看是否有我们新创建的目录code:

bbb-uEnv.txt boot dev home lib media nfs-uEnv.txt proc run srv tmp var bin code etc ID.txt lost+found mnt opt root sbin sys usr

此时我们进入到我们新创建的code目录:

# cd code

这样我们就可以创建C文件并且编辑了。那么我们此时如何创建文件呢?很简答,直接输入你要是用的编辑器的名称:vim或是nano,这里不个人更喜欢使用功能更简单的nano。如图:

我们可以看到,窗口的上半部分是一个可以输入文字的编辑器,而下面则是对文件进行一些操作的选项。在编辑器中输入经典的C++的HELLO WORLD代码,然后根据下方选项提示按ctal+o保存文件,此处我保存为hello.cpp:

#include <iostream>
int main(int argc, char const *argv[])
	using namespace std;
	cout << "HELLO WORLD\n";
	return 0;

编译与运行

那么此时的问题就是:如何编译呢?其实非常简单,这要归功于我们已经在BBBlack里面安装的debian,他已经非常贴心的为我们集成了开源编译器gcc。此处我们可以运行指令gcc -v查看一下:

# gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/arm-linux-gnueabihf/6/lto-wrapper
Target: arm-linux-gnueabihf
Configured with: ../src/configure -v --with-pkgversion='Debian 6.3.0-18' --with-bugurl=file:///usr/share/doc/gcc-6/README.Bugs --enable-languages=c,ada,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-6 --program-prefix=arm-linux-gnueabihf- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-libitm --disable-libquadmath --enable-plugin --enable-default-pie --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-6-armhf/jre --enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-6-armhf --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-6-armhf --with-arch-directory=arm --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --with-target-system-zlib --enable-objc-gc=auto --enable-multiarch --disable-sjlj-exceptions --with-arch=armv7-a --with-fpu=vfpv3-d16 --with-float=hard --with-mode=thumb --enable-checking=release --build=arm-linux-gnueabihf --host=arm-linux-gnueabihf --target=arm-linux-gnueabihf
Thread model: posix
gcc version 6.3.0 20170516 (Debian 6.3.0-18)

我们使用gcc对刚刚完成的代码进行编译,由于例程简单,此处我们直接编译获取可执行文件。由于我们使用的是C++,所以采用g++指令。 至于gcc更复杂的用法,可以详询搜索引擎:

# g++ -o hello hello.cpp

等待一段时间后运行完成,但是并没有返回什么结果,我们此时可以采用上面提到的ls指令查看一下文件的变化:

hello hello.cpp

我们发现多了一个文件hello,这个就是我们要的可执行文件。我们试着运行它:
运行
这就是我们想要的结果了。

写在最前面的话: BeagleBone Black 拿到手已经三四年了,自己也从一个学生进入了职场开始了linux开发的相关工作(目前还是用户态开发居多,偶尔会去改一下内核配置),所以前期的学习笔记会以用户态的开发居多,后面根据深入程度再来加上uboot和kernel开发相关的学习笔记。希望自己平时能多来到CSDN上将BeagleBone Black的一些折腾过程记录下来。之前写过一个开发环境搭... SPI是可以全双工通信的一种串行总线,两个设备之间双向通信的话一般使用3根线:SCLK,MISO,MOSI,多个设备之间双向通信的话,每个设备还需要再加上一根地址线CSn。相比之下I2C只能半双工,但无论几个设备,都只需要2根线。更多基础知识请谷歌百度。 Beaglebone Black使用的AM3359芯片上有两个SPI,但SPI1连接到了板子的HDMI芯片上,所以除非禁用HDMI,否则我们只 第一代 BeagleBoard 开发板推出于2008年,第三代开发板被命名为 BeagleBone,从这一代开始将 GPIO 口统一放置到开发板的两侧了。BeagleBone Black 诞生于2013年,它是继 BeagleBone 后的新版本,中国版的价格是 399 RMB。BeagleBoard 家族的开发板均采用德州仪器的 ARM 处理器,BeagleBoard 系列开发板的一大... 其他信号也可以通过这些引脚连接,但是在上电时,引脚是默认的设置。 要注意的是,这些引脚的电压是3.3v,不能连接5v信号,不然板子容易损坏。同时,不要在没有上电的情况下,对引脚加电压,会损坏处理器。 连接器P9: 其中PWR_BUT是5v电平,这个信号是TPS芯片内部产生的。 3.供电插口 5v直流供电,板子需要5v直流,1A的电流或者... 开源硬件在国外火得一塌糊涂,国内却没有那么多人玩,直接导致中文论坛资料严重缺乏……但这也挡不住Beaglebone Black的魅力,几经比较之后还是决定购买这个“狗骨头”! Beaglebone Black(以下简称BBB)是一款2013年刚刚诞生的开源硬件。其前身是Beaglebone者外形一致,但前身是白色板子,而新版是黑色板子。大家现在购买的话买新的就好,性能比前身强大很多,价格还反