Android 6.0中添加C可执行程序验证硬件驱动程序

本文介绍了如何在Android的external目录下添加freg模块,并详细展示了freg.c和Android.mk文件的内容。通过mmm命令进行编译,makesnod命令将模块打包进system.img,最后使用adb shell运行该模块。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在Android的external目录中添加freg目录,并在其中添加如下两个文件

freg
├── Android.mk
└── freg.c

freg.c文件中代码

/*************************************************************************
* 文件: freg.c
* 作者: fantasy
* 邮箱: fantasy@gmail.com 
* 创建时间: 2016年07月20日 星期三 22时58分58秒
*************************************************************************/

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

#define FREG_DEVICE_NAME "/dev/freg"

int main(int argc, char **argv)
{
    int fd  = -1;
    int val = 0;

    fd = open(FREG_DEVICE_NAME, O_RDWR);
    if (-1 == fd)
    {
        printf("Failed to open device %s.\n", FREG_DEVICE_NAME);
        return -1;
    }

    printf("Read original val:\n");
    read(fd, &val, sizeof(val));
    printf("%d.\n\n", val);

    val = 5;
    printf("Write val %d to %s.\n\n", val, FREG_DEVICE_NAME);
    write(fd, &val, sizeof(val));

    printf("Read the val again:\n");
    read(fd, &val, sizeof(val));
    printf("%d.\n\n", val);

    close(fd);

    return 0;
}

Android.mk文件中

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE := freg
LOCAL_SRC_FILES := $(call all-subdir-c-files)

include $(BUILD_EXECUTABLE)

通过如下命令进行单独模块进行编译

$ mmm ./external/freg

然后通过如下命令把新增的freg模块打包到system.img文件中

$ make snod

然后通过如下命令重新运行emulator

$ emulator -kernel kernel/goldfish/arch/arm/boot/zImage &

通过adb shell命令来运行新增的freg模块,如下



参考

《Android系统源代码情景分析》 第2.2节

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值