-
相关文件提供在压缩包附件中
-
前提:区分套件的底板版本,这是本文的主要内容。旧底板(
Smart4418 SDK
)与新底板(Smart4418/6818 SDK
)的资源不同、相同资源的接口也可能不同,又因为发布时间不同,它们预安装系统版本也有不同,新板子为Android 7.1
,旧板子为Andorid 5.1
。
- Smart4418:主要是
Smart4418
核心板的相关说明 - Smart4418/6818SDK V2:新开发底板的说明,比如硬件资源,硬件部分最常使用的文档。
- Smart4418SDK:旧开发底板的说明。
- FriendlyThings:友善自己的一套安卓硬件开发
SDK
,我们一般使用它来访问硬件资源 - FriendlyThings APIs:
FriendlyThings
的API
文档,软件开发最常使用的文档。 - friendlyarm/friendlythings-sdk:
FriendlyThings
的SDK,复制进入项目使用即可。 - friendlyarm/friendlythings-examples :
FriendlyThings
的例程,可以参考(但是代码比较旧且繁杂,调用 SDK的关键代码也难以找到)。 - Smart4418-6818SDK_V2-1903.pdf:新板子的电路原理图
- Smart4418-1711-Schematic.pdf:旧板子的电路原理图
- shoorday/smart4418-dev-tips:本文地址
- shoorday/smart4418-waste-sorting:参考项目,可参考串口通信实现
-
下载SDK(附件中有)
其目录结构如下
friendlythings-sdk/ ├── libs # 动态链接库 │ ├── armeabi-v7a │ │ └── libfriendlyarm-things.so │ ├── arm64-v8a │ │ └── libfriendlyarm-things.so │ └── armeabi │ └── libfriendlyarm-things.so ├── java │ └── FriendlyThings # 函数库,开发者调用 │ │ ├── BoardType.java │ │ ├── FileCtlEnum.java │ │ ├── GPIOEnum.java │ │ ├── HardwareControler.java │ │ ├── SPIEnum.java │ │ ├── SPI.java │ │ ├── WatchDogEnum.java
-
添加动态链接库
-
添加函数库
将函数库复制到你的项目中,放在
com.friendlyarm.FriendlyThings
中。
访问硬件资源不可避免的需要系统权限,这时我们一般将App
的共享用户设为系统用户。
-
设置
sharedUserId
修改
AndroidManifest.xml
文件,为manifest
标签添加android:sharedUserId="android.uid.system"
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.shoor.drink" android:sharedUserId="android.uid.system"> <application> ... </application> </manifest>
-
签名
App
因为我们使用了系统用户,App
需要进行系统用户签名(FriendlyThings 中提供了在Android源码中编译App的方式,更为繁琐)。签名使用的是
Android
的签名工具signapk.jar
,其需要的证书与公钥与具体系统有关,应到其源码去找,新板子Android 7
的证书是原生Android
的,旧板子Android 5
的证书则是厂商友善自己的。签名命令如下:
java -jar signapk.jar platform.x509.pem platform.pk8 plain.apk signed-app.apk # 使用 java 运行签名工具 signapk # signapk 的参数依次是pem文件、pk8文件,未签名app路径,签名后的app输出路径
注意:
-
java
可能会要求与编译 App 的 java 版本相同,这时可以直接用Andriod Studio自带的java进行编译。比如,笔者Android Studio自带的
java.exe
的路径是C:\Users\surez\AppData\Local\JetBrains\Toolbox\apps\AndroidStudio\ch-0\201.7199119\jre\bin\java.exe
。
其他:
- 注意文件路径;
- Android Studio打包(右上绿色锤子,Make Project)后的 App 在项目根目录下
app\build\outputs\apk\debug\app-debug.apk
。 - 证书相关文件在系统源码的
security
目录下,比如原生Andorid的:security (googlesource.com)
-
-
安装
App
安装
App
比较简单的方式是使用adb
工具。adb -d install -r signed-app.apk # -d 表示选则USB连接设备,避免与虚拟机冲突 # -r 表示若已经安装,则重新安装(replace) # 最后一个参数是 apk 路径 # Tip: 一次命令更便捷 java -jar signapk.jar platform.x509.pem platform.pk8 plain.apk signed-app.apk && adb -d install -r signed-app.apk
软件部分参考 SDK 的API文档和例程即可,重点是Smart4418
上的串口以及新旧板子的不同之处。
使用 SDK 访问硬件资源需要设备名(文件名,Linux 下一切皆文件)Smart4418 系列的串口设备名称一致
UART1
->/dev/ttyAMA1
UART2
->/dev/ttyAMA2
UART3
->/dev/ttyAMA3
UART4
->/dev/ttyAMA4
最为常用的是UART3, 4
,UART1, 2
仅部分板子可用,且常常供 WIFI、蓝牙使用,无暴露引脚。
新旧开发底板的硬件接口不同
-
UART3
在旧板子中,暴露为普通引脚(2.54 mm间距,TTL电平,见底板资源图,位于板子左上方一竖排引脚中)和 DB9公(RS232 电平);在新板子中则为DB9公(RS232)和引脚(2mm 间距,RS232 )。
因而使用
UART3
与 MCU(TTL引脚)通信时,旧板子可以直接使用TTL
引脚,新板子则需使用 RS232 转 TTL 转换器。 -
UART4
旧板子中为 RS232(DB9),新版子中为 R485(5.08mm 间距接线器),若要与 TTL 引脚的串口通信,仍需转换器。
来自开发底板的说明文档