摘要: 编译过程中遇到了问题,记录下来:1、无法make menuconfig,出错如下:make menuconfig HOSTLD scripts/kconfig/mconfscripts/kconfig/mconf.o: In function `show_help':mconf.c:(.text+0x744): undefined reference to `stdscr'scripts/kconfig/mconf.o: In function `main':mconf.c:(.text.startup+0x66): undefined reference to `in 阅读全文
posted @ 2014-03-05 14:30 ZHX_1Q89 阅读(675) 评论(0) 推荐(0) 编辑
摘要: 在Android中,电话系统由三个部分组成,Phone Framework, RIL-Daemon, Vendor-specified RIL。RIL-Daemon的作用是将Android Phone Framework和Vendor-RIL结合起来。这样做的好处是提供了一个松散耦合结构,不同厂家都可以根据自己的实际需求设计Vendor-RIL实现功能. Android Phone Framework 和 Vendor-RIL之间是通过RIL-Daemon进行交互的。Phone Framework和RIL-Daemon之间通过socket进行进程间通讯,RIL-Daemon解析从socket传 阅读全文
posted @ 2014-03-01 13:16 ZHX_1Q89 阅读(1247) 评论(0) 推荐(0) 编辑
摘要: 在09年Y450横空出世的时候买了它,本着“买低配电脑就是另一种败家”的思想买了当时的顶配PSI。它给我的大学生活带来了很多快乐,凭借这强悍的配置秒杀当时各种游戏。无奈时间是把杀猪刀,当年彪悍的小Y现在已经变成了现在的老Y。虽然游戏性能不再出彩,但对于工作任务来说还是可以胜任的。虽然现在的我对游戏的热情已经褪去,但我对小Y的热情还在,还不想这么快就放弃它。本着“新三年,旧三年,缝缝补补又三年”的指导思想决定给小Y做一次整体升级,让它再陪我走上3年。根据自己的实际需求对CPU,硬盘,内存进行了升级CPU: P7450 (2.13GHz)-> P9700(2.80GHz)P9700对于745 阅读全文
posted @ 2014-03-01 00:23 ZHX_1Q89 阅读(375) 评论(0) 推荐(0) 编辑
摘要: 为了验证手上的LTE模块决定将目前的内核升级到3.12.本来以为会很麻烦,结果发现这次的升级出奇的简单。因为官方已经制作好了deb包给我们了。首先下载相对应的deb包:wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.12.4-trusty/linux-headers-3.12.4-031204-generic_3.12.4-031204.201312081207_amd64.debwget http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.12.4-trusty/linux-header 阅读全文
posted @ 2014-02-22 20:29 ZHX_1Q89 阅读(193) 评论(0) 推荐(0) 编辑
摘要: 换了办公室之后发现手机3G信号烂,办公室Wi-Fi限速,唯有有线的速度还马马虎虎。基于这个背景,我萌生了通过笔记本共享有线网络的方法来解放自己。起初以为很麻烦,试了之后才知道原来一切都是那么简单,傻瓜式操作。打开Network Manager,切换到Wireless一栏,添加一个无线网络Connection name和 SSID随便填写, Mode选择Ad-hocIPv4 选择shared to other computers然后在Wireless Security中选择WEP保存链接。启用链接后,就可以找到这个Wi-Fi信号啦注:新建的Ad-hoc热点在Connect to hidden w 阅读全文
posted @ 2014-02-17 16:14 ZHX_1Q89 阅读(860) 评论(0) 推荐(0) 编辑
摘要: 很多软件在安装完成之后都需要在terminal中通过命令启动,这样的过程稍显繁杂,如果能够在Unity中添加图标,并把图标锁定在侧边栏上,无疑能够大大的提高效率。这里给出一种在Unity中添加图标的方法。实际上,侧边栏的每一个图标都对应了/usr/share/applications的一个文件。首先,需要在/usr/share/applications创建一个.desktop文件。在这个文件中添加如下选项[Desktop Entry]type=ApplicationName=Comment=Icon=Exec=Terminal=falseCategories=注:当中按照自己的实际情况填写就可 阅读全文
posted @ 2014-02-17 00:14 ZHX_1Q89 阅读(630) 评论(0) 推荐(0) 编辑
摘要: 有些时候我们希望清楚掉一点不该保留的命令,比如错误的命令就没有保存的价值了,或者出于一些安全上的考虑,etc如果我们是希望定点的清楚一些命令的话,可以直接编辑在home文件夹下的.bash_history文件$ vim ~/.bash_history 当然还有一个更彻底的方法,使用如下命令可以清楚全部命令$ history -c 阅读全文
posted @ 2014-02-16 22:27 ZHX_1Q89 阅读(1467) 评论(0) 推荐(0) 编辑
摘要: 个人一直觉得开机显示的Update Manager以及Hardware Update这些东西很烦,但是在Startup Application中无法找到关闭的方法,通过搜索发现只要在terminal中输入以下命令后,就可以在Startup Application中找到这些恼人的Apps并把它们禁用掉:sudo sed -i 's/NoDisplay=true/NoDisplay=false/g' /etc/xdg/autostart/*.desktop如图: 阅读全文
posted @ 2014-02-16 19:43 ZHX_1Q89 阅读(647) 评论(0) 推荐(0) 编辑
摘要: 需要知道的一点是Android使用的都是prebuild的kernel,这篇文章记录了我替换内核的过程首先,我们需要确定当前Android使用的kernel版本,然后要确定下载kernel的版本查看当前kernel版本$ dd if=kernel-qemu bs=1 skip=$(LC_ALL=C grep -a -b -o $'\x1f\x8b\x08\x00\x00\x00\x00\x00' kernel-qemu | cut -d ':' -f 1) | zgrep -a 'Linux version'结果为:Linux version 3 阅读全文
posted @ 2014-02-16 12:46 ZHX_1Q89 阅读(4330) 评论(0) 推荐(0) 编辑
摘要: 这篇文章记录了我下载源码和编译的全过程, 全过程参考Android官方文档1. 下载Android源码1.1 安装repo$ mkdir ~/bin$ PATH=~/bin:$PATH$ curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo$ chmod a+x ~/bin/repo1.2 初始化repo客户端$ mkdir WORKING_DIRECTORY$ cd WORKING_DIRECTORY$ repo init -u https://android.googleso 阅读全文
posted @ 2014-02-15 21:14 ZHX_1Q89 阅读(1343) 评论(0) 推荐(0) 编辑
摘要: 这篇文章主要记录了我是如何搭建Android编译环境,以及搭建当中遇到的问题以及解决方法。搭建环境依照官网进行,整个搭建环境分为两步:1. 安装JDK2. 安装相对应的库以及软件1、安装JDK官网上给出的办法是使用apt进行jdk的安装$ sudo add-apt-repository "deb http://archive.canonical.com/ lucid partner"$ sudo apt-get update$ sudo apt-get install sun-java6-jdk但是我在按照这个方法进行安装是apt提示无法找到jdk安装包。 在更换了好几个s 阅读全文
posted @ 2014-02-15 17:23 ZHX_1Q89 阅读(2114) 评论(0) 推荐(0) 编辑
摘要: 一直以来都天真的认为线程间同步的方法只有信号量,互斥量,邮箱,消息队列,知道最近开始研究一些Linux方面的代码才发现自己是多么的很傻很天真。在Linux中还存在这一种叫做条件变量的东西。必须承认我在理解这个概念上花了很多时间,查阅了很多资料。这里主要分析如下几个问题:1. 条件变量是什么;2.为什么要和互斥量配合使用,互斥量保护的是什么;3.为什么条件变量经常会和while配合使用。1. 什么是条件变量条件变量是线程同步的一种手段。条件变量用来自动阻塞一个线程,直到条件(predicate)满足被触发为止。通常情况下条件变量和互斥锁同时使用。条件变量使我们可以睡眠等待某种条件出现。条件变量是 阅读全文
posted @ 2014-02-11 22:26 ZHX_1Q89 阅读(12250) 评论(0) 推荐(2) 编辑
摘要: 在不知道这个函数之前会自己写一套函数来处理程序的输入参数。现在有了getopt就可以很方便的提取命令行参数了。下面就来说说getopt的使用。要想使用getopt这个函数,必须包含相对应的头文件,这个头文件是:unistd.h。和getopt相关的几个变量需要我们注意:int opterr如果这个变量不为0,那么当getopt检测到没有标识的输出参数是就会向标准打印上输出相应的信息。如果不想看到这些信息,那么在函数中只要将这个变量设置为0就好了int optopt当getopt遇到了位置的输入选项,或者输入选项没有对应参数时,会将这个选项记录在这个变量中int optind这个变量存储了下一个 阅读全文
posted @ 2014-02-09 13:15 ZHX_1Q89 阅读(1346) 评论(0) 推荐(0) 编辑
摘要: 今天在看Android Init部分代码的时候看到了如下数组初始化方法:#define KEYWORD(symbol, flags, nargs, func) \ [ K_##symbol ] = { #symbol, func, nargs + 1, flags, },struct { const char *name; int (*func)(int nargs, char **args); unsigned char nargs; unsigned char flags;} keyword_info[KEYWORD_COUNT] = { [ K_UNK... 阅读全文
posted @ 2014-01-21 10:47 ZHX_1Q89 阅读(278) 评论(0) 推荐(0) 编辑
摘要: 本人一向较懒,为了方便自己使用SPI Flash,决定移植一个文件系统,这样就可以免去每次写入都要计算地址的痛苦,下面主要讲一下我对FatFs移植的一些体会,一来方便以后的朋友,二来给自己做个笔记。首先,先简单的介绍一下FatFs,FatFs是一个适用于嵌入式系统地开源的通用FAT文件系统模型,这也就是说,它是与硬件无关的。移植工作的重点在两个方面:1、根据实际硬件情况配置FatFs;2、实现硬件I/O驱动,并将硬件驱动适配到FatFs。FatFs配置分析:下表给出了我移植时对FatFs的配置情况配置选项说明实际值评论_FS_TINY使能Tiny版本0目前RAM空间充足_FS_READONLY 阅读全文
posted @ 2013-10-19 12:29 ZHX_1Q89 阅读(1330) 评论(0) 推荐(0) 编辑
摘要: 在平时的工作做经常会遇到需要延时处理的情况。对于对时间要求不严格的延时来说,我们可以用for loop这些循环结构来实现延时。但对于一些对时间要求比较严格的情况,for loop明显就不适用了。这个时候我经常会使用定时器来辅助延时,STM32的定时器又灰常的NB,也灰常的让人头大(对于我这样的小白来说)。下面通过一个例子来说明定时器定时相关计算。Timer相关计算 1 /*set the timer to 1ms*/ 2 void timer_config(void) 3 { 4 TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct; 5 ... 阅读全文
posted @ 2013-08-10 10:09 ZHX_1Q89 阅读(13665) 评论(0) 推荐(0) 编辑
摘要: 前言这篇文章主要集中讲述了Modem在oFono中的启动初始化,有一段时间没有看oFono了,不废话,走起,走起!1. 初始化分析从大的方向上来说Modem的初始化分为4个阶段,分别是POWER_OFF, PRE_SIM, OFFLINE, ONLINE.下面具体的来说一下每一个阶段oFono都作了一些什么工作2. MODEM_STATE_POWER_OFF当Modem被加入到系统当中并被oFono检测到后, oFono会在oFono Daemon中创建对应的modem对象。此时,对于oFono来说它只是知道了系统中存在这样的一个Modem设备而已并不知道Modem处于什么状态。在这个时候oF 阅读全文
posted @ 2013-08-09 17:38 ZHX_1Q89 阅读(1276) 评论(0) 推荐(0) 编辑
摘要: 在工作中遇到了一些问题,现在记录在这里方便以后查看1. STM32的外部中断触发方式STM32只支持边缘触发,而不支持电平触发.2. STM32外部中断分组STM32中,每一个GPIO都可以当作是外部中断输入口, 并根据引脚编号将中断进行了分组.引脚标号0~4的IO管脚有独立的中断源.引脚标号5-9的IO管脚共享一个中断源引脚标号10-13的IO管脚共享一个中断源3. 外部中断服务函数不能触发分析主要是因为以下几点造成了服务函数无法进入1)GPIO或者AFIO的时钟没有开启,比较常见的是忘记了开启AFIO时钟;2)GPIO和配置的中断线路不匹配;3)中断触发方式和实际不相符合;4) NVIC配 阅读全文
posted @ 2013-08-09 10:43 ZHX_1Q89 阅读(1478) 评论(0) 推荐(0) 编辑
摘要: 这里记录oFono 1.6在ubuntu 12.04 LTS (64bit)下的编译安装全过程1. 编译GLIBoFono是基于glib实现的,所以编译ofono之前必须安装相应要求版本的GLib。oFono要求GLib的版本必须在2.28以上。于是我使用的版本是GLib2.34.0.1.1 安装zlib./configuremakesudo make install1.2 安装libffi./configuremakesudo make install.1.3 安装gettext,./configure; make; sudo make install编译过程中会提示找不到libffi文件, 阅读全文
posted @ 2013-07-10 14:03 ZHX_1Q89 阅读(1957) 评论(0) 推荐(0) 编辑
摘要: 摘要oFono支持动态的检测modem设备的插拔。本文主要讲解oFono如何实现对modem的插拔进行检测的。这篇文章也解释了plugin是如何扩展oFono功能而不是仅仅作为modem/atom驱动的容器。1.modem设备检测分析1.1初始化当设备检测plugin被oFono载入到系统后,系统会对plugin进行初始化。 1 static int detect_init(void) 2 { 3 udev_ctx = udev_new(); 4 if (udev_ctx == NULL) { 5 ofono_error("Failed to create ud... 阅读全文
posted @ 2013-07-05 19:06 ZHX_1Q89 阅读(1253) 评论(0) 推荐(0) 编辑