android 驱动工程师面试日记 做手机产品方案等公司:(模块化岗位,需要对应岗位模块从应用层->系统层->驱动层,理论熟悉,调试经验丰富)tp模块岗位1.TP相关问题中断上下文原理调试tp效果遇到的问题固件升级过程中断唤醒过程2.内核相关问题信号量与自旋锁的区别?分别在哪些场合用到过3.android的启动流程等4.V4L2架构其他:camera, 音频,LCD调过的比较难得bug有哪些?以及驱动加载过程等。...
kernel 字符串切割,字符串转整型,整型转字符串 strsep(&data,","); //字符串切割函数kstrtoint(first,10,&duty_cycle);//字符串转整形 10:十进制sprintf(data,"%d,%d",duty_cycle,fan_freq);//整型数转字符串示例代码:ssize_t dcfan_write(struct file *file, const char __user ...
jdk8下载安装包,android studio3.5下载安装包 首先安装jdk8jdk1.8.0_201安装包:链接:https://pan.baidu.com/s/1AOxQGv7u9xpi5ercNw8z-g提取码:72aa(永久有效)android studio 3.5 安装包:链接:https://pan.baidu.com/s/12MYxZawWCFL5PcooaVMxYg提取码:3x26
rk3288模拟可调占空比pwm波形 一、内核为高精度定时器重新设计了一套软件架构,它可以为我们提供纳秒级的定时精度,以满足对精确时间有迫切需求的应用程序或内核驱动,以下学习使用hrtimer(high resolution timer)高精度定时器。二、hrtimer_init函数初始化定时器工作模式。which_clock可以是CLOCK_REALTIME、CLOCK_MONOTONIC、CLOCK_BOOTTIME中的一种,mode则可以是相对时间HRTIMER_MODE_REL,也可以是绝对时间HRTIMER_MODE_ABS。vo
linux启动过程 Linux启动过程对于初学者而言有点扑朔迷离,这是因为启动过程关乎处理器配置、内存配置、外 围硬件配置,而不同的处理器和硬件系统会釆用不同的策略,从而具体的启动过程会有所差异。但无论差异如何,从计算机系统的角度来看,启动过程一般分为三个步骤,如 图 1-1所示。图 1 - 1 通用系统的启动过程首先是开机,开机就是给系统开始供电,此时硬件电路会产生一个确定的复位时序,保 证 CPU是...
Linux 查找find,grep,cat,echo等命令 Linux中的命令非常多,本节仅介绍一些在开发Android过程中常用的Linux命令。• manm an的含义是 m anual,即手册。当我们不清楚某个Linux命令的作用和用法时,可 以 使 用 mancommand进行查询,command为具体的命令名称,比如man Is。• findfind命令用于查找某个文件或者文件夹,比如:$ find . -name" *.java"...
OpenGrok使用教程之配置多工程项目(下) 1.下载apache-tomcat-8.5.37.tar.gz和opengrok-0.12.1.6.tar.gz,链接:https://pan.baidu.com/s/13TUAyEFDawn3mVkQOHBjwQ提取码:t5yt链接:https://pan.baidu.com/s/1qq-iWYd532_JnLgYrfapQQ提取码:1j1l建立一个openGrok目录备用。安装 c...
opengrok使用教程之单工程(上) OpenGrok简介有些情况下,我们需要在GB级别甚至几十GB级别且随时不断更新的大型代码(比如Android源码)里面搜索阅读源码,那么我们自然而然会有以下一些基本的需求:能够快速搜索代码代码可存放于本地/服务器代码之间可以跳转跨平台易于维护…显然SourceInsight、ctags、grep等工具在这些场景下就不太适合,于是有了OpenGrok这类代码搜索引擎。先看看维...
rk3288 mipi 调试步骤 https://blog.csdn.net/dearsq/article/details/52354593(参考:CSDN博客)https://www.2cto.com/kf/201708/670726.html(参考:CSDN博客)https://www.cnblogs.com/lialong1st/p/9952077.html(参考:CSDN博客)// lcd-xxx-mipi.dtsi...
linux下的source命令(.命令)解释及应用 用法:source filename # filename必须是可执行的脚本文件或者. filename # 注意“.”号后面还有一个空格功能:通知当前shell读入路径为filename的文件并依次执行文件中的所有语句。通常用于重新执行刚修改的初始化文件,使之立即生效,而不必注销并重新登录。例如,当我们修改了/etc/profile文件,并想让它立刻生效,...
Linux应用与网络面试题 linux目录结构linux常用命令vi的3种工作模式:命令行模式、插入模式和底行模式嵌入式系统:以应用为中心,以计算机技术为基础,软件硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统。ARM的7种处理器模式:用户模式、快速中断模式、外部中断模式、管理模式、数据访问终止模式、系统模式。Bootloader:在操作系统内核运行之前...
Linux设备树解析 转载https://blog.csdn.net/smcdef/article/details/77387975Device Tree简介Linus Torvalds在2011年3月17日的ARM Linux邮件列表宣称“this whole ARM thing is a fucking pain in the ass”,引发ARM Linux社区的地震,随后ARM社区进行了一系列的重大修...
int* (*(*fp)(void *))[10] fp是什么类型? int* (*(*fp)(void *))[10]; //这个类型用typedef分解出来1.()的优先级最高所以先看(*fp),fp是个指针;2. 假设 func=(*fp); func(void ) 是个指针函数返回值是个指针,参数是(void),所以fp是指向指针函数的函数指针;3. int P[10] []优先级最高,所以P首先是个数组,数组成员是int型指针,所以看出P是个指...
C语言之指针数组与数组指针 (转载)https://www.cnblogs.com/mq0036/p/3382732.html组指针(也称行指针)定义 int (*p)[n];()优先级高,首先说明p是一个指针,指向一个整型的一维数组,这个一维数组的长度是n,也可以说是p的步长。也就是说执行p+1时,p要跨过n个整型数据的长度。如要将二维数组赋给一指针,应这样赋值:int a[3][4];int (*p)[4];...
linux之平台总线led_dev,led_drv,ledapp程序demo plat_led_dev.c#include <linux/init.h>#include <linux/module.h>#include <linux/platform_device.h>#define GPC0_CONF_REG 0xe0200060#define GPC0_SIZE 8 // 24表示需要使用6个寄存器, 8表示使...
linux 非阻塞之poll和select操作 poll和select操作一个应用使用设备时采用阻塞IO:会使进程休眠,让出CPU,高效非阻塞IO:不停查询,占用CPU,低效一个应用控制多个设备文件来达到需求,但当一个设备文件发生阻塞时调用进程被休眠,其他设备文件就停止工作阻塞方式:在read调用时阻塞应用–>read()–>sys_read—>xxx_read例程IO复用:阻塞一组文件的描述符应用–>...
linux 下创建source insight工程 1.在我的电脑右键,映射网络驱动器2.大体流程如下,其中第三步和第五步后面会有图片显示也可根据用到芯片厂商信号选择x86,arm等,嫌麻烦的话就内核所有添加add all 或者add tree都可以。force all files to be re-parsed:强制所有同步,同步时间比较长大概半个小时左右吧。...
ARM交叉编译工具链gnueabi、none-eabi、arm-eabi等命名的区别 命名规则交叉编译工具链的命名规则为:arch [-vendor] [-os] [-(gnu)eabi]arch – 体系架构,如ARM,MIPSvendor – 工具链提供商os – 目标操作系统eabi – 嵌入式应用二进制接口(Embedded Application Binary Interface)根据对操作系统的支持与否,ARM GCC可分为支持和不支持操作系统,如arm...
make menuconfig配置内核时,*、M 、空格,这3个选项分别表示什么意思 在menuconfig中选择m和 *的区别:*: 模块驱动编译到内核中,启动时自动加载M:标识作为内核模块编译空格:表示该功能不编译到内核中,即新的内核将不支持该功能。m:模块会被编译,但是不会被编译到内核中,只是生成.o文件,我们可以收集这些.o文件做到linux的文件系统中,然后用insmod实现动态加载。模块加载的两种方式1)、动态加载动态加载是将驱动模块加载到内核中,而不能放...