- 博客(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
2884
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
6002
原创 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
1198
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
3411
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
4842
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
17425
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
7601
1
原创 隐藏虚拟按键 NavigationBar
Android 默认的显示/隐藏 NavigationBar是配置载/system/build.propqemu.hw.mainkeys=0/1修改这个值重启即可显示/隐藏。有这么一个需求,应用打开自动隐藏,关闭后在打开。代码很简单,如下:int flags; int curApiVersion = android.os.Build.V
2017-02-22 14:30:44
1900
原创 触摸屏唤醒实现
自助设备在没有人的情况下需要休眠,然而还得通过触摸屏唤醒设备。需要做休眠唤醒必须需要了解一下内核的休眠唤醒机制,相应的android 上得再次加深一下大致流程。触摸唤醒分两种情况:第一种、CPU进入深度休眠第二种、假休眠第二种情况比较容易实现:Android系统休眠的方式在android4.2.2之后就缘用了linux的wak
2016-07-19 15:29:20
9972
原创 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
2697
原创 Android MediaCodec h264硬件编码
使用之前需要了解MediaCodec支持的什么编解码器,对应的编码器支持的输入格式。用下面这个函数检查是否支持的需要的编码器:如"video/avc"private static MediaCodecInfo selectCodec(String mimeType) { int numCodecs = MediaCodecList.getCodecCount();
2016-06-07 10:50:35
4767
2
原创 V4L2视频采集
这里的视频采集是为了得到某种固定的格式的图像,然后提供给编码器进行编码操作。这里视频采集的有几个比较关键的参数1.分辨率2.帧率3.采集的格式我们知道linux内核使用V4L2框架进行摄像头的采集和处理,所以我们要做的事情就是 根据给定的 分辨率和帧率 给出视频流即可这里我使用的平台是Android,当然内核也是linux,只是不同之处是后面增加的JNI
2016-06-07 10:13:16
5472
1
原创 s3c2440中断控制器(九)
翻到芯片手册的中断那一张,首先是一张图。S3C2440 的中断分为片内中断和片外终端,分别对应着SRCPND寄存器左边的两条路。 我们先看简单一条路,外部中断,例如GPIO触发的中断。 首先,当GPIO触发中断后,我们使得SRCPND相应的为置1,如果MASK屏蔽位或者被设置为FIQ(mode位置1) 则进入到中断优先级判定 通过
2016-05-27 01:00:29
1571
原创 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
3608
3
原创 jz2440内存实验(八)
前面花了大量力气去看芯片手册和SDRAM相关的管脚定义相关的内容。下面就应该把这个内存芯片给用起来,跑一段程序看看。在(四)中提到,机器初始化需要做的工作:1.关闭看门狗2.初始化时钟3.初始化内存 4.为C语言初始化堆栈。这里因为位对汇编语言的熟悉程序不够,且不说不是不够,是根本不想花时间研究指令怎么用。还有更多的是对于debug汇编语言的
2016-05-08 20:16:50
1376
原创 jz2440SDRAM连接方式(七)
首先我们关心板子的sdram是怎么连接到这个上面去的,看一下原理图两个片选信号同时连接到nGCS6并且看出每个芯片的是16跟数据线X2 组成32位地址线。接着观察地址地址13根,练到LADDR2----LADDR14BA0 BA1 接到ADDR24 ADDR25 【这个是片选择哪一个bank】这里有一个疑问为什么不是接到三星2440 A0
2016-05-02 21:03:17
3450
原创 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
1544
原创 用开关控制LED(五)
这个比较简单,和之前说的控制LED没有本质的差别。我们看一下原理图开关和LED的位置。这里开关并不是灯连一起的,我们只能检测开关状态然后控制灯。裸机下不知道怎么控制中断寄存器,就先用GPIO的输入功能先了。我们把按键的gpio设置为输入功能,led的gpio设置为输出功能。一个循环来检测按键的状态,如果按下就给灯的gpio输出
2016-05-02 20:38:37
1889
原创 使用C语言(四)
从汇编跳入C语言,我们需要设置一下堆栈,才能正常使用。除此之外,硬件上还有一些东西需要初始化一下。1.关闭看门狗2.初始化时钟3.初始化内存 然后才是初始化堆栈。我们设置为Nand启动,开机会把前4k拷贝到片内内存SRAM中运行。如果是NOR启动,直接就在Nor上运行了,NOR不太清楚原理就先放弃。那么我们1.关闭看门狗,默认居然是开的
2016-05-02 20:35:22
497
原创 第一个程序测试(三)
第一个程序就low一下点亮一下LED为了测试开发环境准确无误。先看一下原理图:我们看到开发板有3个灯,nLED_1 为低电平的时候亮。对应的分别为GPF4 GPF5 GPF6GPIO的控制方法在芯片的手册的I/O port这章。设置这两个寄存器就可以了PORT CONFIGURATION REGISTER
2016-05-02 20:32:58
530
原创 jz2440烧录(二)
前面编译好了uboot和kernel现在就看看编译出来的东西有没有用? 2440烧录裸机程序和Uboot似乎只能用jlink之类的工具来烧写,也难怪很多手机刷机把uboot刷坏了就只能返厂修了,原因很简单没有烧的工具了。 uboot以上的层次直接用uboot自带写入就好了。 这里uboot中的烧录功能就不演示了,主要是演示一下,裸板
2016-05-02 20:13:20
851
原创 C语言位操作
C语言提供6个按位操作>> 右移 无符号数或者是正数不用考虑是左端补0, 负数看实现【一些实现补0,一些保留符号位,这种比较科学吧】~ 按位取反 【一元运算符】& 按位与^ 按位异或| 按位或为了保证可移植性,寄存器当然用unsinged char 或者unsinged int ,当然更详细一点的posix标准里的1字节
2016-04-28 00:22:43
1271
原创 jz2440开始(一)
工作上玩过了全志A20,瑞芯微RK3288后,愈发觉得这些芯片很多地方玩不转,原因很简单因为对硬件不够熟悉,加上安卓框架过于庞大。 为了弥补这个缺陷,加上2440在网上资料比较多,更容易快速系统的学习。所有有了这个开篇,当然在接下去的一段时间内,玩的都会是uboot. 那么首先先搭建一个开发环境,这里买了韦东山开发的jz2440,主要是还是因为资料给的比较多吧,看到
2016-04-27 15:42:41
2632
原创 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
2935
原创 视频通话开发(一)
打算记录一个网络电话开发的历程。一是记录一下自己开发中遇到的问题,二是解除一下一个人奋斗的苦闷。目前的阶段是实现了点对点之间的音频传输。说起来做这个东西,源自不靠谱的需求,所以我干的活也具备很多不确定性,所以开发的流程也是自己任性,就要重头做一遍。至于为什么要冲头做一次,原因是这样的。其实最符合需求现状的是带语音视频监控,然而非得弄成视频通话。交互平
2016-01-19 20:49:41
2434
原创 Linux 抓USB包
在windows上有不少抓取USB包的工具,但有种情况程序是基于linux开发的,所以。这里内核的一个工具usbmon 和 tcpdump,这里在Ubutu下测试,其他嵌入式设备并没有测试,相信只要内核支持了问题就不大。1. 配置内核Device Driver ----> [*] USB support ---> M> USB Monit
2016-01-11 16:42:38
4914
1
原创 Android_shell编程
作为底层人员开发android测试程序,经常用到一些脚本来开发一些功能,集成到APP中。如果使用编码来实现shell脚本,一来非常麻烦,二来效率低,三来很多功能根本实现不了。这里很多脚本需要root来运行,那么作为开发的设备,首先得确保能正常获取到ROOT权限。ROOT的方法具体的设备均不相同,但原理都是通的。1. 破解和集成su命令2. 权限管理软件如:Super
2016-01-11 14:36:14
1725
原创 java_mail 发送邮件
1.资源1.1使用JavaMail这个JAR包下载地址:http://download.youkuaiyun.com/detail/zmnqazqaz/93991751.2.准备一个用来发送邮件的邮箱2.代码2.1 把邮件服务器和发邮件的邮箱做成配置文件#smtp服务器mail.smtp.host=smtp.sina.com#身份验证mail.smtp.auth=tr
2016-01-11 14:09:55
1024
原创 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
3420
3
原创 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
2478
原创 RK3288 uvc摄像头调试
曾经在全志平台上调试过UVC摄像头,当时调试过程比较流畅,丝毫没有碰上异常情况,这一次在RK上碰到较大的困难,下面介绍一下我的调试过程。首先,不用说当然在内核配置中配置上UVC摄像头,重新编译内核,烧录。Device Drivers ---> Multimedia support ---> Video For Linux[*] Enable Video Fo
2015-10-31 20:30:51
15506
4
原创 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
6064
原创 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
37757
原创 关于android系统的分辨率:使用其他设备模拟该分辨率
开发的时候需要适配很多种奇葩的LCD尺寸,这些设备分辨率往往很多适配起来很麻烦,加上手头往往没有对应设备。比如说:我碰到一个分辨率是1440x900 并且屏幕的方向是竖屏,还有 1280x1024这种模拟器都不支持的分辨率。这些设备往往不在身边,测试起来就比较麻烦。 这里我总结一下如何方便的进行对这些屏幕的开发。1.首先我们得确定屏幕的分辨率 和 像素密度分辨
2015-07-04 20:16:24
4237
原创 andorid pppoe拨号上网
简单介绍一下PPPOE拨号首先,我们通过介质(网线)连接到ISP的主机,这时候我们的机器只能和ISP通讯,除此之外就不能干其他的事情了。然后我们需要和ISP协商我想访问外网输入用户名密码,通过他的验证后,他就会分配一个IP地址,让你访问外网了。从中我们可以看出,如果我们想进行PPPOE拨号的开发验证,如果我们使用家里用的网线拨号会将是一个非常痛苦的情况,我很难经行调试跟踪。 所
2015-06-14 00:29:45
3693
原创 Andorid连接USB打印机
当时有那么一个情况 验证Andorid连接一个打印机,并成功打印一些无关痛痒的字符。 首先先介绍一下打印机,是一个连牌子都没有的打印机,一个标准的windows打印机(在winxp上连驱动都没装就直接用了,我之前应该是装了串口驱动的) Andorid设备直接可以通过USB连接,如果是手机的话得用OTG先转一下。 下面
2015-04-19 16:54:05
1815
原创 内核链表
在研究Linux内核前和驱动开发之前,需要先了解一下内核中常用的一些工具,接下来的主题就是内核链表。 可能我们在数据结构里都听说过链表,或者学过链表。我们还知道链表这东西还挺麻烦,稍有不慎就导致整个程序崩溃了。 Linux中大量用到了内核链表,我们就来看看这个链表有什么特殊之处,可以被广泛使用。 首先,回顾一下我们在严蔚敏老太太书中呈现
2014-12-05 17:59:43
676
高通平台audio入门
2022-09-06
rockchip_neven
2017-06-26
mbrfix.EXE
2014-06-30
最全的ARM嵌入式视频教程100G
2014-06-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人