开发板 iTOP 6818 调试手记

开发板 iTOP 6818 调试手记

最近项目需要,在做ARM 的 iTOP 6818 开发板调试。边看手册学习原理,边实践操作熟悉开发环境。

第一步,熟悉开发环境,学习烧写镜像文件。

配置 iTOP 6818 的底层系统是Ubuntu 14.04,上层是Android 5.1。

在PC 上安装了虚拟机,虚拟机里安装Ubuntu 14.04,可以生成ubuntu 镜像文件,

重启开发板,OTG 线连接到PC上。在超级终端里回车,进入uboot 模式,输入fastboot,进入OTG 模式。

PC 的开发工具fastboot 目录下,输入fastboot 。。。。,将6个镜像文件烧写到开发板上。

可以看到 开发板启动android 后的界面, 象一台安卓手机启动后的界面,心里就轻松了。

由于买的是4.3 寸的小屏幕,开始不习惯其配置界面,耽误了一些时间,建议买7 寸的显示屏。

开发板上的back 按钮是回退到上次的安卓菜单界面,非常有用。sleep 按钮是用来唤醒屏幕的,

通过开发板串口连接PC,在PC 上的超级终端里查看开发板的运行信息。

 

第二步,熟悉Android studio4.1.1,学习编译开发板的底层驱动库。

PC 上安装JDK1.8 和Android studio4.1.1,配置环境参数。

注意:不要去安装厂家网盘下载的android studio1.5 软件去运行各样例,被坑过3天

先编译了一个hello,moon !程序,下载到开发板上,显示出hello,moon!了。相信你的信心就倍增了。

备注:记得先将开发板设置为开发者模式和USB 调试模式,否则PC的ADB 设备显示不出来。也就是PC上无法和开发板建立联系,无法调试。

因为按厂家手册上烧写厂家的镜像文件,会将USB 调试模式关闭了。

开发板的底层驱动程序采用C 语言开发,需要先在Android Studio 的SDK-SDK tools里下载Cmake编译工具。

下面以控制LED 的开和关举例底层驱动库和上层安卓应用程序的编写。

Android Studio 里创建一个Native C++ 项目,例如 jnitest,language 配置Java如果选默认的,会掉进坑里)。Minimum SDK 配置Android 5.1,C++ 标准配置C++ 11。

1)在MainActivity 里,创建三个方法,分别对应打开、关闭、控制灯。

package com.example.jnitest;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

    // Used to load the 'native-lib' library on application startup.
    static {
        System.loadLibrary("native-lib");
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // Example of a call to a native method
        TextView tv = findViewById(R.id.sample_text);
        tv.setText(stringFromJNI());
    }

    /**
     * A native method that is implemented by the 'native-lib' native library,
     * which is packaged with this application.
     */
    public native String stringFromJNI();

    public native int LedOpen();
    public native int LedClose();
    public native int LedIoctl(int num, int en);

}

2)在native-lib.cpp 中,象C语言一样,添加头文件,写JNI 代码,实现打开、关闭、控制灯的控制。

#include <android/log.h>,为安卓打印调试信息的头文件。

#include <jni.h>
#include <string>

#include <stdio.h>
#include <stdlib.h>

#include <fcntl.h>
#include <errno.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <string.h>
#include <stdint.h>
#include <termios.h>
#include <android/log.h>
#include <sys/ioctl.h>

#include <android/log.h>
int fd =0;  

extern "C" JNIEXPORT jstring JNICALL
Java_com_example_jnitest2_MainActivity_stringFromJNI(
        JNIEnv* env,
        jobject /* this */) {
    std::string hello = "Hello from C++";
    return env->NewStringUTF(hello.c_str());
}

extern "C" JNIEXPORT jstring JNICALL
Java_com_example_jnitest2_MainActivity_LedOpen(
        JNIEnv* env,
        jobject /* this */) {

    fd = open("/dev/leds_ctl",O_RDWR | O_NDELAY | O_NOCTTY );
    if(fd < 0){
        __android_log_print(ANDROID_LOG_INFO,"serial","open /dev/leds_ctl Error");
    } else{
        __android_log_print(ANDROID_LOG_INFO,"serial","open /dev/leds_ctl Success fd=%d",fd
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值