![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
嵌入式驱动开发
文章平均质量分 65
橙忆辉
坚持,每天进步一点点……
展开
-
在linux下编译 adb 和 fastboot
现在进行android开发必然会使用到fastboot模式升级image,fastboot的源码在android源码的 /system/core/fastboot 文件下adb的源码在android源码的 /system/core/adb 文件下。介绍fastboot协议的文件是fastboot_protocol.txt,在android源码的 /bootable/bootlo原创 2013-05-08 17:21:35 · 3098 阅读 · 0 评论 -
Android6.0 Disk I/O error
Android6.0 Disk I/O errorAndroid6.0 使用过程中遇到无法开机,宕机在开机动画中,error log:04-01 02:06:38.213 E/AndroidRuntime( 864): *** FATAL EXCEPTION IN SYSTEM PROCESS: main04-01 02:06:38.213 E/AndroidRuntime( 864): ja原创 2017-04-01 14:42:25 · 4367 阅读 · 0 评论 -
Linux内核模块编程与内核模块LICENSE
Linux内核模块简介Linux内核的整体结构已经非常庞大,而其包含的组件也非常多。我们怎样把需要的部分都包含在内核中呢?一种方法是把所有需要的功能都编译到Linux内核。这会导致两个问题,一是生成的内核会很大,二是如果我们要在现有的内核中新增或删除功能,将不得不重新编译内核。 有没有一种机制使得编译出的内核本身并不需要包含所有功能,而在这些功能需要被使用的时候,其对应的代码被动态地加载到内核中呢?转载 2017-04-10 18:37:13 · 721 阅读 · 0 评论 -
linux __setup的作用
问题: 比如在printk.c有这样一句__setup("console=",console_setup);还有,在main.c中__setup("root=",root_dev_setup);人家的精彩回答:你的这个问题,我从google上查找到了一些资料,再结合内核源代码,就在这里把这个问题说的清楚一点. 首先,这里有一个简短的回答, http://mail.nl.linux.org/ke转载 2017-04-12 10:29:05 · 374 阅读 · 0 评论 -
linux中字符串转换函数 simple_strtoul
Linux内核中提供的一些字符串转换函数:lib/vsprintf.cunsigned long long simple_strtoull(const char *cp, char **endp, unsigned int base) unsigned long simple_strtoul(const char *cp, char **endp, unsigned int base) lo转载 2017-04-12 10:37:40 · 10526 阅读 · 0 评论 -
MSM平台RPM
Software Component Block DiagramRPM(Resource Power Manager)是高通MSM平台另外加的一块芯片,虽然与AP芯片打包在一起,但其是一个独立的ARM Core。之所以加这个东西,就是要控制整个电源相关的shared resources,比如ldo,clock。负责与SMP,MPM交互进入睡眠或者唤醒整个系统。 以下是高通文档中对各个功能模块的说明转载 2017-04-12 15:38:21 · 1502 阅读 · 0 评论 -
基于QualComm的mmc driver解析(Kernel-3.10)——(1)mmc bus
MMC:MMC就是 MultiMediaCard 的缩写,即多媒体卡 SD:SD卡为Secure Digital Memory Card, 即安全数码卡,(另TF卡又称microSD) SDIO:SDIO是在SD标准上定义了一种外设接口 MCI:MCI是Multimedia Card Interface的简称,即多媒体卡接口。上述的MMC,SD,SDI卡定义的接口都属于MCI接口SD卡引脚:原创 2017-04-20 18:03:29 · 930 阅读 · 0 评论 -
Linux驱动开发常用调试工具---之内存读写工具devmem和devkmem
How about Android ? :code: system/core/toolbox/r.cusage: #/system/bin/r 0x1013000 #/system/bin/r 0x1013004 #/system/bin/r 0x1013008 #/system/bin/r 0x101300C 问题这段时间实验室要完成一个内存故障注入工具和寄存器故转载 2017-04-21 17:04:45 · 1381 阅读 · 0 评论 -
基于QualComm的mmc driver解析(Kernel-3.10)——(2)sdio总线
sdio总线的注册函数也是在core.c 文件中调用注册的:ret = sdio_register_bus(); if (ret) goto unregister_host_class;sdio_register_bus 在sdio_bus.c 文件中定义:int sdio_register_bus(void){ return bus_register(&sdio_原创 2017-04-26 14:34:51 · 862 阅读 · 0 评论 -
insmod安装内核module,提示Required key not available
最近在调试一个驱动的时候,用insmod加载.ko的时候,提示Required key not available,第一反应是签名有问题,内核模块也开始使用类似apk的签名了吗?查资料后果然是这样。这个问题可以说不算是android的问题,而应该是linux系统的问题,android本身就是个linux系统。下来一步一步分析问题的所在。内核配置内核从3.7后开始支持模块签名,这个功能使能以后,内核只原创 2017-04-10 16:24:54 · 13073 阅读 · 0 评论 -
VirtualBox kernel driver not installed 解决办法
更新ubuntu krenel成功reboot后, 发现VirtualBox不能正常使用,报出以下错误: VirtualBox kernel driver not installed. The vboxdrv kernel module was either not loaded or /dev/vboxdrv was not created for some reason. ‘/etc/原创 2016-08-01 19:19:18 · 31226 阅读 · 5 评论 -
kernel里initcall debug
设置initcall_debug 变量,该变量在init/main.c中定义:bool initcall_debug;修改成bool initcall_debug = 1;这时编译运行,发现还没有打印initcall log,查找原因,发现是printk的loglevel 比较高,kernel debug的level比较低, 然后在/kernel/printk.c 文件中把printk的logle原创 2016-04-20 16:13:45 · 3008 阅读 · 0 评论 -
GNU 网站地址
GNU 网站地址如下: http://www.gnu.org/ gnu有关的软件及文档都可以在该网站里寻找。原创 2013-07-31 13:10:22 · 3130 阅读 · 0 评论 -
读取arm mpu的MIDR寄存器
使用如下命令可以读取arm cpu的midr寄存器:MRC p15, 0, , c0, c0, 0; Read MIDR into Rt在c语言中可以使用如下语句把midr寄存器的值读取到变量i中:asm ("mrc p15, 0, %0, c0, c0, 0" : "=r" (i));然后返回i即可,根据该寄存器的值可以识别mpu的版本。 midr寄存器的定义如下:原创 2013-08-01 15:45:16 · 11700 阅读 · 0 评论 -
git-gui:使用终端打开以后出现错误提示 Spell checking is unavable
安装了git-gui,打开以后出现以下提示:Spell checking is unavable:error:No word lists can be found for the language "zh_CN" 原因:打开的时候会进行拼写检查。 解决方法:gedit ~/.gitconfig,然后在文件末尾追加以下内容:[gui] spelli原创 2013-08-12 10:12:35 · 3036 阅读 · 0 评论 -
tar.xz 格式解压命令
# xz -d linux-3.10.tar.xz# tar -xf linux-3.10.tar原创 2013-08-12 18:20:51 · 582 阅读 · 0 评论 -
ubuntu下vim + ctags + taglist配置和使用
ctags安装ctags可以建立源码树的索引,使程序员在编程时能迅速定位函数、变量、宏定义等位置去查看原形以下是在ubuntu下ctags的下载安装和配置过程:下载并安装ctags,终端输入命令sudo apt-get install ctags建立源码索引,比如我经常需要查阅Linux的内核代码,而这些代码放在/home/hjw951/arm/linux-2.6.12转载 2013-08-12 21:25:47 · 545 阅读 · 0 评论 -
移植测试工具到android
如何移植一个c语言编写的测试工具到android,原创 2014-04-16 10:42:23 · 537 阅读 · 0 评论 -
android4.0 device 设备号 ro.serialno
1.ro.serialno不存在于任何属性文件,比如build.prop, default.prop等,而是在/system/core/init/init.c里由ro.boot.serialno 转换而来,见export_kernel_boot_props()。2.而ro.boot.serialno的来源是/proc/cmdline,也就是linux kernel启动时被传入的cmdlin原创 2014-06-11 16:31:33 · 9944 阅读 · 3 评论 -
执行make menuconfig 有许多错误
$ make menuconfig HOSTCC scripts/basic/fixdep HOSTCC scripts/kconfig/conf.o HOSTCC scripts/kconfig/lxdialog/checklist.o HOSTCC scripts/kconfig/lxdialog/inputbox.o HOSTCC scripts/kc原创 2015-01-30 11:31:32 · 936 阅读 · 0 评论 -
解决git gnutls_handshake失败
http://askubuntu.com/questions/186847/error-gnutls-handshake-falied-when-connecting-to-https-servers解决git 无法clone的问题,错误提示如下error: gnutls_handshake() failed: A TLS packet with unexpected length was rece转载 2016-03-09 11:21:04 · 4524 阅读 · 0 评论 -
QCOM debug ADC
QCOM debug ADCReading VADC channel nodes from the ADB shellRegister dump using ADB shellReading VADC channel nodes from the ADB shell/sys/devices/platform/soc/200f000.qcom,spmi/spmi-0/spmi0-00/200f0...原创 2019-03-30 15:09:12 · 673 阅读 · 0 评论