- 博客(264)
- 资源 (3)
- 收藏
- 关注
转载 移植USB无线网卡驱动心得
最近因为需要,要在Zedboard上移植一个无线网卡驱动,因为以前在友善之臂上面移植过,所以以为很简单,没想到这件事情却花了我将近一周才搞好,中间就因为内核的一个小的疏忽,特在此将中间遇到的问题写下来,留作以后谨记。开发板:Zynq Zedboard操作系统:Ubuntu 12,04交叉编译器:arm-Xilinx-Linux-gnueabi gccWIFI 模组:TP
2016-12-27 13:48:24 1983
转载 android4.0.3 bluetooth
android:android4.0.3kernel:linux3.0.8五一放假之前,这个蓝牙可以收发数据了,身上一下子轻松了好多。1.kernel :[*] Networking support ---> Bluetooth subsystem support --->
2016-12-12 15:29:44 1060
转载 Android4.0.3/Android4.2.2 添加 Ethernet
基于Android4.0.3系统上:在网上在网上查找ethernet移植相关资料时发现,若要移植的是Android-xxx的版本的ethernet,就需要android-x86在xxx版本上的相关源码。但是查看android-x86 4.0版本的源码(目前没找到android-x86 4.0.3版本),发现android-x86 4.0版本中也没包含有ethernet相关代码,故下载了et
2016-12-12 14:22:13 1255
转载 安卓底层开发学习经验第二十期
这一期我们来学习一下Android SystemServer所做的事情以及他的一个启动过程。首先我们要明白systemService是我们zygote孵化出来的第一个Android服务程序,而这个服务程序会在他的启动过程中,启动我们所有的Android的核心服务,下面我们来介绍几个主要的服务其中Android systemserver他会派生出下面几个主要服务,首先是我们的电源相
2016-11-30 22:22:46 938
转载 安卓底层开发学习经验第十九期
这一期我们来学习Android bootanim的一个启动过程首先我们来看一下Android bootanim的一个启动过程:首先我们会在init.rc中定义一个bootanim的服务,这个服务在最开始是被disable掉的,是因为我们Android的显示需要依赖于Android系统的surface管理服务,所以我们必须等待整个显示的硬件初始化完成,软件初始化完成,然后才能真正的试用And
2016-11-30 22:15:18 715
转载 安卓底层开发学习经验第十七期
这一期我们来分析一下Zygote是如何在我们的服务中创建一个APP应用的。下面我们来看一下Zygote创建应用我们的zygote再启动过程中,首先会创建一个本地套接字,他就用来接收消息,来创建应用。第二个就是load资源,把资源全部load进来,包括class等。第三就是创建我们的system server,然后这个服务会创建所有的系统服务,并且启动我们第一个lun
2016-11-30 21:08:52 451
转载 安卓底层开发学习经验第十六期
这一期我们来学习Zygote的一个启动过程,以及Zygote是如何启动system_server的下面我们来看一下Zygote服务在启动中做哪些事情首先我们的Zygote服务是被我们的AndroidRuntime这个类所启动的,启动的时候首先要创建一个虚拟机,然后得到我们zygote他的类名和方法,然后去启动我们的zygote服务,在启动过程中我们就会产生我们的第一个j
2016-11-30 21:00:08 415
转载 安卓底层开发学习经验第十五期
这一期我们来学习一下Android的一些基本的服务与Zygote的启动首先我们来看一下在init脚本中配置的一些服务 我们的服务包括netd服务,它主要做的是网络管理,第二个是比较重要的servicemanager,他就是通过一定的机制使我们的client与service服务进行通讯,第三个是我们的surfaceflinge,也就是我们显示的管理,首先要初始
2016-11-30 20:27:44 442
转载 安卓底层开发学习经验第十四期
这一期我们来看一下init进程是如何守护我们的服务我们init进程在守护阶段做的工作有三个,第一个是启动我们的服务,执行我们脚本的命令,第二个是接受shell或系统中的消息,来设置我们系统的prop,第三个就是守护我们的系统服务,如果服务退出,那么就会根据服务的设置状态重启推出的服务下面我们来看一下init进程是如何处理消息与守护服务的这就我们init进程与其他
2016-11-30 20:24:42 431
转载 安卓底层开发学习经验第十三期
这一期我们来看一下我们init进程是如何执行这些脚本,和创建服务、守护服务的。首先来看一下init进程在后期所做的一些工作当我们吧脚本解析完之后,就会把我们的解析结果放到两个结构中,一个是action_list,一个是service_list,在解析完之后我们会使用我们的action_for_each_trigger来将解析脚本中的相关操作添加到我们的action队列中
2016-11-30 17:33:34 548
转载 安卓底层开发学习经验第十二期
下面呢,我们接着上一期的内容来讲解lookup_keyword,下面我们来具体看一下这个函数的实现这个函数就是根据我们传进来的字符串来匹配一个和命令相关的结构体,我们来看一下我们结构体的定义第一个就是一个name,这个name和我们的命令相对应,第二个是我们这个命令所对应的一个函数,第三个对应的是我们args的一个参数,最后一个是结构体所对应的一个类型,我们
2016-11-30 17:11:37 705
转载 安卓底层开发学习经验第十一期
这一期呢,我们主要是学习我们的init进程脚本如何解析我们的启动脚本的,我们init进程做完一些初始化的工作之后就会解析我们的启动脚本,他的启动过程主要分为下面几个部分第一个就是使用init_parse_config_file函数来解析我们的启动脚本,把我们的启动脚本的每一个命令全部解析到我们的一个列表中;第二个就会调用action_for_each_trigger和que
2016-11-30 17:03:54 442
转载 安卓底层开发学习经验第十期
这一期呢我们来学习一下Android的启动脚本,也就是init.rc,那么我们首先来看一下我们的init.rc中都包含有哪些内容我们来看一下init.rc中都包含了哪些内容,先打开init.rc首先是录入了一些其他的脚本,有我们的init.environ.rc 、init.usb.rc等,剩下的就是我们脚本真正所做的内容了,首先是有一个on early-
2016-11-30 16:42:11 749
转载 卓底层开发学习经验第九期
芯灵思开发板INIT守护进程本章主要讲的是芯灵思开发板init守护进程,首先我们来看一下init进程源码的位置,他是放在:system/core/init/init.c ,当我们编译完生成init应用程序后,他会放在:/init下,init是内核起来之后,所启动的第一个进程,我们先将开发板和我们的pc机用USB线连接在一起,然后我们切换到cmd命令下,使用adb命令查看电脑有没有连接到我们
2016-11-30 15:32:32 482
转载 安卓底层开发学习经验第八期
从这章开始,我们来分析Android的一个启动过程的分析我们首先来看一下Android的整个系统的启动分析,首先我们得先给我们的设备通电(Powon),上完电CPU内部会有一个bootloader,这个是在生产的时候就已经烧录好了,它会根据我们的硬件GPIO的一些设置来判断我们的系统是在U盘,SD卡,或者是在内置Flash中启动,然后去引导我们的uboot,我们的ubo
2016-11-30 14:33:21 598
转载 安卓底层开发学习经验第七期
这一期我们继续探索Android.mk ,主要讲的是如何编译jar包,如何编译APK,APK中如何导入jar包和库文件,如何在Android.mk中添加判断语句首先我们看一下如何编译生成APK,下面我们来看一下编译生成APK的主要程序代码:LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_SRC_F
2016-11-30 14:22:51 489
转载 安卓底层开发学习经验第六期
这一期我们继续学习Android.mk的一些语法,主要讲的是如何引入系统库、如何引入第三方库、如何引入静态库、如何进入头文件首先呢,我们先进入我们的Android目录,配置我们的环境变量 .build/envsetup.sh 配置lunch,我们这里依然选择的是19(这里不再细说)然后进入我们的代码目录,cd external/test/ 然后用tree命令看一下代码目录,这个目录下有一
2016-11-30 13:42:24 739
转载 安卓底层开发学习经验第五期
这一期我们还是继续来学习Android.mk,下面我们来思考几个问题:[size=10.5000pt]1.如果说我们一个工程下面有多个源码文件,我们要如何把这些源码文件统一的做个管理,一起来进行编译呢?[size=10.5000pt]2.我们如何在一个.mk文件中编译多个目标文件?[size=10.5000pt]3.如何编译生成一个动态库和静态库我们要将工程下的源码
2016-11-30 11:28:06 548
转载 安卓底层开发学习经验第四期
这一期呢主要讲的是如何编写自己的Android.mk首先呢,我们来看一下Android.mk的作用,如果我们想要在Android的环境下编译生成自己想要的文件,我们可以生成二进制的可执行文件,可以生成动态库、静态库,这是对于C、C++层来说,那么对于我们得java层来说,Android.mk编译生成jar包或者Android.apk这些Android.mk的编写都是我们基于Andr
2016-11-30 11:06:07 719
转载 卓底层开发学习经验 第三期
这一期呢主要讲的是Android编译过程及脚本的分析,主要包括三个方面(1).build/envsetup.sh 的分析 (2)lunch做了什么,如何增加或者删除lunch[size=10.5000pt](3)Android编译命令使用首先呢我们先来看一下Android的编译过程:[size=10.5000pt]1.初始化参数设置[size=10.5000pt]
2016-11-30 10:52:43 819
转载 安卓底层开发学习经验 第二期
这一期呢主要讲的就是安卓开发前的一些环境搭建,首先是有一台Ubuntu的pc机,然后是相关命令的安装,及源码的下载编译,和源码目录的介绍[size=10.5000pt]一、Ubuntu的安装Ubuntu的安装其实就是一个系统的安装,自己只需要去Ubuntu的官网下载一个Ubuntu的iso镜像,然后按照官方的文档进行安装就行了,安装完之后呢我们需要用Ubuntu的sudo apt-ge
2016-11-30 10:16:35 1515
转载 安卓底层开发学习经验第一期
最近想学习一下安卓了,于是在网上买了一块安卓开发板,我买的是芯灵思的开发板,核心板是全志的A31S,感觉性能挺好,而且老板还给了很多的资料,而且还带学习的视频,下面是我在学习完第一期之后的一个经验,希望能跟大家分享一下,也希望各位大神能多多的帮助小弟,小弟在此谢过了。大家可以去芯灵思官方网站看一下安卓开发我们要学习的包括四个部分:[size=10.5000pt]1.安卓开发环境的搭
2016-11-30 10:04:23 4023
转载 安卓底层开发学习经验第十八期
这一期我们学习Zygote在启动过程中的预加载分析与优化下面我们来看一下我们preload加载资源的一个过程我们加载资源分为三种,第一个就是preloadClasses预加载我们的系统类,这个系统类定义的文件是在frameworks/base/preloaded-classes,我们加载的一个过程其实是Class.forName来真正的加载这个类,加载完之后我们就会在zyg
2016-11-30 09:44:57 620
转载 Linux环境下段错误的产生原因及调试方法小结
http://www.cnblogs.com/panfeng412/archive/2011/11/06/2237857.html最近在Linux环境下做C语言项目,由于是在一个原有项目基础之上进行二次开发,而且项目工程庞大复杂,出现了不少问题,其中遇到最多、花费时间最长的问题就是著名的“段错误”(Segmentation Fault)。借此机会系统学习了一下,这里对Linux环境下的
2016-11-12 22:58:52 30235
转载 linux 段错误调试方法
1.如果崩溃在程序中,例如 SMH kernel: process_name[32183]: segfault at 24 ip 0000000000412b13 sp 00007fffaab744e0 error 6 in process_name[400000+6e000] 1> 可以通过 addr2line -e process_name 0x412b13 -f 具体定位到源
2016-11-12 22:57:47 782
转载 【OpenCV入门教程之二】 一览众山小:OpenCV 2.4.8 or OpenCV 2.4.9组件结构全解析
之前啃了不少OpenCV的官方文档,发现如果了解了一些OpenCV整体的模块架构后,再重点学习自己感兴趣的部分的话,就会有一览众山小的感觉,于是,就决定写出这篇文章,作为启程OpenCV系列博文的第二篇。 至于OpenCV组件结构的研究方法,我们不妨管中窥豹,通过opencv安装路径下include目录里面头文件的分类存放,来一窥OpenCV这些年迅猛发展起来的庞杂组件架构。
2016-10-27 22:16:58 959 1
转载 OpenCV学习笔记大集锦
整理了我所了解的有关OpenCV的学习笔记、原理分析、使用例程等相关的博文。排序不分先后,随机整理的。如果有好的资源,也欢迎介绍和分享。1:OpenCV学习笔记作者:CSDN数量:55篇博文网址:http://blog.csdn.net/column/details/opencv-manual.html2:部分OpenCV的函数解读和原理解读作者:梦想腾飞
2016-10-27 22:01:56 516
转载 移植Qt_for_ARM出错小结
移植Qt_for_ARM2012年10月27日21:03[root@localhost qtARM]# ./configure -prefix /usr/local/qtARM/ -embedded arm -xplatform qws/linux-arm-g++ -qt-libtiff -qt-libmng -qt-mouse-tslib -I/usr/local/tsl
2016-09-26 09:51:55 5144
转载 解决Qt程序在Linux下无法输入中文的办法
一位网友问我如何在Linux的Qt的应用程序中输入中文,我一开始觉得不是什么问题,但是后面自己尝试了一下还真不行。不仅是Qt制作的应用程序,就连Qt Creator都无法支持。后面看了一些资料,了解了Qt应用程序的方法,这里和大家分享一下。写一个bash脚本(),内容如下:[plain] view plain copy #!/bi
2016-09-10 09:54:49 518
转载 [S5PV210 Linux字符驱动之PWM蜂鸣器驱动
在SMDK210.C中添加如下beeper_device 结构体static struct platform_device beeper_device = {.name = "pwm_buzzer",.id = 1,.dev = {.parent = &s3c_device_timer[1].dev, //PWM1是定时器1.platform_data
2016-08-31 09:16:54 3437
转载 spin_lock & mutex_lock的区别? .
为什么需要内核锁?多核处理器下,会存在多个进程处于内核态的情况,而在内核态下,进程是可以访问所有内核数据的,因此要对共享数据进行保护,即互斥处理有哪些内核锁机制?(1)原子操作atomic_t数据类型,atomic_inc(atomic_t *v)将v加1原子操作比普通操作效率要低,因此必要时才使用,且不能与普通操作混合使用如果是单核处理
2016-08-29 15:08:29 410
转载 Linux spi驱动分析(三)----spiddev分析
一、spidev简单介绍 如果在内核中配置spidev,会在“/dev”目录下产生设备节点,通过此节点可以操作挂载在该SPI总线上的设备,接下来将从驱动层和应用层来分析程序。二、spidev驱动层2.1、驱动注册 分析一个设备驱动,一般都是从module_init和module_exit处开始,本文也不例外,程序如下:
2016-08-25 11:07:54 1069
转载 Linux spi驱动分析(二)----SPI核心(bus、device_driver和device)
一、spi总线注册 这里所说的SPI核心,就是指/drivers/spi/目录下spi.c文件中提供给其他文件的函数,首先看下spi核心的初始化函数spi_init(void)。程序如下:点击(此处)折叠或打开static int __init spi_init(void){ int status;
2016-08-25 11:06:35 693
转载 Linux spi驱动分析(一)----总线驱动
一、SPI总线驱动介绍 SPI总线总共需要四根线,包括MOSI、MISO、CLK和CS。本文首先从SPI设备注册开始来讲述SPI总线驱动。二、设备注册 在系统启动的时候,会按照顺序执行一些初始化程序,比如device_initcall和module_init等宏。这些宏是按照顺序执行的,比如device_initcall的优先级高于modul
2016-08-25 11:04:59 538
转载 Linux spi驱动分析(四)----SPI设备驱动(W25Q32BV)
一、W25Q32BV芯片简介 W25X是一系列SPI接口Flash芯片的简称,它采用SPI接口和CPU通信,本文使用的W25Q32BV容量为32M,具体特性如下:1.1、基本特性 该芯片最大支持104MHz的时钟,供电电压范围在2.7~3.6V,SPI的片选信号CS低有效,在操作芯片的时候,需要将/WP和/HOLD管脚接电源。
2016-08-25 10:48:19 1026
转载 AM335x(TQ335x)学习笔记——触摸屏驱动编写
前面几篇文章已经通过配置DTS的方式完成了多个驱动的移植,接下来我们解决TQ335x的触摸驱动问题。由于种种原因,TQ335x的触摸屏驱动是以模块方式提供的,且Linux官方内核中也没有带该触摸屏的驱动源码,单纯的配置DTS是无法完成TQ335x的触摸驱动移植工作的,因此,本文参考内核中原有的pixcir_i2c_ts驱动编写TQ335x的触摸屏(TN92)驱动。在之前移植TQ210时,我
2016-08-25 09:29:19 1149
转载 AM335x(TQ335x)学习笔记——WM8960声卡驱动移植
经过一段时间的调试,终于调好了TQ335x的声卡驱动。TQ335x采用的Codec是WM8960,本文来总结下WM8960驱动在AM335x平台上的移植方法。Linux声卡驱动架构有OSS和ALSA两种架构,目前最常用的架构是ALSA,本文也使用ALSA架构对WM8960驱动进行移植。ASoC是对ALSA驱动架构的进一步封装。ASoC将ALSA驱动中的各模块抽象为三部分:Platform、
2016-08-25 09:27:04 2067
转载 S5PV210(TQ210)学习笔记——按键驱动程序
经过前面的配置,S5PV210开发已经可以成功进入Linux控制台了,那么,有了这个环境就可以开始学习Linux驱动的编写和测试了。学习Linux设备驱动,通常是从字符设备驱动开始。我写的第一个驱动程序是Led的,其实也就是熟悉下字符设备驱动的基本结构,本文以中断方式的按键驱动为例,简单的介绍下字符设备驱动程序。一 按键驱动程序的简单实现下面是基于中断和消息的按键驱动程序,
2016-08-20 09:36:02 703 1
转载 linux 内存检测工具之memleak
概述MemLeak 是一个C语言内存泄漏检测工具。 原理是利用 C 语言的宏调用来替代原有的函数调用, memleak 维护了一个链表,在这个链表中保存着程序中对内存函数调用的记录,这些函数包括:malloc、calloc、realloc、free。接口声明(对外)memleak.h代码如下:[cpp] view plain copy
2016-08-12 10:10:04 6863 1
转载 Linux C 内存泄漏检测工具
所有使用动态内存分配(dynamic memory allocation)的程序都有机会遇上内存泄露(memory leakage)问题,在Linux里有三种常用工具来检测内存泄露的情況,包括:mtracedmallocmemwatch1. mtracefrom:mtrace是三款工具之中是最简单易用的,mtrace是一个C函數,在里声明及定义,函数原型
2016-08-12 10:08:11 328
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人