当前位置: 首页 > news >正文

织梦优美文章阅读网站源码哈尔滨商城网站建设

织梦优美文章阅读网站源码,哈尔滨商城网站建设,网站扩展虚拟空间,重庆市建设工程信息网联系电话获取更多相关的【RK3576】【Android14】驱动开发,可收藏系列博文,持续更新中: 【RK3576】Android 14 驱动开发实战指南 前置步骤 首先完整编译一次,保证kernel编译过有中间成果物 cd .../Android/# 配置环境变量 source build/e…

获取更多相关的【RK3576】【Android14】驱动开发,可收藏系列博文,持续更新中:
【RK3576】Android 14 驱动开发实战指南


前置步骤

首先完整编译一次,保证kernel编译过有中间成果物

cd .../Android/# 配置环境变量
source build/envsetup.sh# 确保 lunch 过
lunch rk3576_u-userdebug# 编译内核
./build.sh -K -J8
//-K = build kernel

方法一:将模块添加到安卓SDK中,使用make编译

步骤一:选择一个合适的目录

在Android/external下创建目录:

mkdir external/simple_ko/

步骤二:完成KO模块源码

编写external/simple_ko/simple_ko.c

#include <linux/init.h>  
#include <linux/module.h>   static int hello_init(void)  
{  printk("Hello, World !\n");  return 0;  
}  static void hello_exit(void)  
{  printk("Goodbye, World !\n");  
}  module_init(hello_init);  
module_exit(hello_exit);  MODULE_LICENSE("Dual BSD/GPL");  

步骤三:创建 Makefile

编写external/simple_ko/Makefile

obj-m += simple_ko.o

步骤四:添加build.sh脚本

编写external/build.sh脚本:

#!/bin/bash#Usage:
#Compile all: ./build.shexport PATH=../prebuilts/clang/host/linux-x86/clang-r487747c/bin:$PATHLOCAL_KERNEL_PATH=kernel-6.1
ADDON_ARGS="CROSS_COMPILE=aarch64-linux-gnu- LLVM=1 LLVM_IAS=1"cd ../$LOCAL_KERNEL_PATH && make $ADDON_ARGS ARCH=arm64 -C . M=../external/$1 clean && cd -
cd ../$LOCAL_KERNEL_PATH && make $ADDON_ARGS ARCH=arm64 -C . M=../external/$1 -j8 && cd -

步骤五:编译模块

# 进入Android/external目录
cd external# 编译simple_ko模块
./build.sh simple_ko

步骤六:提取 .ko 并测试

拷贝KO到本地,通过adb push推送到设备端

 参考:【RK3576】【Android14】ADB工具说明与使用

# 拷贝到本地
Y:\nfs\simple_ko.ko# 确认adb设备存在
adb devices
//List of devices attached
//5aaa789bdf4c4440        device# 推送到设备
adb push Y:\nfs\simple_ko.ko /data/local/tmp/
//Y:\nfs\simple_ko.ko: 1 file pushed, 0 skipped. 14.9 MB/s (121928 bytes in 0.008s)# 加载模块
adb shell
su
insmod /data/local/tmp/simple_ko.ko# 查看日志
dmesg | grep "World"# 卸载
rmmod simple_ko# 查看日志
dmesg | grep "World"

在前面基础上进阶,实现在外部目录下编译simple_ko模块

# 随机目录下创建simple_ko目录mkdir /data/tmp/simple_ko# 将前面的simple_ko.c文件和Makefile拷贝过来
cp .../simple_ko.c /data/tmp/simple_ko
cp .../Makefile /data/tmp/simple_ko# 配置环境变量
export PATH=[使用绝对路径]/prebuilts/clang/host/linux-x86/clang-r487747c/bin:$PATH# 编译前clean
cd [使用绝对路径]/kernel-6.1/ && make CROSS_COMPILE=aarch64-linux-gnu- LLVM=1 LLVM_IAS=1 ARCH=arm64 -C . M=/data/tmp/simple_ko clean && cd -# 编译KO模块
cd [使用绝对路径]/kernel-6.1/ && make CROSS_COMPILE=aarch64-linux-gnu- LLVM=1 LLVM_IAS=1 ARCH=arm64 -C . M=/data/tmp/simple_ko -j8 && cd -

方法二:将模块添加到内核源码树中,使用传统的 Kconfig + Makefile 编译方式

步骤一:选择一个合适的目录

进入内核源码目录:

cd .../Android/kernel-6.1

创建模块目录(建议放在 drivers/misc/ 下):

mkdir drivers/misc/simple_ko

步骤二:完成KO模块源码

编写drivers/misc/simple_ko/simple_ko.c

#include <linux/init.h>  
#include <linux/module.h>   static int hello_init(void)  
{  printk("Hello, World !\n");  return 0;  
}  static void hello_exit(void)  
{  printk("Goodbye, World !\n");  
}  module_init(hello_init);  
module_exit(hello_exit);  MODULE_LICENSE("Dual BSD/GPL");  

步骤三:创建 Makefile

编写drivers/misc/simple_ko/Makefile

obj-$(CONFIG_SIMPLE_KO) += simple_ko.o

步骤四:修改上层 Makefile

编辑 drivers/misc/Makefile,添加一行:

obj-$(CONFIG_SIMPLE_KO) += simple_ko/

步骤五:添加 Kconfig 选项

编辑 drivers/misc/Kconfig,在合适位置(比如末尾)添加:

config SIMPLE_KOtristate "Simple hello_world module"helpSay Y or M here to test a simple kernel module that printshello world.

步骤六:启用模块配置

修改xxx_defconfig内核配置项:

make ARCH=arm64 rockchip_defconfigmake ARCH=arm64 menuconfig

找到SIMPLE_KO配置项:

 > Search (SIMPLE_KO) lq Search Results qkx Symbol: SIMPLE_KO [=n]                                                                                                                                                                                                                                                x  x Type  : tristate                                                                                                                                                                                                                                                      x  x Defined at drivers/misc/Kconfig:531                                                                                                                                                                                                                                   x  x   Prompt: Simple hello_world module                                                                                                                                                                                                                                   x  x   Location:                                                                                                                                                                                                                                                           x  x     -> Device Drivers                                                                                                                                                                                                                                                 x  x -> Misc devices                                                                                                                                                                                                                                                       x  x (1)     -> Simple hello_world module (SIMPLE_KO [=n])   

勾选SIMPLE_KO配置项

保存defconfig配置后,将.config拷贝到项目xxx_defconfig

cp .config arch/arm64/configs/rockchip_defconfig

可以通过cat命令查看配置是否已添加:

$ cat arch/arm64/configs/rockchip_defconfig | grep SIMPLE_KO
CONFIG_SIMPLE_KO=m

步骤七:编译内核

回到Android根目录,编译内核

cd .../Android/# 配置环境变量
source build/envsetup.sh# 确保 lunch 过
lunch rk3576_u-userdebug# 编译内核
./build.sh -K -J8
//-K = build kernel

成功后,模块会生成在:

kernel-6.1/drivers/misc/simple_ko/simple_ko.ko

步骤八:提取 .ko 并测试

拷贝KO到本地,通过adb push推送到设备端

参考:【RK3576】【Android14】ADB工具说明与使用

# 拷贝到本地
Y:\nfs\simple_ko.ko# 确认adb设备存在
adb devices
//List of devices attached
//5aaa789bdf4c4440        device# 推送到设备
adb push Y:\nfs\simple_ko.ko /data/local/tmp/
//Y:\nfs\simple_ko.ko: 1 file pushed, 0 skipped. 14.9 MB/s (121928 bytes in 0.008s)# 加载模块
adb shell
su
insmod /data/local/tmp/simple_ko.ko# 查看日志
dmesg | grep "World"# 卸载
rmmod simple_ko# 查看日志
dmesg | grep "World"

http://www.dtcms.com/a/599061.html

相关文章:

  • 网站建设的发展腾讯会议价格
  • 1.1.4 Spring的下载及目录结构
  • [7]. SpringAI Alibaba RAG增强检索生成
  • 国内做的比较好的旅游网站免费的网站加速器
  • 知识管理工具:confluence vs 语雀 vs notion vs sward一文纵评
  • 免费网站素材下载wordpress 导入用户
  • php mysql网站开发项目式教程免费的网站制作
  • 网站建设 客户同程网页升级紧急跳转
  • 在做网站的公司做网站运营犯法吗成都网站怎么推广
  • DeepSeekV3-MOE
  • 软文网站推广wordpress 添加视频
  • 杭州网站设计公司哪个好百度关键词怎么优化
  • 网站上怎样做轮播图珠宝钻石网站建站
  • 数据结构入门 (十):“左小右大”的秩序 —— 深入二叉搜索树
  • 能不能模仿百度一样做搜索引擎网站php网站开发职责
  • 如果做局域网影音网站企业服务中心抖音
  • 常见购物网站功能丹东建设银行网站
  • 徐州建网站网站界面设计形考
  • 最新电大网站开发维护WORDPRESS摘要无效
  • 高端定制网站开发买空间哪个网站好
  • Linux 内存管理 (5):buddy 内存分配简要流程
  • C++ 高精度计算:突破数据类型限制的实现与应用
  • 学做招投标的网站上传空间站的注意事项
  • 黑马JAVAWeb -Vue工程化 - Element Plus- 表格-分页条-中文语言包-对话框-Form表单
  • 甘州区建设局网站wordpress谷歌广告
  • 纪检网站建设动态主题国内建站平台
  • 网站页面的大小写国内seo服务商
  • 如何在关键里程碑已延迟的情况下重新规划项目进度
  • 排版好看的网站界面湖北企业响应式网站建设价位
  • 光伏电站运维-可视化大屏带来的便利