android平台驱动开发(一)

这篇具有很好参考价值的文章主要介绍了android平台驱动开发(一)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

驱动开发

hello world



前言

最简单的hello world 驱动


一、代码添加

在AU_LINUX_ANDROID_LA.VENDOR.1.0\kernel_platform\msm-kernel\drivers\misc\目录下新建hello_world文件夹
并创建hello_world.c

#include <linux/init.h>
#include <linux/kernel.h>  
#include <linux/module.h>
 
static int hello_init(void)
{ 
    printk(KERN_ERR"Hello! This is the helloworld module!\n");
    return 0;
} 
 
static void hello_exit(void)
{
    printk(KERN_ERR"Module exit! Bye Bye!\n");
    return;
}
 
module_init(hello_init);
module_exit(hello_exit);
MODULE_LICENSE("GPL");

hello_world文件夹下新建Makefile

obj-m	+= hello_world.o

修改misc目录下的Makefile
AU_LINUX_ANDROID_LA.VENDOR.1.0\kernel_platform\msm-kernel\drivers\misc\Makefile

+obj-m	+= hello_world/

注:obj-m最好是以宏控的方式控制,当然也可以以obj-y的方式编译进内核,后续详细介绍

二、编译

以骁龙8 gen1 plus平台为例
在AU_LINUX_ANDROID_LA.VENDOR.1.0目录下执行:

xxxx@u99:~/AU_LINUX_ANDROID_LA.VENDOR.1.0$bash kernel_platform/qcom/proprietary/prebuilt_HY11/vendorsetup.sh

xxxx@u99:~/AU_LINUX_ANDROID_LA.VENDOR.1.0$cd kernel_platform/

xxxx@u99:~/AU_LINUX_ANDROID_LA.VENDOR.1.0/kernel_platform$BUILD_CONFIG=./common/build.config.msm.waipio ./build/all-variants.sh "./build/build.sh"

如上编译完成后AU_LINUX_ANDROID_LA.VENDOR.1.0\kernel_platform\out\msm-waipio-waipio-consolidate\dist\目录下会生成hello_world.ko;push到设备中验证即可。

三、 验证

android平台驱动开发(一)

C:\Users\Admin>adb push   AU_LINUX_ANDROID_LA.VENDOR.1.0\kernel_platform\out\msm-waipio-waipio-consolidate\dist\hello_world.ko /vendor/lib/modules/
\\192.168.0.56\home1\luhuan\zhanghong\SM8475\AU_LINUX_ANDR...world.ko: 1 file pushed. 3.0 MB/s (136104 bytes in 0.043s)

C:\Users\Admin>adb shell
taro:/ # insmod ve
vendor/        vendor_dlkm/
taro:/ # insmod vendor/lib
lib/    lib64/
taro:/ # insmod vendor/lib/modules/he
heap_mem_ext_v01.ko     hello_world.ko
taro:/ # insmod vendor/lib/modules/hello_world.ko
taro:/ # dmesg |grep hello
[  167.180876] Hello! This is the helloworld module!
taro:/ #
taro:/ #
taro:/ # lsmod |grep hello
hello_world            16384  0
taro:/ # rmmod hello_world
taro:/ # dmesg |grep Bye
[  193.670479] Module exit! Bye Bye!
taro:/ #

总结

module init 优先级文章来源地址https://www.toymoban.com/news/detail-417289.html

#define pure_initcall(fn)       __define_initcall(fn, 0)  
  
#define core_initcall(fn)       __define_initcall(fn, 1)  
#define core_initcall_sync(fn)      __define_initcall(fn, 1s)  
#define postcore_initcall(fn)       __define_initcall(fn, 2)  
#define postcore_initcall_sync(fn)  __define_initcall(fn, 2s)  
#define arch_initcall(fn)       __define_initcall(fn, 3)  
#define arch_initcall_sync(fn)      __define_initcall(fn, 3s)  
#define subsys_initcall(fn)     __define_initcall(fn, 4)  
#define subsys_initcall_sync(fn)    __define_initcall(fn, 4s)  
#define fs_initcall(fn)         __define_initcall(fn, 5)  
#define fs_initcall_sync(fn)        __define_initcall(fn, 5s)  
#define rootfs_initcall(fn)     __define_initcall(fn, rootfs)  
#define device_initcall(fn)     __define_initcall(fn, 6)  
#define device_initcall_sync(fn)    __define_initcall(fn, 6s)  
#define late_initcall(fn)       __define_initcall(fn, 7)  
#define late_initcall_sync(fn)      __define_initcall(fn, 7s)  
  
#define __initcall(fn) device_initcall(fn)  

到了这里,关于android平台驱动开发(一)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于Bearpi开发板鸿蒙OS之Hello world

    开发环境搭建 在my_app下的BUILD.gn中加入以下内容 在sample下的BUILD.gn中新增\\\"my_app:hello_world\\\",并将原来的\\\"B2_basic_button:button_example\\\"注释掉 使用MobaXterm工具编译后并烧录代码到开发板,运行效果图 APP_FEATURE_INIT宏原型 LAYER_INITCALL_DEF宏原型 LAYER_INITCALL宏原型 InitCall定义原型 USED_ATTR 宏

    2024年02月13日
    浏览(39)
  • 【Java】学习一门开发语言,从TA的Hello World开始

    欢迎来到《小5讲堂》 大家好,我是全栈小5。 这是《Java》序列文章,每篇文章将以博主理解的角度展开讲解, 特别是针对知识点的概念进行叙说,大部分文章将会对这些概念进行实际例子验证,以此达到加深对知识点的理解和掌握。 温馨提示:博主能力有限,理解水平有限

    2024年01月23日
    浏览(53)
  • OpenHarmony 应用开发入门 (一、环境搭建及第一个Hello World)

    万事开头难。难在迈出第一步。心无旁骛,万事可破。没有人一开始就能想清楚,只有做起来,目标才会越来越清晰。--马克.扎克伯格 前言 2024年1月16日,华为目前开启已HarmonyOS NEXT开发者预览版Beta招募,报名周期为1月15日-1月22日。HarmonyOS NEXT开发者预览版将不再兼容安卓开

    2024年01月18日
    浏览(74)
  • HarmonyOS鸿蒙应用开发 (一、环境搭建及第一个Hello World)

    万事开头难。难在迈出第一步。心无旁骛,万事可破。没有人一开始就能想清楚,只有做起来,目标才会越来越清晰。--马克.扎克伯格 前言 2024年1月16日,华为目前开启已HarmonyOS NEXT开发者预览版Beta招募,报名周期为1月15日-1月22日。HarmonyOS NEXT开发者预览版将不再兼容安卓开

    2024年01月23日
    浏览(59)
  • 零基础快速上手HarmonyOS ArkTS开发1---运行Hello World、ArkTS开发语言介绍

    在华为开发者大会2023年8月4日(HDC.Together)大会上,HarmonyOS 4正式发布,其实在2021年那会学习了一点鸿蒙的开发: 不过因为现在的鸿蒙手机完全兼容Android应用,所以学习动力也不是很足,一直就搁置了,直到今年华为官方出了这么一则消息才让我对于学习它有一种紧迫感了,如

    2024年02月05日
    浏览(48)
  • 【30天熟悉Go语言】2 Go开发环境搭建、Hello World程序运行

    Go系列文章: GO开篇:手握Java走进Golang的世界 Go专栏传送链接:https://blog.csdn.net/saintmm/category_12326997.html 1 进入到Go官网(https://golang.org),点击Download按钮; 2 选择操作系统对应的环境版本(图形化安装),进行下载,比如博主的windows: 3 下载完一路安装,博主的安装目录如下

    2024年02月06日
    浏览(52)
  • AutoCAD二次开发系列教程01-如何在AutoCAD中输出Hello World

    A.开发使用的软件:AutoCAD2016、VisualStudio2022 B.建立依赖的本地库(提前从AutoCAD软件安装目录拷贝开发时需要使用的库,如:accoremgd.dll) C.创建新的类库(.Net Framework),注意不同AutoCAD版本对应不同Framework版本,当前案例使用AutoCAD2016对应Framework4.5.2 D.建立类文件,创建命令函数,使用

    2024年02月02日
    浏览(39)
  • android平台驱动开发(一)

    hello world 最简单的hello world 驱动 在AU_LINUX_ANDROID_LA.VENDOR.1.0kernel_platformmsm-kerneldriversmisc目录下新建hello_world文件夹 并创建hello_world.c hello_world文件夹下新建Makefile 修改misc目录下的Makefile AU_LINUX_ANDROID_LA.VENDOR.1.0kernel_platformmsm-kerneldriversmiscMakefile 注:obj-m最好是以宏控的方式

    2023年04月18日
    浏览(31)
  • Linux 驱动开发基础知识——Hello驱动程序(一)

     个人名片: 🦁作者简介:一名喜欢分享和记录学习的在校大学生 🐯个人主页:妄北y 🐧个人QQ:2061314755 🐻个人邮箱:2061314755@qq.com 🦉个人WeChat:Vir2021GKBS 🐼 本文由妄北y原创,首发CSDN 🎊🎊🎊 🐨座右铭:大多数人想要改造这个世界,但却罕有人想改造自己。 专栏导

    2024年01月19日
    浏览(40)
  • 【小黑嵌入式系统第八课】初识PSoC Creator™开发——关于PSoC Creator&下载、创建项目、单片机中的hello world(点亮一个led)

    上一课: 【小黑嵌入式系统第七课】PSoC® 5LP 开发套件(CY8CKIT-050B )——PSoC® 5LP主芯片、I/O系统、GPIO控制LED流水灯的实现 下一课: 【小黑嵌入式系统第九课】PSoC 5LP第一个实验——LED、字符型LCD显示实验 本课程主要介绍了 PSoC® 5LP, 一个基于 ARM® Cortex®-M3 的可编程片上系

    2024年02月03日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包