自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(89)
  • 资源 (15)
  • 收藏
  • 关注

原创 解决Ubuntu下Qt Creator无法输入中文

环境: ubuntu16.04 fcitx的输入法 Qt Creator 5.10.1首先需要安装 sudo apt-get install fcitx-frontend-qt5然后将:/usr/lib/x86_64-linux-gnu/qt5/plugins/platforminputcontexts/libfcitxplatforminputcontextplug...

2018-04-25 09:40:57 2811 3

原创 关于waitpid的返回值问题

一次偶然的测试中,发现su程序的BUG后,着手排查问题出自哪。 首先是简化代码作为测试。int main(int argc, char *const argv[]){ pid_t pid = fork(); if (!pid) { execv("/bin/ping", argv); /

2017-12-22 11:24:14 5799

原创 kernel4.x imx6 GPIOLIB_API 输出电平问题

很高兴之前分析gpioLib能有机会帮助解决问题。描述下遇到的问题的现象:将GPIO设置为output并设置为高电平,这时候再去读取电平却读到低电平,使用万用表测量管脚,确认是实实在在的高电平。用命令演示一下拗口的文字:# echo out > /sys/class/gpio/gpio34/direciton# echo 1 > /sys/class/gpio/gpio34/value#

2017-10-24 17:18:54 1114 3

原创 关于VERIFY_OCTAL_PERMISSIONS权限检查

修改内核创建/sys文件系统下的文件的权限时将代码从 __ATTR(type, 0644, xx_show, NULL); 改为 __ATTR(type, 0666, xx_show, NULL); 编译时会报错:include/linux/bug.h:33:45: error: negative width in bit-field '<anonymous>'#def

2017-10-20 16:19:27 3104 3

原创 Linux 4.x 之Gpio分析(一)Gpiolib库1

芯片定义设备树代码小结下面的内容均在imx6平台上举例,这一次分析希望将整个GPIO子系统的所有细节整理清晰。第一篇从gpiolib入手,后面的边分析边写.开始之前给自己提几个问题驱动开发中的GPIO API 究竟是怎么实现的?GPIO的中断又是怎么实现的?GPIO号和IRQ的号码怎么映射的?1.芯片定义我们在驱动程序中会用到gpio_request(x),这里的x便是gpio的编号,

2017-10-13 16:56:20 4638 4

原创 version magic 不一致问题

碰到一个问题,在开发过程中发现以前编译的模块加载失败了。wlan: version magic '4.1.15-gfb2dbf6 SMP preempt mod_unload ARMv7 p2v8 ' should be '4.1.15-ge5de83b-dirty SMP preempt mod_unload ARMv7 p2v8 '这里看到version magic 存在不一致的问题的,不一致的

2017-07-26 11:16:10 17089 2

原创 Android7.1 Selinux使用

Android7.1 Selinux使用讲Selinux的原理的文章太多了,讲实际使用也是有一些,但是都不够完整,这里举一个在Android7.1下的服务的例子。服务第一步,我们会在init.rc下增加服务。 因为我的设备是freesale sabresd 所以路径是: device/fsl/sabresd_6dq/init.rcservice crondd /system/bi

2017-07-26 10:56:03 7537 2

原创 隐藏虚拟按键 NavigationBar

Android 默认的显示/隐藏 NavigationBar是配置载/system/build.propqemu.hw.mainkeys=0/1修改这个值重启即可显示/隐藏。有这么一个需求,应用打开自动隐藏,关闭后在打开。代码很简单,如下:int flags;            int curApiVersion = android.os.Build.V

2017-02-22 14:30:44 1728

原创 Android 4.4 屏幕旋转

旋转屏幕

2016-10-25 13:50:22 2120

原创 GPIOLIB实现(一)

驱动开发中最基础的就是控制GPIO来驱动硬件

2016-07-21 11:59:21 2617

原创 触摸屏唤醒实现

自助设备在没有人的情况下需要休眠,然而还得通过触摸屏唤醒设备。需要做休眠唤醒必须需要了解一下内核的休眠唤醒机制,相应的android 上得再次加深一下大致流程。触摸唤醒分两种情况:第一种、CPU进入深度休眠第二种、假休眠第二种情况比较容易实现:Android系统休眠的方式在android4.2.2之后就缘用了linux的wak

2016-07-19 15:29:20 9337 2

原创 imx6 android背光控制

LCD的背光主要涉及到两个地方1.休眠和唤醒的开关2.背光的亮度调整安卓设置中可以控制背光的亮度,JNI层的实现frameworks/base/services/jni/com_android_server_LightsService.cppLIGHT_INDEX_BACKLIGHT = 0 hw_module_t* module; Devi

2016-06-14 16:54:09 2618

原创 Android MediaCodec h264硬件编码

使用之前需要了解MediaCodec支持的什么编解码器,对应的编码器支持的输入格式。用下面这个函数检查是否支持的需要的编码器:如"video/avc"private static MediaCodecInfo selectCodec(String mimeType) { int numCodecs = MediaCodecList.getCodecCount();

2016-06-07 10:50:35 4653 4

原创 V4L2视频采集

这里的视频采集是为了得到某种固定的格式的图像,然后提供给编码器进行编码操作。这里视频采集的有几个比较关键的参数1.分辨率2.帧率3.采集的格式我们知道linux内核使用V4L2框架进行摄像头的采集和处理,所以我们要做的事情就是 根据给定的 分辨率和帧率 给出视频流即可这里我使用的平台是Android,当然内核也是linux,只是不同之处是后面增加的JNI

2016-06-07 10:13:16 5236 2

原创 s3c2440中断控制器(九)

翻到芯片手册的中断那一张,首先是一张图。S3C2440 的中断分为片内中断和片外终端,分别对应着SRCPND寄存器左边的两条路。     我们先看简单一条路,外部中断,例如GPIO触发的中断。     首先,当GPIO触发中断后,我们使得SRCPND相应的为置1,如果MASK屏蔽位或者被设置为FIQ(mode位置1) 则进入到中断优先级判定     通过

2016-05-27 01:00:29 1462

原创 RK3288 nonzero urb status received: -71

RK3288使用了两个触摸屏后出现了下面的报错现象。[ 1322.685854] usb 3-1.2.1: hanwang_irq - nonzero urb status received: -71#define    EPROTO        71    /* urb 发生错误: 在传送中发生bitstuff 错误或硬件没有及时收到响应帧 电容屏的使用上出现漏点现象,就是当我手放

2016-05-15 22:43:05 3375 3

原创 jz2440内存实验(八)

前面花了大量力气去看芯片手册和SDRAM相关的管脚定义相关的内容。下面就应该把这个内存芯片给用起来,跑一段程序看看。在(四)中提到,机器初始化需要做的工作:1.关闭看门狗2.初始化时钟3.初始化内存 4.为C语言初始化堆栈。这里因为位对汇编语言的熟悉程序不够,且不说不是不够,是根本不想花时间研究指令怎么用。还有更多的是对于debug汇编语言的

2016-05-08 20:16:50 1325

原创 jz2440SDRAM连接方式(七)

首先我们关心板子的sdram是怎么连接到这个上面去的,看一下原理图两个片选信号同时连接到nGCS6并且看出每个芯片的是16跟数据线X2 组成32位地址线。接着观察地址地址13根,练到LADDR2----LADDR14BA0 BA1 接到ADDR24 ADDR25   【这个是片选择哪一个bank】这里有一个疑问为什么不是接到三星2440 A0

2016-05-02 21:03:17 3337

原创 2440存储器管管理(六)

The S3C2440A memory controller provides memorycontrol signals that are required for external memory accessLittle/Big endian (selectable by a software)— Address space: 128Mbytes per bank

2016-05-02 20:57:02 1492

原创 用开关控制LED(五)

这个比较简单,和之前说的控制LED没有本质的差别。我们看一下原理图开关和LED的位置。这里开关并不是灯连一起的,我们只能检测开关状态然后控制灯。裸机下不知道怎么控制中断寄存器,就先用GPIO的输入功能先了。我们把按键的gpio设置为输入功能,led的gpio设置为输出功能。一个循环来检测按键的状态,如果按下就给灯的gpio输出

2016-05-02 20:38:37 1826

原创 使用C语言(四)

从汇编跳入C语言,我们需要设置一下堆栈,才能正常使用。除此之外,硬件上还有一些东西需要初始化一下。1.关闭看门狗2.初始化时钟3.初始化内存 然后才是初始化堆栈。我们设置为Nand启动,开机会把前4k拷贝到片内内存SRAM中运行。如果是NOR启动,直接就在Nor上运行了,NOR不太清楚原理就先放弃。那么我们1.关闭看门狗,默认居然是开的

2016-05-02 20:35:22 465

原创 第一个程序测试(三)

第一个程序就low一下点亮一下LED为了测试开发环境准确无误。先看一下原理图:我们看到开发板有3个灯,nLED_1 为低电平的时候亮。对应的分别为GPF4 GPF5 GPF6GPIO的控制方法在芯片的手册的I/O port这章。设置这两个寄存器就可以了PORT CONFIGURATION REGISTER 

2016-05-02 20:32:58 498

原创 jz2440烧录(二)

前面编译好了uboot和kernel现在就看看编译出来的东西有没有用?          2440烧录裸机程序和Uboot似乎只能用jlink之类的工具来烧写,也难怪很多手机刷机把uboot刷坏了就只能返厂修了,原因很简单没有烧的工具了。     uboot以上的层次直接用uboot自带写入就好了。     这里uboot中的烧录功能就不演示了,主要是演示一下,裸板

2016-05-02 20:13:20 816

原创 C语言位操作

C语言提供6个按位操作>> 右移      无符号数或者是正数不用考虑是左端补0, 负数看实现【一些实现补0,一些保留符号位,这种比较科学吧】~   按位取反   【一元运算符】&   按位与^   按位异或|    按位或为了保证可移植性,寄存器当然用unsinged char 或者unsinged int ,当然更详细一点的posix标准里的1字节

2016-04-28 00:22:43 1050

原创 jz2440开始(一)

工作上玩过了全志A20,瑞芯微RK3288后,愈发觉得这些芯片很多地方玩不转,原因很简单因为对硬件不够熟悉,加上安卓框架过于庞大。     为了弥补这个缺陷,加上2440在网上资料比较多,更容易快速系统的学习。所有有了这个开篇,当然在接下去的一段时间内,玩的都会是uboot.     那么首先先搭建一个开发环境,这里买了韦东山开发的jz2440,主要是还是因为资料给的比较多吧,看到

2016-04-27 15:42:41 2561

原创 error: DIV usage mismatch between xx and output

使用NDK编译代码的时候,常常需要导入预编译库。然而使用预编译库的时候报错了。因为库文件是android源码编译出来或者是其他NDK版本产生的,库版本存在了不兼容的情况。这里明显看出DIV 函数不兼容。/home/u/android-ndk-r8e/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86_64/

2016-01-20 14:27:35 2865

原创 视频通话开发(一)

打算记录一个网络电话开发的历程。一是记录一下自己开发中遇到的问题,二是解除一下一个人奋斗的苦闷。目前的阶段是实现了点对点之间的音频传输。说起来做这个东西,源自不靠谱的需求,所以我干的活也具备很多不确定性,所以开发的流程也是自己任性,就要重头做一遍。至于为什么要冲头做一次,原因是这样的。其实最符合需求现状的是带语音视频监控,然而非得弄成视频通话。交互平

2016-01-19 20:49:41 2344

原创 Linux 抓USB包

在windows上有不少抓取USB包的工具,但有种情况程序是基于linux开发的,所以。这里内核的一个工具usbmon 和 tcpdump,这里在Ubutu下测试,其他嵌入式设备并没有测试,相信只要内核支持了问题就不大。1. 配置内核Device Driver   ---->  [*] USB support  --->   M>     USB Monit

2016-01-11 16:42:38 4833 1

原创 Android_shell编程

作为底层人员开发android测试程序,经常用到一些脚本来开发一些功能,集成到APP中。如果使用编码来实现shell脚本,一来非常麻烦,二来效率低,三来很多功能根本实现不了。这里很多脚本需要root来运行,那么作为开发的设备,首先得确保能正常获取到ROOT权限。ROOT的方法具体的设备均不相同,但原理都是通的。1. 破解和集成su命令2. 权限管理软件如:Super

2016-01-11 14:36:14 1651

原创 java_mail 发送邮件

1.资源1.1使用JavaMail这个JAR包下载地址:http://download.csdn.net/detail/zmnqazqaz/93991751.2.准备一个用来发送邮件的邮箱2.代码2.1 把邮件服务器和发邮件的邮箱做成配置文件#smtp服务器mail.smtp.host=smtp.sina.com#身份验证mail.smtp.auth=tr

2016-01-11 14:09:55 987

原创 Google_FaceDetetor CameraHal 实现

Google_FaceDetetor CameraHal 实现基于RK3288平台的实现。 android.media.FaceDetector 安卓SDK提供人脸检测这个类,用法非常的简单,下面是需要分析一下这个功能的实现。 使用方法 首先,大致看一下从应用层调入到HAL层的流程。 packages/apps/Camera/src/com/android/c

2015-12-05 17:06:02 3353 4

原创 anroid USB类设备无法自动生成节点解决

在调试USB设备发现一个比较怪异的现象,为什么没有自动生成设备节点。这里想到第一个解决办法,mdev插上usb后使用命令 busybox mdev -s 发现设备节点在应该出现的位置出现了。那么想到一个解决办法,当热插拔时间出现后自动嗲用mdev -sln  -s busybox mdevecho /system/bin/mdev > /proc/sys/kernel/

2015-11-06 11:40:19 2334

原创 RK3288 uvc摄像头调试

曾经在全志平台上调试过UVC摄像头,当时调试过程比较流畅,丝毫没有碰上异常情况,这一次在RK上碰到较大的困难,下面介绍一下我的调试过程。首先,不用说当然在内核配置中配置上UVC摄像头,重新编译内核,烧录。Device Drivers ---> Multimedia support ---> Video For Linux[*] Enable Video Fo

2015-10-31 20:30:51 14932 11

原创 RK3288 环境搭建

目前世面是RK3288的板子并不多,其中有两款,popMeta和fireFly. 因为用到I/O比较多,所以选择了前者。下面就讲讲搭建环境要注意的一些地方。首先当然是要get SDK, 这里因为整个代码比较大,推荐使用网盘下载,下载的方法官方有给出比较详细的说明。http://wiki.chipspark.com/cn/index.php/PopMetal%E5%BC%80%E5%8F

2015-09-22 01:24:35 5925

原创 Linux下安装ADB

1. 安装adb工具。从谷歌的网站下载LINUX adb调试工具(翻墙)http://developer.android.com/tools/device.html 另外,debine系列的系统可以使用sudo apt-get install android-tools-adb如果发现源中没有这个程序:sudo add-apt-reposi

2015-07-10 23:36:39 37394

原创 关于android系统的分辨率:使用其他设备模拟该分辨率

开发的时候需要适配很多种奇葩的LCD尺寸,这些设备分辨率往往很多适配起来很麻烦,加上手头往往没有对应设备。比如说:我碰到一个分辨率是1440x900 并且屏幕的方向是竖屏,还有 1280x1024这种模拟器都不支持的分辨率。这些设备往往不在身边,测试起来就比较麻烦。        这里我总结一下如何方便的进行对这些屏幕的开发。1.首先我们得确定屏幕的分辨率 和 像素密度分辨

2015-07-04 20:16:24 4026

原创 andorid pppoe拨号上网

简单介绍一下PPPOE拨号首先,我们通过介质(网线)连接到ISP的主机,这时候我们的机器只能和ISP通讯,除此之外就不能干其他的事情了。然后我们需要和ISP协商我想访问外网输入用户名密码,通过他的验证后,他就会分配一个IP地址,让你访问外网了。从中我们可以看出,如果我们想进行PPPOE拨号的开发验证,如果我们使用家里用的网线拨号会将是一个非常痛苦的情况,我很难经行调试跟踪。 所

2015-06-14 00:29:45 3485

原创 VirtrueBox 镜像压缩

最近发现了

2015-06-13 23:27:26 1284

原创 Andorid连接USB打印机

当时有那么一个情况 验证Andorid连接一个打印机,并成功打印一些无关痛痒的字符。         首先先介绍一下打印机,是一个连牌子都没有的打印机,一个标准的windows打印机(在winxp上连驱动都没装就直接用了,我之前应该是装了串口驱动的)         Andorid设备直接可以通过USB连接,如果是手机的话得用OTG先转一下。        下面

2015-04-19 16:54:05 1695

原创 内核链表

在研究Linux内核前和驱动开发之前,需要先了解一下内核中常用的一些工具,接下来的主题就是内核链表。        可能我们在数据结构里都听说过链表,或者学过链表。我们还知道链表这东西还挺麻烦,稍有不慎就导致整个程序崩溃了。        Linux中大量用到了内核链表,我们就来看看这个链表有什么特殊之处,可以被广泛使用。          首先,回顾一下我们在严蔚敏老太太书中呈现

2014-12-05 17:59:43 637

高通平台audio入门

1 Audio软硬件系统框架 7 2 Audio bringup 13 2.1 Bringup 流程 14 2.1.1. Peripheral Image Loader (PIL) 是否成功加载? 14 2.1.2. SLIMbus 是否UP? 15 2.1.3确认声卡是否注册? 16 2.1.4. 确认codec上电时序和是否正确复位? 16 2.1.5 软硬件是否匹配? 16 2.1.6. GPIO配置 19 2.1.7 集成外部芯片模块 19 2.1.8. 配置audio通路 19 2.2 Bringup kernel层 20 2.2.1 Device tree 20 2.3 Bringup 系统层 22 2.3.1 audio相关的系统属性列表 22 2.4 Bringup Hal层 24 2.4.1 Device table 24 2.4.2 A

2022-09-06

Android O Treble HIDL

android HIDL分析

2020-11-03

深入应用C++11代码优化与工程级应用.pdf

深入应用C++11代码优化与工程级应用.带书签。完美

2019-06-30

rockchip_neven

人脸检测 Google_FaceDetetor CameraHal 实现 http://blog.csdn.net/zmnqazqaz/article/details/50186537

2017-06-26

android_h264_encode.rar

从V4L2获取视频数据.然后使用MediaCode编码

2016-10-28

V4L2摄像头采集

V4L2摄像头采集,根据分辨率和帧率 用于android

2016-06-07

android_h264硬编码

android_h264硬编码实现demo

2016-06-07

sun的邮件类jar

sun 公司开发的java发送邮件jar包

2016-01-11

mbrfix.EXE

MbrFix(mbr修复工具)用于在windows和linux双系统中,删除linux系统时恢复mbr 安装过linux系统的朋友,有过这样的经历,安装Grub的时候,把硬盘的MBR修改了,但是删除linux的时候,却连原来的windows系统也启动不了,怎么办? 写入MBR的方法,有两种比较简单 第1种方法:就是将Windows的安装盘放入计算机以后,重启计算机,进入Windows安装程序,随后,进入恢复控制台,输入命令fixmbr即可。 第2种方法是为没有Windows安装盘的朋友准备的,就是使用MBRFix工具进行修复。 MBRFix工具修复MBR很方便,先进入cmd命令窗口,然后进入mbrfix工具所在的目录(用cd命令),然后输入命令 MbrFix /drive 0 fixmbr ,再确认一下即可。重启以后你会发现,没有了Linux,直接可以进入Windows了。

2014-06-30

最全的ARM嵌入式视频教程100G

ARM视频 嵌入式linux培训班视频 13.6GB AVI 嵌入式linux开发裸机教程 -伟东山ok6410(裸机调试部分) 5.83GB WMV iOS嵌入式开发视频教程全集 17.91GB RAR 成都国嵌嵌入式培训中心的基于2440/6410开发板的视频教程 59.1GB IOS LAMP兄弟连李明老师新版原创Linux视频教程 2.1GB WMV

2014-06-28

OpenCV教程-基础篇+代码.zip

国内第一本OpenCV中文教程。 附带代码

2014-06-11

安卓开发路线

ANDROID 开发路线图

2013-11-08

51单片机C语言创新教程

51单片机C语言创新教程

2013-02-26

离散数学自学辅导

离散数学自学辅导

2013-02-26

C程序设计语言(第2版·新版)非扫描版

很经典的一本书 很清晰 很适合新手入门 欢迎收藏

2012-08-14

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除