自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(88)
  • 收藏
  • 关注

原创 就职历程

今年6月开始狠下心离职。说实在的,自从2009年毕业,到现在,一共呆了两家公司,两家公司我都很喜欢,和同事、和领导相处得很好。每一次的离开都带着深深的不舍。2012年4月从第一家公司离职,离职当天上午我还在疯狂的写着代码,为的就是满足某客户提出产品功能需求。当天下午研发部召开月总结会议,我的月报告ppt上没有拟定下月工作计划,研发经理很讶异,大老板向研发部同事通报我今天正式离职。晚上研发部聚餐

2013-07-26 15:22:37 1431

原创 Linux常用文件系统的制作命令

记录以前开发中制作过的Linux文件系统,记得以前为了评估文件系统的优越性,在用busy制作出文件系统目录通过各种文件系统工具将目录打包成各种文件系统格式:Ramdisk、Cramfs、ubifs、jffs2等。以下记录以前用过的脚本,其实都挺简单。1.cramfs#! /bin/shecho "Create RFODNCC_cramfs.img ..."mkfs.cramfs

2013-07-16 13:45:56 883

原创 ARM的异常及向量表

ARM具有7种异常,分别为:1、复位2、未定义指令3、软中断4、预取指令终止5、数据终止6、中断请求(IRQ)7、快速中断请求(FIQ)  用一句通俗的话去表达ARM的运行情况,那就是ARM总会在运行在以上7种异常情况的某一种之下。初初了解ARM时总会难于去了解这个"异常"是什么样的一个意思,到了现在对ARM有了一点肤浅的理解后,其实

2013-07-09 11:24:44 4075

原创 ARM的汇编学习

如果你还是学习电子通信的学生又或者是从事嵌入式电子通信工作的工程师、助理工程、实习生、打杂员,笔者想你也曾经对汇编有着复杂的恐惧,甚至是这一恐惧是大学里学《微型计算机技术》开始的。但是就笔者浅薄的工作经历看来,如果你能掌握或者退一步说能看懂汇编,那你才能享受到作为一名底层硬件程序员的乐趣。试想一下用汇编任意操纵一款ARM内核处理器的寄存器、内存空间、外设空间,把它玩弄于手掌之中,这样是不是很有成就

2013-07-08 17:36:46 916

原创 ARM架构的书籍

最早接触ARM时,是在2008年,那时是大三,那时ARM的学习板首推周立功的,但是价格高昂,所以ARM对于我们没有太多实验室资源的小本科来说是个很神秘的东西,开发板买不起,于是就到图书馆狂啃周立功的开发板配套书籍,那时觉得很经典。后来参加工作了,最早做就是ARM底层的东西,第一本接触到ARM架构的书籍是《ARM体系结构与编程》,读得很入味。后来又阅读了由国内翻译的一本国外书籍《ARM嵌入式系统

2013-07-08 14:01:10 6612

原创 ARM的开始

在笔者记录ARM的时候,忍不住有写写大学时候的那点破事。   话说第一次接触嵌入式微处理器还是大二参加全国电子设计大赛的那会。想那年的大赛真是风风火火,俨然相似于上世纪中下期全国总动员***(读者你们懂的了)。一把破烙铁就如火如荼没日没夜的焊...某日培训老师给我们每组发了一块ATmega16的小开发板,自此我的嵌入式电子生涯也拉开了帷幕。得到开发板后就是开始用ATmega16的io去驱动

2013-07-08 13:40:04 699

原创 常见的嵌入式Linux内核启动问题总结及解决方法

文章中总结分析了常见Linux启动时出现的控制台无打印信息、启动异常的现象,并给出相应的处理指导。对于这种开源的技术文章赞一个。Kernel - Common Problems Booting Linux

2013-07-03 16:59:30 911

原创 如何改变Linux内核的运行地址。

原厂的外文就好,介绍东西一针见血,很到位,跟看其他的中文资料比起来,看这种技术资料中有一种愉悦的感觉。HOWTO Change the Linux Kernel Start Address

2013-07-03 16:23:25 734

原创 Android makefile写法(Android.mk)

整理以前记录的关于针对将Android C/C++程序编译为可执行 / 静态库 / 动态共享库的Android.mk写法示例总结。1.可执行文件# Test exeLOCAL_PATH:=$(call my-dir)include $(CLEAR_VARS)LOCAL_SRC_FILES:= main.cLOCAL_MODULE:= test_exe#LOCAL_C_INC

2013-07-03 10:13:02 890

原创 WiFi联网的两种工作方式:点对点与基本模式

大家都知道WiFi(即IEEE 802.11b)作为有线网络的补充使用起来很方便,而且由于WiFi的灵活性很强,经常被用来独立组网,而其使用的工作模式就是点对点模式及基本模式两种,如何理解与区分这两种模式呢?下面简单说一下:1点对点模式WiFi联网的点对点模式是指无线网卡和无线网卡这间的通讯方式,即一台装配了无线网卡的电脑或移动计算终端(部分智能手机或平板电脑)连接进行通讯,对于小型无

2013-07-03 09:37:09 5038

转载 如何输出dev_dbg log

kernel里面默认都配置了CONFIG_DYNAMIC_DEBUG=y;     假如我们要打印acpuclock-krait.c中的     dev_dbg(drv.dev, "ACPU%d speed change complete\n", cpu);     在adb shell中输入:     mount –t debugfs none /sys/kernel/debug

2013-06-26 15:09:15 1404

原创 Android中log及logcat命令的使用

1.log使用对于Android HAL/Framework可在Android系统源代码下通过以下方式使用log1.在程序文件中包含头文件#include 2.定义log的标签宏#define LOG_TAG "YOUR LOG TAG"3.修改对应.mk文件链接log库LOCAL_SHARED_LIBRARIES := liblog libcutils通

2013-06-21 14:25:24 1500

原创 GPS调试-1

GPS的一些基本知识GPS一般分为软和硬GPS,软GPS直接输出的是卫星数据,需要应用处理器对卫星数据进行解析计算,然后再转成标准的NMEA(National Marine Electronics Association,国际海洋电子协会)数据。而硬GPS可以在其芯片内部进行解析,直接向应用处理器输出NMEA数据。GPS的硬件接口相对简单,除开基本的供电、reset控制外,一般仅通过串口和

2013-06-19 16:19:08 1494

原创 Android中LCD背光驱动

其实Android的底层就是Linux,所以其驱动本质就是Linux驱动,但是这些Linux驱动是服务上层Android的,所以需遵循上Android的一些接口规范。所以涉及到的Android驱动都应应密切关注上层传递的接口。本文介绍的LCD背光驱动就是从上层一直往下层展现,但是笔者毕竟不是专注于Android上层,碍于知识不充裕,所以对上层的东西介绍得相对简单。1.Android的Setti

2013-06-17 16:28:40 4600

原创 Android/Linux USB Gadget:续

为保留连贯性,但又急于记录另一篇,所以先mark...

2013-06-17 16:23:58 1082

原创 U-boot中的倒计时可中断操作

在启动u-boot后,启动内核前会有个倒计时,在倒计时到时后,u-boot就是自动加载内核到内存,进去启动内核;但是在倒计时到之前通过(键盘输入)串口终端输入可以终止记时操作,进入u-boot命令行状态。今天在阅读TI OMAP平台 的在u-boot中的充电管理代码后再次发现使用了“倒计时可中断”操作,于是摘取了实现这种“倒计时可中断”的实现代码。方便日后移植使用。void time_re

2013-06-09 09:57:03 3257

原创 Android/Linux USB Gadget:三层架构

1.前言继Linux Gadget的一点研究后陆续续关注了很久Android USB Gadget,一直想写点什么记录一些认识,可是Linux USB实在是太复杂,让人有点无从下笔的感觉。它的复杂并不是说不可以被人理解,而且涉及的面很广。USB Host的驱动关注比较少,就对USB device驱动的认识来说,需从两大方面去对它进行认识和了解,一方面是USB协议本身,如果连USB端点、设备描述

2013-06-07 14:06:04 5635 1

原创 Android/Linux招聘要求

总结一些Android/Linux的招聘要求。A1.某公司招聘的高级Android驱动工程师1、计算机、电子、通信、自动化类等相关专业本科以上学历,5年以上Android驱动开发经验; 2、精通Andriod OS 系统体系架构;精通ARM、单片机硬件架构;精通Linux内核、有丰富的嵌入式开发经验;精通软件设计模型; 3、精通C/C++语言,熟悉ARM汇编语言; 4、精通Ar

2013-06-04 13:22:31 1174

翻译 Android init.rc文件浅析

本文主要来自$ANDROID_SOURCE/system/init/readme.txt的翻译.1 简述Android init.rc文件由系统第一个启动的init程序解析,此文件由语句组成,主要包含了四种类型的语句:Action,Commands,Services,Options.在init.rc文件中一条语句通常是占据一行.单词之间是通过空格符来相隔的.如果需要在单词内使用空格

2013-05-30 17:23:38 698

原创 Android HAL:分析与总结

上接Android HAL:helloworld例程继续深入点学习。Android HAL:helloworld展示了编写HAL的一个架构。因为HAL最终会被编译层一个.so库文件被Native层调用,那么Native是如何找到这个.so,并打开这个.so呢?其实Native是通过调用hardware/libhardware/hardware.c中的已实现函数完成查找so和打开so的。

2013-05-30 09:35:38 925

原创 用户空间与内核空间的接口:sysfs

在调试驱动,或驱动涉及一些参数的输入输出时,难免需要对驱动里的某些变量或内核参数进行读写,或函数调用。此时sysfs接口就很有用了,它可以使得可以在用户空间直接对驱动的这些变量读写或调用驱动的某些函数。sysfs接口与proc文件系统很相似,有人将proc文件系统形容为Windows XP,而将sysfs接口形容为Windows 7。而在Android系统中,振动器、背光、电源系统等往往使

2013-05-27 10:18:22 2753

原创 用户空间与内核空间的接口:proc文件系统

最早在接触Linux BSP时,项目中有一项规格就是底层需向上层提供硬件PCB及BOM信息。由于在Linux的根文件系统/proc目录下有硬件CPU、内存、存储器等与硬件相关的信息,并且在用户空间通过cat命令就可以轻易获得,于是有个想法,就是设法将项目中硬件PCB及BOM等信息展现在/proc目录下,然后用户空间可以通过cat或通过读写文件的形式获得这些信息。所以就查阅了关于Linux proc

2013-05-27 10:17:41 1057

原创 Linux驱动调试手段:KDB

1.KDB介绍KDB是Linux内核调试补丁,提供一种在系统能运行时对内核内存和数据结构进行检查的办法。它不允许进行源代码级别上的调试。可以添加额外的命令,给出该数据结构的标识或地址。2.KDB操作a.处理器单步执行。b.执行到某条特定指令时停止。c.当存取(或修改)某个特定的虚拟内存位置时停止。d.当存取输入/输出地址空间中的寄存器时停止,通过进程ID对当前活动的

2013-05-24 15:53:24 1125

原创 Linux驱动调试手段:打印信息日志

1.printk1.1 printk的优点:   a. 在中断中调用   b. 在进程上下文中调用   c.在持有锁时调用   d.在多处理器上同时使用1.2 printk的缺点:   a.终端启动前无法调用1.3 printk打印信息的级别1.4 printk的使用eg.   printk( KERN_WARNING“This is

2013-05-24 15:20:10 4561

原创 GStreamer:初识

GStreamer相当于windows下的Directshow,是一个在linux下创建媒体应用程序的框架。其主要用途是构建媒体播放器。GStreamer是基于插件的,具有任何符合规范的插件都可以方便的插于已定义的数据流管道的有点,因此可以简化媒体播放器的开发流程,提高可移植性。GStreamer由以下功能模块组成:1.元件(Elemenls):元件是GStreamer最重要的概念,它可以实现

2013-05-23 10:49:59 815

原创 嵌入式常用见笔试题

1.实现strcpy不调用库函数实现字符串拷贝函数:strcpy.  /**********************  * C语言标准库函数strcpy的一种典型的工业级的最简实现  * 返回值:目标串的地址。  * 对于出现异常的情况ANSI-C99标准并未定义,故由实现者决定返回值,通常为NULL。  * 参数:  * strDestination 目标串  *

2013-05-21 13:43:06 1087

原创 守护进程:代码的分析

守护进程实现代码如下所示:[html] view plaincopyvoid daemon_mode(void) {    int fr=0;      fr = fork();    if( fr  0 ) {      fprintf(stderr, "fork() failed\n");      exit(1);

2013-05-21 10:35:11 736

原创 网页转载

1.二叉树中的那些常见的面试题2.使用GStreamer实现一个MP3播放器3.补充GStreamer的详细介绍及实现一个MP3播放器的例程4.OMAP3 Audio驱动及框架,包含ALSA用户空间的编程架构5.TI 2.3Android方案系统架构详细介绍6. 制作openssh7. 制作dropbear8.用Eclipse和GDB构建ARM交叉编译和在线调试环境

2013-05-17 17:43:54 898

原创 Linux Gadget的一点研究之例程分析

学习Gadget比较有效的办法是掌握基本架构后,认真研读例程。其实不单Gadget如此,其他Linux驱动或子系统都是如此。另外Linux下的外设驱动通常有分层的概念,有带有面向对象的思想,因此研读代码是比较有效的领悟办法。一般一个Linux的USB设备驱动,包括两大部分,一是CPU USB控制器部分的驱动,驱动文件名往往是xxx_udc.c,此部分驱动很多是与硬件CPU相关,包含寄存器设置、

2013-05-17 14:47:46 2213

原创 Linux Gadget的一点研究之HID设备

接上文,配置编译gadget HID模块make modules后在driver/usb/gadget目录下生成g_hid.ko执行加载命令:root@rfODNCC:/mnt# insmod g_hid.ko insmod: can't insert 'g_hid.ko': No such device提示错误。在TI 技术论坛上看到相关技术回复:

2013-05-15 15:49:02 9279 13

原创 Linux Gadget的一点研究之U盘和USB虚拟串口

Linux kernel2.6以上的版本中,USB设备驱动的接口改为了gadget,在kernel/driver/usb/gadget目录下主要包含了平台USB UDC驱动和gadget接口驱动。        kernel/driver/usb/gadget目下的serial.c是一个常用的驱动文件,它可以配置为bulk传输驱动或CDC ACM驱动(USB转串口驱动)。配置的方式有两种,一可

2013-05-14 18:02:18 10425 2

原创 V4L2官方例程

V4l2的官网例程代码:/* * V4L2 video capture example * * This program can be used and distributed without restrictions. */#include #include #include #include #include /* getopt_lo

2013-05-13 17:59:06 3671

原创 移植嵌入式 Boa web server到TI 达芬奇平台

陆续记录移植过程。1.下载Boa源码a.到 http://www.boa.org/ 下载boa源码,目前最新版本为:0.94.13b.在主机上解压下载到的源码压缩包boa-0.94.13.tar.gz,执行:tar xzf boa-0.94.13.tar.gz2.生成makefile文件以上步骤解压后的目录为:boa-0.94.13进入src目录:cd src运

2013-05-10 11:18:40 1367

翻译 Linux flash 文件系统剖析

简介: 您之前可能听说过 Journaling Flash File System(JFFS)和 Yet Another Flash File System(YAFFS),但是您知道使用底层 flash 设备的文件系统意味着什么吗?本文将向您介绍 Linux® 的 flash 文件系统,并探索它们如何通过平均读写(wear leveling)处理底层的可消耗设备(flash 部件),并鉴别各种

2013-05-08 14:59:13 822

原创 Ubuntu 10.04下安装SVN图形界面客户端

1.  安装svn客户端:sudo apt-get install subversion2. 安装图形界面客户端Rabbitvcs:(1)下载 http://rabbitvcs.googlecode.com/files/rabbitvcs-0.13.2.tar.gz ,解压(2)安装下面的软件[plain] view plaincopy

2013-05-08 12:58:24 768

原创 TI ARM和DSP双核平台的一个编译例程

一个适用于TI ARM与DSP双核平台的makefile。该makefile示意了如何同时编译出ARM平台和DSP平台的执行文件,以便于比较ARM核和DSP核在进行运算时表现出来的性能差异。makefile############################################################################## Makefile

2013-05-07 14:48:31 1247

翻译 Linux的电源管理架构

设备电源管理Copyright (c) 2010 Rafael J. Wysocki, Novell Inc.Copyright (c) 2010 Alan Sternstern@rowland.harvard.edu *************************************************************本文由DroidP

2013-05-04 13:29:54 745

转载 S3C24xx的LCD驱动(详细)

转载:点击打开链接

2013-05-03 17:53:16 886

原创 Linux的开关中断

如果你要禁止所有的中断该怎么办? 在2.6内核中,可以通过下面两个函数中的其中任何一个关闭当前处理器上的所有中断处理。   这两个函数定义在 中:    void local_irq_save(unsigned long flags);    void local_irq_disable(void);    对 local_irq_save的调用将把当前中断状态保存到flags

2013-05-03 09:12:15 1243

转载 怎样写 Linux LCD 驱动程序

基本原理通过 framebuffer ,应用程序用 mmap 把显存映射到应用程序虚拟地址空间,将要显示的数据写入这个内存空间就可以在屏幕上显示出来;驱动程序分配系统内存作为显存;实现 file_operations 结构中的接口,为应用程序服务;实现 fb_ops 结构中的接口,控制和操作 LDC 控制器;驱动程序将显存的起始地址和长度传给 LCD 控制器的寄存器 (一般由 fb_set

2013-05-02 14:19:18 687

空空如也

空空如也

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

TA关注的人

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