自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(54)
  • 资源 (1)
  • 收藏
  • 关注

原创 XShell连接串口

  1.选择“文件”菜单的“新建”。出现新建会话属性对话框。  2.在“名称”中输入会话名。  3.在“协议”目录下选择SERIAL。  4.在“类别”中选择”SERIAL”。  5.在“Port”项选择连接到已安装有Xshell的PC上的RS232C串行端口号。  6.在“Baud Rate”项下选择通讯速度,应与服务器的值保持一致,一般使用115200。

2016-09-30 16:26:08 51720 1

原创 修改selinux模式

查看SELinux状态:1、/usr/sbin/sestatus -v      ##如果SELinux status参数为enabled即为开启状态SELinux status:                 enabled2、getenforce                 ##也可以用这个命令检查关闭SELinux:1、临时关闭(不用重启机器):se

2016-09-26 16:31:03 3075 1

转载 内存管理单元 MMU

转自http://www.cnitblog.com/tarius.wu/articles/322.html现代操作系统及CPU硬件中,都会提供内存管理单元(memory management unit,MMU)来进行内存的有效管理。内存管理算法有许多,从简单的裸机方法到分页和分段策略。各种算法都有其优缺点,为特定系统选择内存管理算法依赖于很多因素,特别是系统的硬件设计。1 内存管理的目的

2016-09-26 15:19:48 413

转载 ARM MMU工作原理剖析

原文地址  http://blog.ednchina.com/LHDDSHL/292841/message.aspx一、MMU的产生      许多年以前,当人们还在使用DOS或是更古老的操作系统的时候,计算机的内存还非常小,一般都是以K为单位进行计算,相应的,当时的程序规模也不大,所以内存容量虽然小,但还是可以容纳当时的程序。但随着图形界面的兴起还用用户需求的不断增大,应用程

2016-09-26 14:53:00 300

转载 ARM MMU工作原理剖析

转自http://blog.chinaunix.net/uid-20698426-id-136197.html一、MMU的产生      许多年以前,当人们还在使用DOS或是更古老的操作系统的时候,计算机的内存还非常小,一般都是以K为单位进行计算,相应的,当时的程序规模也不大,所以内存容量虽然小,但还是可以容纳当时的程序。但随着图形界面的兴起还用用户需求的不断增大,应用程序的规模也随之膨胀

2016-09-24 22:00:03 238

原创 dpm_list链表

dpm_list是内核中用于设备电源管理的链表,设备注册时通过一系列的调用 device_register() -> device_add() -> device_pm_add() 最后在device_pm_add()中将设备加入dpm_list链表中:[cpp] view plain copy print?// 设备创建时都会调用的函数

2016-09-24 21:50:51 686

转载 android 休眠唤醒机制分析(三) — suspend

转自http://blog.csdn.net/g_salamander/article/details/7988340前面我们分析了休眠的第一个阶段即浅度休眠,现在我们继续看休眠的第二个阶段 — 深度休眠。在深度休眠的过程中系统会首先冻结所有可以冻结的进程,然后依次挂起所有设备的电源,挂起顺序与设备注册的顺序相反,这样保证了设备之间电源的依赖性;直至最后进入省电模式,等待用户或者RTC唤醒;在

2016-09-24 21:49:43 1559

转载 android 休眠唤醒机制分析(二) — early_suspend

转自http://blog.csdn.net/g_salamander/article/details/7982170early_suspend是Android休眠流程的第一阶段即浅度休眠,不会受到wake_lock的阻止,一般用于关闭lcd、tp等设备为运行的应用节约电能。Android的PowerManagerService会根据用户的操作情况调整电源状态,如果需要休眠则会调用到HAL层的

2016-09-24 21:47:16 513

转载 android 休眠唤醒机制分析(一) — wake_lock

转自http://blog.csdn.net/g_salamander/article/details/7978772Android的休眠唤醒主要基于wake_lock机制,只要系统中存在任一有效的wake_lock,系统就不能进入深度休眠,但可以进行设备的浅度休眠操作。wake_lock一般在关闭lcd、tp但系统仍然需要正常运行的情况下使用,比如听歌、传输很大的文件等。本文主要分析driv

2016-09-24 21:45:59 1785

转载 如何将uboot里面的参数传给recovery或kernel

转自http://blog.csdn.net/dwyane_zhang/article/details/8441854最近我们在做一个LCM两屏或三屏兼容的问题,所以首先要在uboot里面读出各屏的id,然后再将读得到的id传给recovery和kernel,实现机器的正常显示.一.首先实现uboot读lcm的id.          1.bootable/bootloader/l

2016-09-24 21:37:18 1209

转载 翻译:Linux的电源管理架构

转自http://blog.csdn.net/dwyane_zhang/article/details/7099731设备电源管理Copyright (c) 2010 Rafael J. Wysocki, Novell Inc.Copyright (c) 2010 Alan [email protected] *******************

2016-09-24 21:34:15 271

转载 linux休眠唤醒(四)

转自http://blog.csdn.net/dwyane_zhang/article/details/7099725suspend第三、四、五阶段:platform、processor、corestatic int suspend_enter(suspend_state_t state){       int error;        if (suspend_ops

2016-09-24 21:32:57 503

转载 Linux休眠唤醒(三)

转自http://blog.csdn.net/dwyane_zhang/article/details/7099723五、suspend和resume代码走读   下面对suspend分的几个阶段都是按照pm test的5中模式来划分的:freezer、devices、platform、processors、core。suspend第一阶段:freezerint e

2016-09-24 21:31:52 353

转载 Linux 休眠唤醒(二)

转自http://blog.csdn.net/dwyane_zhang/article/details/7099718三、pm_test属性文件读写int pm_test_level = TEST_NONE; static const char * const  pm_tests[__TEST_AFTER_LAST] = {       [TEST_NONE] = "n

2016-09-24 21:22:07 624

转载 Linux 休眠唤醒(一)

转自http://blog.csdn.net/dwyane_zhang/article/details/7099710一、项目power相关的配置目前我手上的项目的linux电源管理方案配置如下,.config文件的截图,当然也可以通过make menuconfig使用图形化来配置:## CPU Power Management## CONFIG_CPU_IDLE is n

2016-09-24 21:15:20 681

原创 linux 休眠唤醒流程

Linux Suspend主要有以下三步:   1) 冻结用户态进程和内核态任务    2) 调用注册的设备的suspend的回调函数,顺序是按照注册顺序    3) 休眠核心设备和使CPU进入休眠态。   冻结进程(suspend_freeze_processes)是内核把进程列表中所有的进程的状态都设置为停止,并且保存所有进程的上下文。 当这些进程被解冻(suspend_tha

2016-09-24 17:09:51 7863

原创 request_threaded_irq----中断线程化

int request_threaded_irq(unsigned int irq, irq_handler_t handler, irq_handler_t thread_fn,                                                      unsigned long irqflags,const char *devname, void *

2016-09-23 10:48:16 15216

转载 Android adb 模拟滑动 按键 点击事件

转自http://blog.csdn.net/huiguixian/article/details/11925389模拟事件全部是通过input命令来实现的,首先看一下input命令的使用: usage: input ...       input text        input keyevent        input tap        input s

2016-09-22 21:02:12 621

原创 linux taskset命令详解

SYNOPSIS        taskset [options] [mask | list ] [pid | command [arg]...] OPTIONS        -p, --pid               operate on an existing PID and not launch a new task        -c, --cpu

2016-09-20 17:22:18 7331

转载 Android帧缓冲区(Frame Buffer)硬件抽象层(HAL)模块Gralloc的实现原理分析

转自http://blog.csdn.net/luoshengyang/article/details/7747932 前面在介绍Android系统的开机画面时提到,Android设备的显示屏被抽象为一个帧缓冲区,而Android系统中的SurfaceFlinger服务就是通过向这个帧缓冲区写入内容来绘制应用程序的用户界面的。Android系统在硬件抽象层中提供了一个Gralloc模块,封装了

2016-09-19 20:48:00 517

原创 hw_module_t 加载过程

每一个HAL模块都有一个ID值,以这些ID值为参数来调用硬件抽象层提供的函数hw_get_module就可以将指定的模块加载到内存来,并且获得一个hw_module_t接口来打开相应的设备。 函数hw_get_module实现在hardware/libhardware/hardware.c文件中,如下所示:     /** Base path of the hal module

2016-09-19 19:03:12 1330

原创 BufferQueue

BufferQueue把提供图形数据buffer的生产者与接受图形数据并显示或进一步处理的消费者连接起来,生产者与消费者可以存在与不同的进程。生产者请求一个空的buffer(dequeueBuffer()),然后给此buffer定义一些特性,如宽,高,像素格式以及使用标志。生产者然后对此buffer植入内容,并把它归还到队列(queueBuffer())。过后,消费者从队列获取buffer

2016-09-19 18:16:59 433

原创 fb_post

Post就是将需要显示的内容由user space 传递给 kernel space,然后等待一个特殊的信号过来后,送给显示屏显示(Display Conctrler)。等待的这个信号其实就是屏幕刷新信号(vblank、vsync……)。

2016-09-19 17:10:32 704

转载 TFT LCD工作时序

摘自韦东山《嵌入式linux应用开发完全手册》一、行数据传输过程(1)VSYNC信号有效时,表示一帧数据的开始。(2)VSPW表示VSYNC信号的脉冲宽度为VSPW+1个HSYNC信号周期,即VSPW+1行,这VSPW+1行的数据无效。(3)VSYNC信号脉冲之后,还要经过VBPD+1个HSYNC信号周期,有效的行数据才出现。所以,在VSYNC信号有效之后,总共还要经过 VSPW+

2016-09-19 15:40:18 2461

转载 编译环境变量

转自:http://www.ibm.com/developerworks/cn/opensource/os-cn-android-build/为了方便模块的编译,Build 系统设置了很多的编译环境变量。要编译一个模块,为了方便模块的编译,Build 系统设置了很多的编译环境变量。要编译一个模块,只要在编译之前根据需要设置这些变量然后执行编译即可。它们包括:LOCAL_SRC_FILES:

2016-09-19 11:34:06 666

转载 模块的编译方式

转自http://www.ibm.com/developerworks/cn/opensource/os-cn-android-build/Android 源码中包含了许多的模块,模块的类型有很多种,例如:Java 库,C/C++ 库,APK 应用,以及可执行文件等 。并且,Java 或者 C/C++ 库还可以分为静态的或者动态的,库或可执行文件既可能是针对设备(本文的“设备”指的

2016-09-19 11:31:16 468

原创 dd命令使用详解

1.命令简介 dd 的主要选项:指定数字的地方若以下列字符结尾乘以相应的数字:b=512, c=1, k=1024, w=2, xm=number mif=file #输入文件名,缺省为标准输入。 of=file #输出文件名,缺省为标准输出。 ibs=bytes #一次读入 bytes 个字节(即一个块大小为 bytes 个字节)。 obs=bytes #一次

2016-09-14 20:04:43 539

转载 Linux内存压力测试-memtester工具简析

转自:https://my.oschina.net/liangzi1210/blog/113287?p=1        进行内存的压力测试,Memtester主要是捕获内存错误和一直处于很高或者很低的坏位, 其测试的主要项目有随机值,异或比较,减法,乘法,除法,与或运算等等.通过给定测试内存的大小和次数, 可以对系统现有的内存进行上面项目的测试。

2016-09-14 13:45:55 7832

转载 Linux Kernel UAPI

转自http://tinylab.org/linux-kernel-uapi/问题描述从3.5开始,Linux Kernel 里多了一个 uapi 文件夹,里面放了很多 Linux Kernel 各个模块的头文件。如果是第一次碰到,可能会对这个不是很了解。问题分析Linux Kernel 中新增的这些 uapi 头文件,其实都是来自于各个

2016-09-13 15:11:05 4612

转载 彻底理解I/O架构

转自http://blog.csdn.net/acs713/article/details/42967191一个系统要能正确工作,必须要有数据通道(data paths)的机制,软件和硬件系统都概莫能外。对于计算机系统而言,必须要有data paths的机制来确保CPU, RAM和I/O设备之间的信息数据能正确的流动。这些data paths,通常被称为总线(BUS),是计算机内部主要

2016-09-13 12:37:07 316

原创 fastboot and recovery

      fastboot模式是bootloader后期进入的一个特殊阶段,在此模式下可以向bootloader传送刷机文件进行文件分区重烧。fastboot实现了一个简单的通信协议,能够与bootloader的USB通讯,主要用来接收命令并更新镜像文件。 在使用fastboot工具时,USB线必须始终联着PC机,所以这种方式称为线刷。 用fastboot需要bootloader 支持,

2016-09-13 09:12:43 775

转载 在Windows批处理文件中引用日期和时间的方法

转自下面介绍在Windows批处理文件中引用日期和时间的方法。%DATE%输出的是: yyyy/mm/dd 星期* (例如:2008/12/18 星期四) 引用格式:%DATE:~x,y% x=起始坐标,y=从x开始截取字符个数如: %DATE:~0,4% --> yyyy %DATE:~5,2% --> mm %DATE:~8,2% --> dd如取出

2016-09-12 09:29:18 1404

转载 为什么寄存器比内存快?

转自http://www.ruanyifeng.com/blog/2013/10/register.html计算机的存储层次(memory hierarchy)之中,寄存器(register)最快,内存其次,最慢的是硬盘。同样都是晶体管存储设备,为什么寄存器比内存快呢?Mike Ash写了一篇很好的解释,非常通俗地回答了这个问题,有助于加

2016-09-09 20:29:47 248

转载 ARM上电取第一条指令流程

转自http://blog.csdn.net/qianlong4526888/article/details/276987071.1 上电后的第一条指令在哪里?首先明确:对于ARM芯片,启动时pc值由CPU设计者规定,不同的ARM CPU有不同的值,例如S3C2440芯片上电后PC值被硬件设计者规定为0x0;其他ARM芯片不一定是0x0。第一章讲述的上电取第一条指令过程以S3C

2016-09-09 20:05:51 3794

原创 MACHINE_START and MACHINE_END

      topdir/arch/arm/mach-xxxx/board-xxxx.c 文件中通常有这样一段代码:1 MACHINE_START(MINI6410, "MINI6410")2 /* Maintainer: Ben Dooks */3 .boot_params = S3C64XX_PA_SDRAM + 0x10

2016-09-08 14:47:12 385

原创 数据类型不匹配时最好使用强制类型转换

一般情况下,在变量赋值时,低级类型可赋值给高级类型,不需要强制转换数据类型。但是需要注意32位数据赋值给64位数据的情况,有些编译器没有对这种类型赋值进行优化,如果不强制类型转换,会导致不可预料的结果,比如得到的数据和实际想要的不一致,导致系统当掉等。综上,在低级类型赋值给高级类型时最好使用强制转换,避免编译器未对此类转换做优化而导致的未知问题

2016-09-07 21:17:11 953

转载 u-boot与linux内核间的参数传递过程分析

转自:http://blog.csdn.net/u012075739/article/details/52252991http://www.nishizawa23.com/http://liuyue18301.blog.163.com/blog/static/27913282009930112920220/?fromdm&fromSearch&isFromSearchEngine=

2016-09-06 19:56:33 779

转载 BootLoader与Linux内核的参数传递

转自:http://www.linuxdiyf.com/viewarticle.php?id=79198在嵌入式系统中,BootLoader 是用来初始化硬件,加载内核,传递参数。因为嵌入式系统的硬件环境各不相同,所以嵌入式系统的BootLoader 也各不相同,其中比较通用的是U-Boot,它支持不同的体系结构,如ARM,PowerPC,X86,MIPS 等。本文

2016-09-06 17:02:35 478

转载 Linux kernel Low Level debug

------以下内容转自:http://blog.csdn.net/cpuwolf/article/details/4492822------  如果你运气不太好,那么第一次启动kernel,最多看见: uncompressing linux...ok, booting the kernel   从串口ttyS0出来,然后你什么都没了。这总情况遇见的机会还是很多的。多数原因是内核卡

2016-09-06 16:19:58 634

原创 beyond compare 显示比较结果对话框

右键弹出快捷菜单----选择"比较内容",弹出"比较内容"对话框---"显示结果对话框"前面打勾

2016-09-06 15:47:37 3439

atmel89s51芯片数码管显示

单片机 atmel89s51芯片 数码管 动态 显示程序

2010-05-05

空空如也

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

TA关注的人

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