
Linux
文章平均质量分 51
Free飝Fly
这个作者很懒,什么都没留下…
展开
-
crc32 C语言参考源码
【代码】crc32参考源码。原创 2024-06-17 14:36:47 · 259 阅读 · 0 评论 -
linux ALSA 驱动架构
各Driver Probe流程和machine相同,都是调用 devm_snd_soc_register_card和devm_snd_soc_register_component两个函数。首先配置dai-link,然后通过devm_snd_soc_register_card 调用snd_soc_register_card注册card并且解析dai-link,调用snd_soc_card_probe调用platform driver的dai_probe函数。sound:对应machine driver。原创 2023-02-10 15:08:47 · 1740 阅读 · 1 评论 -
Audio参数讲解
音频基础参数frame_bits 一帧数据的位数比如 :16bits 2ch frame_bits = 16*2sample_bits 采样位数 比如16bit 24bit 32bitperiod_size 指一个周期包含多少帧periods 每次处理AD/DA转换的间隔周期内核可以缓冲很多周期的数据,每个周期都会生成一个中断和一个副本,用户层可以间隔很长时间再处理一次,一次可以处理多个周期的数据buffer_size= period_size * periodsparams_p原创 2022-12-05 17:54:34 · 2613 阅读 · 0 评论 -
Linux kernel make clean时忽略部分文件(不被删除)
执行make clean排除部分文件,不被删除转载 2022-11-08 15:47:29 · 1059 阅读 · 0 评论 -
UFS/EMMC压力测试
EMMC,UFS 压力测试原创 2022-06-20 16:42:10 · 3673 阅读 · 2 评论 -
linux kernel spi write_and_read clk不间断
spi_write_and_read,一帧完成写和读,CS保持低,clk不间断原创 2022-04-29 14:34:20 · 3310 阅读 · 3 评论 -
基于Hypervisor智能驾舱的AUTOSAR解决方案
MENTOR嵌入式管理程序 目前,通常使用两种类型的管理程序(图6): Type 1本机管理程序:一种在硬件上本机运行的管理程序,因为它充当核心中的操作系统。Type 2托管虚拟机监控程序:此类型的虚拟机监控程序必须由另一个操作系统托管,并且仅负责使用主机操作系统可用的资源来虚拟化客户操作系统。 图6:虚拟机管理程序 虚拟化的工作原理是从硬件上运行的应用程序中抽象出物理硬件和设备。虚拟化流程管理和配置该系统的资源,包括处理器、内存、存储和网络资源。这使该系统能够同时承载多个工作负载,从而在整个企业中.转载 2021-12-03 11:08:55 · 835 阅读 · 0 评论 -
ARM 虚拟化介绍
0.目录 文章目录 0.目录1.概述1.1 Before you begin 2.虚拟化介绍2.1 虚拟化为什么重要2.2 hypervisors的两种类型2.3 全虚拟化和半虚拟化2.4 虚拟机和虚拟CPUs 3.AArch64中的虚拟化4.stage 2 转换4...转载 2021-12-03 10:36:32 · 2780 阅读 · 0 评论 -
嵌入式HypervisorXvisor与KVM和XEN+ACRN架构的对比分析
目录 目录 目录摘要1.介绍2.虚拟化技术分类2.1 Hypervisor设计1.完全宏内核设计2.部分宏内核设计3.微内核设计 2.2 虚拟化模式1.全虚拟化2.半虚拟化 3. **嵌入式系统的开源Hypervisor**3.1 XEN3.2 KVM3.3...转载 2021-12-03 10:29:07 · 3131 阅读 · 0 评论 -
Kernel 中MakeFile 使用if条件编译
有时需要通过if else来选择编译哪个驱动,单纯的obj-$(CONFIG_)就不是很方便,下面提供两种参考案例:案例一:来源:drivers/char/tpm/Makefileifdef CONFIG_ACPI tpm-y += tpm_eventlog.o tpm_acpi.oelseifdef CONFIG_TCG_IBMVTPM tpm-y += tpm_eventlog.o tpm_of.oendifendif案例二:来源:drivers/char/Mak...原创 2021-11-30 17:22:00 · 580 阅读 · 0 评论 -
Kernel编译使用系统环境变量
在编译Android代码时,有时想使用一个宏控制各个模块的功能开关(preloader、lk、kernel、android)。但是Android device下的project config mk配置默认只对android的代码有效。如果想全局有效,需要修改Google的默认设计。我们可以使用环境变量来实现,需要做的就是将环境变量转换为代码可使用的宏定义。kernel默认的宏定义就是Kconfig文件的定义,而且Kconfig文件是可以读取到系统环境变量的。实例:导出环境变量 expo.原创 2021-07-16 16:45:55 · 986 阅读 · 0 评论 -
通过HEX工具判断so文件是32位还是64位
查看开始的第5个字节,01 代表32位,02代表64位另外linux下可以通过file xxx.so或者通过readelf -h xxx.so 查看文件的ELF Header信息扩展知识:ELF文件格式介绍https://blog.youkuaiyun.com/mergerly/article/details/94585901https://blog.youkuaiyun.com/u012195899/article/details/52684368https://blog.c...原创 2021-03-04 16:22:34 · 1318 阅读 · 1 评论 -
Linux USB Gadget 驱动开启调试信息
CONFIG_DEBUG_FS=yCONFIG_DEBUG_KERNEL=yCONFIG_USB_GADGET_DEBUG=yCONFIG_USB_GADGET_VERBOSE=y原创 2021-02-20 18:12:09 · 675 阅读 · 0 评论 -
RK Android平台RGA功能介绍和接口封装
RK RGA说明:⽬前实现的api功能涵盖拷⻉、旋转、裁剪、缩放、格式转换和合成,⽬前仅需要关注以下2个API即可,使⽤如下的2个函数就能满⾜上述功能。int RgaBlit(rga_info *src, rga_info *dst, rga_info *src1) ;int rga_set_rect(rga_rect_t *rect,int x, int y, int w, int h, int sw, int sh, int f);librga接口函数librga ...原创 2021-02-03 16:52:08 · 10055 阅读 · 5 评论 -
Linux/Android 实现CDC+MASS STORAGE复合设备
由于产品需要,需将设备枚举为CDC + MASS STORAGE 或 +ETHER 等设备,如果使用configfs的方式,由于没有提供复合设备功能,简单的复合(例如uac + adb)是不行的,因为uac cdc uvc这些都是gs节点,简单复合后虽然能枚举出来,但是会出现叹号,无法正常工作。除非自己写一个复合设备驱动。好在linux已经提供了一些常用的复合设备驱动,例如cdc + mass storage + ether,但是如何使用,并未做详细的说明,会出现加载驱动识别的情况,failed to.原创 2020-12-22 12:15:55 · 1231 阅读 · 4 评论 -
UVC webcam驱动添加分辨率
kernel webcam驱动默认只支持640*360 和 1280 * 720分辨率支持下面讲讲如何添加自己的分辨率,以添加640*960为例static const struct uvc_format_uncompressed uvc_format_yuv = { .bLength = UVC_DT_FORMAT_UNCOMPRESSED_SIZE, .bDescriptorType = USB_DT_CS_INTERFACE, .bDescriptorSubType = UVC_V.原创 2020-11-11 16:12:49 · 2700 阅读 · 0 评论 -
kernel config配置模块编译不生效的可能原因
有时我们想把一个驱动编译为模块形式,在kernel的config配置为m编译是报***配置项 creates inconsistent choice state 编译后发现驱动并没有被编译,检查kernel下的.config并没有该配置项就以CONFIG_USB_G_WEBCAM为例,单独将CONFIG_USB_G_WEBCAM配置为m就报USB_G_WEBCAMcreates inconsistent choice state的警告。出现这个问题的原因是Kconfig中有...原创 2020-11-03 12:16:18 · 4183 阅读 · 0 评论 -
Ubuntu设置仅允许某些IP或用户登录系统和访问Samba
一、仅允许特定用户通过ssh登录sudo vi /etc/ssh/sshd_config空白处添加#如果仅允许用户,不限制IPAllowUsers ubuntu#仅允许特定用户特定IPAllowUsers ubuntu@10.138.20.21保存退出后执行sudo service ssh restart二、限制IP、IP段登录sudo vi /etc/hosts.deny添加sshd:ALL先禁止所有IP登录sudo vi /etc/hosts.allo原创 2020-09-09 14:58:59 · 3323 阅读 · 0 评论 -
RK平台关闭温度控制降频功能
策略切换到user_space:开机后输入echo user_space > /sys/class/thermal/thermal_zone0/policy或者把mode设置成disabled状态:echo disabled > /sys/class/thermal/thermal_zone0/mode解除频率限制:/* 具体有多少个cdev,根据实际情况修改 */echo 0 > /sys/class/thermal/thermal_zone0/cdev0/cur_s原创 2020-08-20 09:58:21 · 2153 阅读 · 0 评论 -
mmap内核与用户程序使用示例
mmap概述共享内存可以说是最有用的进程间通信方式,也是最快的IPC形式, 因为进程可以直接读写内存,而不需要任何数据的拷贝。对于像管道和消息队列等通信方式,则需要在内核和用户空间进行四次的数据拷贝,而共享内存则只拷贝两次数据: 一次从输入文件...转载 2020-08-14 15:12:03 · 433 阅读 · 0 评论