技术标签: ko编译环境 GKI linux rockchip RK3588 Android
当需要给第三方提供kernel的ko编译环境时,又不想提供完整的kernel源码,则可以对kernel进行裁剪提取出最小的编译环境和编译器提供给第三方即可。
Rockchip Android13平台kernel的编译器是clang,可以把android上面clang直接压缩包括,具体路径是:
prebuilts/clang/host/linux-x86/clang-r450784d
命令如下
export PATH=prebuilts/clang/host/linux-x86/clang-r450784d/bin:$PATH
make CROSS_COMPILE=aarch64-linux-gnu- LLVM=1 LLVM_IAS=1 ARCH=arm64 gki_defconfig rockchip_gki.config && make CROSS_COMPILE=aarch64-linux-gnu- LLVM=1 LLVM_IAS=1 ARCH=arm64 rk3588-evb1-lp4-v10.img -j32
find -name *.c | xargs rm
find -name *.ko | xargs rm
find -name *.img | xargs rm
find -name *.o | xargs rm
find -name *.a | xargs rm
rm drivers/ -rf
rm arch/arm64/boot/dts/rockchip/ -rf
rm *.img
rm arch/arm64/boot/dts/ -rf
rm .git -rf
rm Documentation/ -rf
rm vmlinux
rm ./crypto/
rm ./crypto/ -rf
rm ./arch/arm64/boot
rm ./arch/arm64/boot -rf
rm net/ -rf
rm sound/ -rf
rm fs/ -rf
rm tools/ -rf
rm block/ -rf
rm arch/arm/boot/ -rf
rm kernel/ -rf
rm samples/ -rf
rm -rf security/
rm -rf usr/
rm -rf ipc/
按以上步骤提取编译后面后,就可以进行第三方的驱动KO编译了。下面以hello.ko为例进行说明
hello.c
#include <linux/init.h>
#include <linux/module.h>
#include <linux/kernel.h>
static int driver_all_init(void)
{
printk("hello module\n");
return 0;
}
static void driver_all_exit(void)
{
}
module_init(driver_all_init);
module_exit(driver_all_exit);
MODULE_LICENSE("GPL");
MODULE_AUTHOR("jiazh");
MODULE_DESCRIPTION("a hello module");
Makefile
obj-m := hello.o
KER= ../../kernel-5.10/
all:
@rm -rf *.ko
@make -C $(KER) M=$(PWD) modules
@rm -rf *.mod* *.sym* .*.cmd *.order *.o
clean:
@rm -rf *.ko
@rm -rf *.mod* *.sym* .*.cmd *.order *.o
export PATH=../prebuilts/clang/host/linux-x86/clang-r450784d/bin:$PATH
make CROSS_COMPILE=aarch64-linux-gnu- LLVM=1 LLVM_IAS=1 ARCH=arm64 -C ../../kernel-5.10 M=$PWD -j32
文章浏览阅读2.8k次,点赞3次,收藏20次。电路基础(2)电阻电路的等效变换_电阻电路的等效变换
文章浏览阅读818次。WEB应用中,经常会遇到上传附件的问题,比如有时候会有限制附件大小的需求。那么如何去判断附件的大小呢? 方法如下:(遗憾的IE中只能判断出图片文件的大小) <html> <head> <title>JS获取文件大小 </title> <script type='text/javascript'> ..._js ios 上传时获取不到文件的大小
文章浏览阅读3.4k次。以prefork模式为例来说明参数的设置,其缺省设置一般如下: ServerLimit 2000 StartServers 5 MinSpareServers 5 MaxSpareServers 10 _org.apache.johnzon.max-string-length
文章浏览阅读783次,点赞16次,收藏24次。wireshark抓HTTP包。_window size是发送窗口还是接收窗口
文章浏览阅读1.2k次。Nginx日志切割 手动+定时两种方式 非常详细_nginx 定时任务
文章浏览阅读632次。yolov7的文件夹打开之后是这个样子啦以下是三个常见已经标注好的yolo格式数据集会按照以下格式进行存放train.txtval.txt网上有很多几种格式互相转换的教程。_yolov7的数据集格式
文章浏览阅读231次。软件设计模式的产生背景“设计模式”这个术语最初并不是出现在软件设计中,而是被用于建筑领域的设计中。1977 年,美国著名建筑大师、加利福尼亚大学伯克利分校环境结构中心主任克里斯托夫·亚历山大(Christopher Alexander)在他的著作《建筑模式语言:城镇、建筑、构造(A Pattern Language: Towns Building Construction)中描述了一些常见的建筑设计问题,并提出了 253 种关于对城镇、邻里、住宅、花园和房间等进行设计的基本模式。1979 年他的另一部_面向对象编程的经典模式
文章浏览阅读4.5w次,点赞22次,收藏133次。sklearn是很强大的机器学习的库,传统的机器学习任务从开始到建模的一般流程是:获取数据 -> 数据预处理 -> 训练建模 -> 模型评估 -> 预测,分类。最开始的是获取数据,sklearn已经给出很多的数据集, 当然也可以通过sklearn自己创建。Sklearn里给出的数据集如下:这里具体怎么调用和创建可以参考博客:https://www.cnblo..._以下划分训练集和测试集x_train、y_train训练集;x_test、y_test测试集
文章浏览阅读3.7k次,点赞4次,收藏17次。通过自学来完善自己:基于自知识蒸馏的特征提取作者:Mingi Ji, Seungjae Shin, Seunghyun Hwang, Gibeom Park1Il-Chul Moon摘要知识提取是一种将知识从预先训练的复杂教师模型转移到学生模型的方法,因此在部署阶段,较小的网络可以取代较大的教师网络。为了减少培训大型教师模型的必要性,最近的文献介绍了一种自我知识蒸馏方法,该方法在没有预先培训的教师网络的情况下,逐步训练学生网络提取自己的知识。虽然自知识蒸馏在很大程度上分为基于数据增强的方法和基于辅助_frskd
文章浏览阅读115次。通过封装验证码类,我们可以方便地生成验证码、输出验证码图像和验证用户输入的验证码。在PHP中,我们可以通过封装一个验证码类来实现验证码的生成和验证功能。这个类将包含生成验证码、输出验证码图像和验证用户输入的验证码等方法。的类,其中包含了生成验证码、创建图像资源、绘制验证码图像、输出验证码图像和验证用户输入的验证码等方法。在这个方法中,我们使用了包含数字和字母的字符集,通过随机选择字符来生成验证码。通过上述步骤,我们可以实现一个基本的验证码功能,并且可以在需要验证用户身份的地方使用它。方法绘制验证码图像。_php生成验证码代码
文章浏览阅读1.3w次。powermock 常遇到的问题之一,如果你需要mock一个静态方法,可能你会发现抛出如下异常org.mockito.exceptions.misusing.MissingMethodInvocationException: when() requires an argument which has to be 'a method call on a mock'.For exa..._org.mockito.exceptions.misusing.missingmethodinvocationexception: when() req
文章浏览阅读1.3k次。239 191 189_proto.unmarshal