在Android上实现SPI通信之(1)------在Ubuntu12.04环境下编译android源码

作为一个Android应用开发者,突然接到一下需求,需要在应用层传递一个信号到外设,传递方式用SPI通信,没有做过,甚是头大,遇到了好多坑,所以记录成册,希望对后来的开发者,有那么一点点的帮助,如果有不正确的地方,还请指正。

目前我实现的大体思路是:

  1. 应用层传递一个数据到JNI层
  2. JNI层传递一个数据到HAL层
  3. HAL传递数据到kernel层
  4. kernel层通过SPI转CAN传递到外设

不过我们先从驱动层开始,在编写驱动之前需要一个编译环境,我选了Ubuntu,android源码我选了android4.4,现在开始动手。


准备工作
编译 Android 对机器的配置要求较高:

  • 64 位 CPU、
  • 16GB 物理内存+交换内存
  • 80GB 空闲的磁盘空间用于构建,源码树另外占用大约 8GB

安装JDK

sudo add-apt-repository ppa:webupd8team/java 
sudo apt-get update 
sudo apt-get install oracle-java6-installer

Ubuntu 12.04 软件包安装

sudo apt-get install git gnupg flex bison gperf build-essential \
 zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev \
 libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386 \
 g++-multilib mingw32 tofrodos gcc-multilib ia32-libs \
 python-markdown libxml2-utils xsltproc zlib1g-dev:i386

安装 ARM 交叉编译工具链和编译内核相关软件包

sudo apt-get install gcc-arm-linux-gnueabihf \
lzop libncurses5-dev \
libssl1.0.0 libssl-dev

下载 Android4.4 SDK
androidSDK比较大,可以先用迅雷下载好之后再拷贝到Ubuntu上
我用的是瑞芯微的RK3288的开发板,所以我从他们的网站上下载了源码
百度网盘:https://pan.baidu.com/s/1o80DRsA
下载完成后先验证一下 MD5 码:

$ md5sum /path/to/firefly-rk3288_android4.4_git_20141211.tar.gz
8fe99f519d487ff40c8bc7b5ded62887  firefly-rk3288_android4.4_git_20141211.tar.gz

确认无误后,就可以解压:

mkdir -p ~/proj/firefly-rk3288
cd ~/proj/firefly-rk3288
tar xf /path/to/firefly-rk3288_android4.4_git_20141211.tar.gz

编译内核

cd ~/proj/firefly-rk3288/kernel
make firefly-rk3288_defconfig
make -j8 firefly-rk3288.img

编译 Android 源码

cd ~/proj/firefly-rk3288
sudo su
source build/envsetup.sh
make -j8

耐心等待几个小时之后就可以了。
过程中如果出现编译错误,可以先尝试一下再make -j8

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值