Getting Start With CubieBoard

由于老板的种种需要,以及某基友的循循善诱,最终放弃了买树莓派而选择了国产的CubieBoard。昨天上手第一天,折腾了一晚上,得出了:

  • 第一个结论是,软件工程师做硬件真是找虐。
  • 第二个结论是,软件工程师和硬件工程师讨论问题真的是想抽死对方。
  • 第三个结论是,在嵌入式开发上,真的是要浪费好多宝贵的人参在编译和刷机上。

上手接电

CubieBoard 其实说是CubieTruck 更好,上面有各种各样的电源接入方式,例如标准的直流5V,Mini USB,以及可以给某引脚直接加5v。最初为了安全起见,就选了最保险的直流5V,另一端用MBP的USB输出。

然后插到了VGA上,发现Android系统开机神速一切正常呢,一个很不错的电视盒子的感觉,不过这不是我想要的。我需要的是Linux环境。

刷机

这一晚上刷了六次机,前四次全都是刷错了img。刷的是CubieBoard A20版本的包,其实应该刷CubieTruck。 在用了正确的刷机包刷了机之后,发现怎么VGA就死也没输出的,显示器一直跟着三个LED再闪啊闪。

在论坛上搜了一下,发现,用这个包刷完了默认是HDMI输出,拿出来接电视上。果然有了…..但是貌似没有USB驱动,无法接鼠标,键盘,不过无所谓,我暂(fei)时(chang)不(de)需要。

在论坛上搜如何干掉HDMI,改为VGA输出的时候发现,有VGA版本的刷机包。那何乐而不为?刷!

刷完了,等了好久,进了系统,发现还是没有USB。不管了,去询问某基友,基友说用串口去连它就能拿到Root权限。

USB TO TTL Win8? Mac?

插在win8上用PuTTy连接,结果发现Win8 驱动不正常,从网上找的驱动,结果设备管理器依然问号。算了我本身就恶心Windows,为何还要自己为难自己,重启进Mac。

插在Mac上,在系统报告里面已经可以看到这个东西了,但是/dev/tty.usbserial这货不存在,果然要装驱动啊。 搜到了这地方, 安装完了驱动就有了。

现在ttl工作正常了,怎么显示出来是个问题。

搜了一下,也尝试了一些app,例如Zterm 之类的,均没达到效果。

然后发现了一个软件,叫做ZOC6,先不管正版不正版,macx上有下载。

安装了之后,把Connection Type 改成Serial Direct, Configure 里面,port 选择刚才的/dev/cu.usbserial 波特率改为 115200. 连接,熟悉的ssh 出现了~~~

开启ssh 搭建编译环境

开启ssh

发现正如网上所说,刷完了这个东西没有无线网卡。无所谓,有线就知足,插上有线我就能ssh了。

  • 首先, 在串口的terminal下修改root密码。
1
passwd
  • 然后,狂刷ifconfig,直到DHCP给了他地址,由于我家用的是苹果的Air Port系列,用的是10网段而不是192.168.xxx 所以用静态IP不太舒服。
  • 在mac的terminal下 直接ssh root@ip地址,输入刚才的密码。成功进入!

搭建编译环境

这个简单,两步

1
2
apt-get update
build-essential

之后就可以跑一个c语言的hello world 来庆祝一下了。

编译Node.js

以前就一直萌这个后端语言,现在觉得这货大有可为啊。 这货是单线程,多并发的。太适合扔在这种ARM上了。

在网上搜了一下,果然一大把。于是就没去看教程,直接六步:

1
2
3
4
5
6
wget http://nodejs.org/dist/v0.10.21/node-v0.10.21.tar.gz
tar -xzvf node-v0.10.21.tar.gz
cd node-v0.10.21.tar.gz
./configure
make
make install

make这一步,一个多小时过去了。这段时间我一直在看他们弄得nodejs,然后发现各种坑。。。。好多人装上了也用不了。 爆段错误(Segmentation fault)。我浑身冷汗啊,不过无所谓了。

然后不出所料,果然挂了。

正确的做法

要参考这东西

在configure的时候加参数的。

1
./configure --without-snapshot

不过首先要

1
make clean

毕竟刚才编译了。

在configure之后得到的json里面,注意v8_use_snapshot 是false 才能继续编译哦~

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
{ 'target_defaults': { 'cflags': [],
                       'default_configuration': 'Release',
                       'defines': [],
                       'include_dirs': [],
                       'libraries': []},
  'variables': { 'arm_fpu': 'vfpv3',
                 'arm_neon': 0,
                 'armv7': 1,
                 'clang': 0,
                 'gcc_version': 47,
                 'host_arch': 'arm',
                 'node_install_npm': 'true',
                 'node_prefix': '',
                 'node_shared_cares': 'false',
                 'node_shared_http_parser': 'false',
                 'node_shared_libuv': 'false',
                 'node_shared_openssl': 'false',
                 'node_shared_v8': 'false',
                 'node_shared_zlib': 'false',
                 'node_tag': '',
                 'node_unsafe_optimizations': 0,
                 'node_use_dtrace': 'false',
                 'node_use_etw': 'false',
                 'node_use_openssl': 'true',
                 'node_use_perfctr': 'false',
                 'node_use_systemtap': 'false',
                 'python': '/usr/bin/python',
                 'target_arch': 'arm',
                 'v8_enable_gdbjit': 0,
                 'v8_no_strict_aliasing': 1,
                 'v8_use_arm_eabi_hardfloat': 'true',
                 'v8_use_snapshot': 'false'}}
creating  ./config.gypi
creating  ./config.mk

之后就能正常工作啦~

TODO

  1. 找到USB失败的原因:我也不知道为什么重启就好了
  2. 打开WIFI:整个论坛上的人还在研究这个问题中
  3. 关掉或者移除GUI:直接

    vim /etc/X11/default-display-manager 改为false

Comments