自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(37)
  • 资源 (5)
  • 收藏
  • 关注

原创 tiny4412下的Exynos4412 iROM 启动分析

参考文档Android_Exynos4412_iROM_Secure_Booting_Guide_Ver.1.00.00(网上并没有真正的4412iROM文档,我是参考4212和s5pv210以及现有启动文件制作源码分析得出下面所有结论的)一、iROM 验证BL1流程  1.拷贝bl1到内存 2.用checksum验证bl1完整性 3.(可选)解密bl1 4.跳转到

2016-02-21 22:27:05 2814

转载 Tiny4412 在linux下的dnw使用

使用方法:        将Tiny4412的USB线、串口线与电脑连接,在win7+虚拟机Ubuntu的环境下,在win7环境中用驱动精灵装上串口的驱动,在虚拟机中应该就能检测到串口,我这里采用的是USB转串口驱动,在Ubuntu中用lsusb命令可以查询到是否检测到串口,如下图:此外还可以使用ls /dev | grep tty 命令,我这里查询到的是ttyUSB0,然后再配置mini

2016-02-21 22:04:04 4534 1

翻译 为什么 volatile 关键字不能在 kernel 中使用(linux kernel 文档翻译)

为什么 volatile 关键字不能在 kernel 中使用    使用C语言的程序员以前总认为 volatile的意思是这个变量可能会在当前线程外的其他地方被改变(中断,其他device或CPU线程等)。因此他们有时会尝试在kernel中把votatile用于处理共享数据结构。换一种方式说,他们之前一直认为volatile是一种简单的原子操作方式,但这是错误的。在kernel中对volati

2016-02-18 13:54:04 1211

转载 头文件,链接库,编译汇总

在linux下代码开发过程中,一个程序从编译生成,到运行过程中必须不能忽略的地方:                  1.程序在编译时,源码所需要的库(静态库和动态库)及头文件编译器是去哪找的?(库及头文件的查找)                  2.当输入一个命令时,系统时如何找到这个命令的?(命令的查找)                  3.程序在运行时,它所需要的

2016-02-15 15:22:47 1535

原创 device tree 介绍

1.device tree 用法介绍:http://devicetree.org/Device_Tree_Usage2.内核内关于device tree的文档 /Documentation/devicetree/

2015-12-29 17:36:53 526

原创 ARM Linux系统调用详细分析

文件:linux-2.6.30.4/arch/arm/kernel/entry-common.Slinux-2.6.30.4/arch/arm/kernel/calls.S在entry-common.S中包含了上次calls.S,这里简单分析前两次:第一次:在entry-common.S中:.equ NR_syscalls,0#define CALL(x) .equ

2015-08-31 00:39:18 8626 4

转载 spinlock与中断、抢占的关系

在kernel中,一个线程获得了spinlock,那么这个线程可以被interrupt吗?可以,spinlock 并没有关中断,貌似spinlock_irqsave 才关中断了。tips1:spin_lock_irqsave关中断后,为什么要再禁止抢占呢,不多余吗?static inline unsigned long __raw_spin_lock_irqsave(raw_spinl

2015-08-21 13:27:27 8477

转载 Android Jni调用浅述

Android Jni调用浅述http://blog.csdn.net/flydream0/article/details/7371692目录(?)[-]简述载入so文件JNI_OnLoad与JNI_OnUnload显式注册native方法1 显式注册的作用2 在Android源码开发模式下有两种方法可以实现显示注册native方法方法一 使用JNI

2015-07-21 17:19:42 431

转载 getevent sendevent 详解

这两天准备写一下input子系统的分析,过程中发现了两个好工具,呵呵,就是本文介绍的主角:getevent用于获取当前系统input设备的一些参数和实时事件的数据;sendevent用于发送input事件,这样在调试的时候遇到有的样机按键坏了或者触摸屏坏了就方便了,工具的源码位于Android SDK的system/core/toolbox下面。一、getevent首先看一下命令的

2015-01-21 17:45:44 1481

转载 CPU流水线的探秘之旅

作为程序员,CPU 在我们的工作中扮演了核心角色,因此了解处理器内部的工作方式对程序员来说不无裨益。  CPU 是如何工作的呢?一条指令执行需要多长时间?当我们讨论某个新款处理器拥有 12 级流水线还是 18 级流水线,甚至是更深的 31 级流水线时,这到些都意味着什么呢?  应用程序通常会将 CPU 看作是黑盒子。程序中的指令按照顺序依次进入 CPU,执行完之后再按顺序依次从 CPU 中

2015-01-04 16:49:48 699

转载 嵌入式Linux内核I2C子系统详解

1.1 I2C总线知识1.1.1  I2C总线物理拓扑结构     I2C 总线在物理连接上非常简单,分别由SDA(串行数据线)和SCL(串行时钟线)及上拉电阻组成。通信原理是通过对SCL和SDA线高低电平时序的控制,来 产生I2C总线协议所需要的信号进行数据的传递。在总线空闲状态时,这两根线一般被上面所接的上拉电阻拉高,保持着高电平。1.1.2  I2C总线特征

2014-11-01 17:36:06 905

转载 信号量互斥量解析

在计算机操作系统中,PV操作是进程管理中的难点。首先应弄清PV操作的含义:PV操作由P操作原语和V操作原语组成(原语是不可中断的过程),对信号量进行操作,具体定义如下:    P(S):①将信号量S的值减1,即S=S-1;           ②如果S³0,则该进程继续执行;否则该进程置为等待状态,排入等待队列。    V(S):①将信号量S的值加1,即S=S+1;      

2014-10-31 10:09:09 3627

转载 物理地址与虚拟地址

本贴涉及的硬件平台是X86,如果是其它平台,嘻嘻,不保证能一一对号入座,但是举一反三,我想是完全可行的。一、概念物理地址(physical address)用于内存芯片级的单元寻址,与处理器和CPU连接的地址总线相对应。——这个概念应该是这几个概念中最好理解的一个,但是值得一提的是,虽然可以直接把物理地址理解成插在机器上那根内存本身,把内存看成一个从0字节一直到最大空量逐字

2014-10-28 17:08:42 1280

转载 物理地址与虚拟地址(3)

Windows 2000 使用基于分页机制的虚拟内存。每个进程有4GB的虚拟地址空间。基于分页机制,这4GB地址空间的一些部分被映射了物理内存,一些部分映射硬盘上的交换文件,一些部分什么也没有映射。程序中使用的都是4GB地址空间中的虚拟地址。而访问物理内存,需要使用物理地址。 下面我们看看什么是物理地址,什么是虚拟地址。  物理地址 (physical address): 放在

2014-10-28 17:07:52 1109

转载 物理地址与虚拟地址(2)

虚拟地址和物理地址的概念     CPU通过地址来访问内存中的单元,地址有虚拟地址和物理地址之分,如果CPU没有MMU(Memory Management Unit,内存管理单元),或者有MMU但没有启用,CPU核在取指令或访问内存时发出的地址将直接传到CPU芯片的外部地址引脚上,直接被内存芯片(以下称为物理内存,以便与虚拟内存区分)接收,这称为物理地址(Physical Address,以下

2014-10-28 17:04:59 657

转载 cdev 与inode ,file_operations,kobject map的关系

本文所说的Inode是struct inode结构体,并不是在inode块中的inode结点。 Char Device Driver  相关数据结构:struct cdev {  struct kobject kobj;  struct module *owner;  const struct file_operations *ops;  struct list_h

2014-10-21 14:41:17 1322

原创 goldendict 下载及使用 ubuntu下

sudo apt-get install goldendict

2014-10-18 08:32:52 720

原创 文件共享表

文件描述符 File Descriptors文件描述标志 File Descriptors Flag文件状态标志 File Status Flag

2014-10-10 10:49:08 507

转载 fcntl()应用

fcntl函数(改变打开文件的属性):(用man fcntl看fcntl的帮助文档)#include//这个头文件在/usr/include/bits/fcntl.h#include #include int fcntl(int filedes,int cmd,...);上边一行等价于:int fcntl(int filedes,int cmd,long arg);in

2014-10-10 10:45:09 669

原创 Git 基本概念解释

1. Working Directory(工作目录)Git的工作目录是保存当前正在工作的文件所在的目录,和working tree是相同的意思。在这个目录中的文件可能会在切换branch时被GIT删除或者替换。这个目录是个临时目录,临时存储你从GIT库中取出的文件,这些文件一直会被保存,直到下次提交。

2014-09-29 13:22:55 577

翻译 Why programming is so difficult. 感同身受的文章

我曾经认为编程很容易, 但多年之后我慢慢意识到我错了: 一份程序员的工作和我理解的"写程序"是不同的。起初我觉得编程无非就是命令计算机工作, 而这相对来说并不算难. 在工作了二十多年之后,我愈发觉得这实在是非常容易的事情。定义1:程序是一种由输入到输出的变换。程序员即是写程序的人,编程即是写程序的过程。现在再让我们为上面的定义加上一些限制条件。定义2:程序是一种满足以下

2014-09-12 16:17:47 442

转载 container_of 宏

container_of 宏在学习Linux驱动的过程中,遇到一个宏叫做container_of。该宏定义在include/linux/kernel.h中,首先来贴出它的代码:/** * container_of - cast a member of a structure out to the containing structure * @ptr:        the

2014-09-09 16:17:04 530

转载 kconfig与Makefile运行机制

前面我们介绍模块编程的时候介绍了驱动进入内核有两种方式:模块和直接编译进内核,并介绍了模块的一种编译方式——在一个独立的文件夹通过makefile配合内核源码路径完成    那么如何将驱动直接编译进内核呢?    在我们实际内核的移植配置过程中经常听说的内核裁剪又是怎么麽回事呢?我们在进行linux内核配置的时候经常会执行make menuconfig这个命令,然后屏幕上会出现以下

2014-08-22 09:50:52 1018

原创 Kconfig与Kbuild Makefile 的驱动方向简单解析

首先我们来学习什么Makefile,什么是Kconfig ,什么是.config             Makefile:一个文本形式的文件,其中包含一些规则告诉make编译哪些文件以及怎样编译这些文件。        Kconfig:一个文本形式的文件,其中主要作用是在内核配置时候,作为配置选项。         .config:文件是在进行内核配置的时候,经过配置后生成的内核编译

2014-08-21 15:26:58 1505 1

转载 find grep 命令使用

在linux下面工作,有些命令能够大大提高效率。本文就向大家介绍find、grep命令,他哥俩可以算是必会的linux命令,我几乎每天都要用到他们。本文结构如下:find命令 find命令的一般形式 find命令的常用选项及实例 find与xargs grep命令 grep命令的一般形式 grep正则表达式元字符集(基本集)grep命令的常用选项及实例 1、fi

2014-08-21 10:16:15 596

原创 linux文件查找命令汇总

1. findfind是最常见和最强大的查找命令,你可以用它找到任何你想找的文件。find的使用格式如下:  $ find   - : 所要搜索的目录及其所有子目录。默认为当前目录。  - : 所要搜索的文件的特征。  - : 对搜索结果进行特定的处理。如果什么参数也不加,find默认搜索当前目录及其子目录,并且不过滤任何结果(也就是返回所有文件),将它们全都显示在

2014-08-21 09:32:25 539

转载 Kbuild Makefiles详解 (翻译linux下Documentations/kbuilt/makefiles)

kbuild,即kernel build,用于编译Linux内核文件。kbuild对makefile进行了功能上的扩充,使其在编译内核文件时更加高效,简洁。大部分内核中的Makefile都是使用Kbuild组织结构的kbuild Makefile。 下面将分两部分介绍,首先介绍Linux的命令工具make及其所操作的makefile,它负责将源代码编译成可执行文件;然后介绍kbuild m

2014-08-20 17:50:14 1484 1

原创 GNU C 对标C的扩展

Linux 系统上可用的C编译器是GNU C编译器,它建立在自由软件基金会的编程许可证的基础上,因此可以自由发布。GNU C对标准C 进行一系列扩展,以增强标准C的功能。1.零长度数组GNU C允许使用零长度数组,在定义变长对象的头结构时,这个特性非常有用。例如:struct var_data{int len;char data[0];};char da

2014-08-19 17:53:09 545

转载 GCC常用命令总结

在Linux环境下,我们通常用gcc将C代码编译成可执行文件,如下就是一个简单的例子: 代码文件:hello.c     #include     #include     void main(void)    {         printf("hello world!\r\n");    }可以通过如下指令来编译出一个可执行文件:

2014-08-19 09:37:51 566

原创 一个例子叫你理解缓冲输入与非缓冲输入,以及流的概念:论read与fget open与fopen的区别

首先讲一下基本概念本文假设你已经基本了解标准IO库函数fopen fgets setbuf等和非缓冲IO库函数open write read lseek等。这里只就他们的区别加以阐述,并以最简单的程序实现他们之间差异的体现。让你理解流,缓冲,非缓冲的概念。 一、缓冲输入与非缓冲输入。fopen,fgets等属于缓冲输入,open,write,read系列属于非缓冲。 APU

2014-08-14 10:32:31 1920

转载 Linux - select详解

Linux - select详解(二) Part 1: Select在Socket编程中还是比较重要的,可是对于初学Socket的人来说都不太爱用Select写程序,他们只是习惯写诸如 connect、accept、recv或recvfrom这样的阻塞程序(所谓阻塞方式block,顾名思义,就是进程或是线程执行到这些函数时必须 等待某个事件的发生,如果事件没有发生,进程或线程就被阻

2014-08-11 15:26:11 445

转载 Linux epoll详解

Linux epoll详解一、什么是epollepoll是什么?按照man手册的说法:是为处理大批量句柄而作了改进的poll。当然,这不是2.6内核才有的,它是在2.5.44内核中被引进的(epoll(4) is a new API introduced in Linuxkernel 2.5.44),它几乎具备了之前所说的一切优点,被公认为Linux2.6下性能最好的多路I/O

2014-08-11 14:54:05 520

转载 同步(synchronous) IO和异步(asynchronous) IO,阻塞(blocking) IO和非阻塞(non-blocking)IO

同步(synchronous) IO和异步(asynchronous) IO,阻塞(blocking) IO和非阻塞(non-blocking)IO分别是什么,到底有什么区别?这个问题其实不同的人给出的答案都可能不同,比如wiki,就认为asynchronous IO和non-blocking IO是一个东西。这其实是因为不同的人的知识背景不同,并且在讨论这个问题的时候上下文(context)也不

2014-08-04 16:53:51 3155

转载 堆和栈的区别 (转贴)

堆和栈的区别 (转贴) 非本人作也!因非常经典,所以收归旗下,与众人阅之!原作者不祥!堆和栈的区别一、预备知识—程序的内存分配一个由c/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由

2014-07-25 14:59:45 457

转载 linux ar命令

当我们的程序中有经常使用的模块,而且这种模块在其他程序中也会用到,这时按照软件重用的思想,我们应该将它们生成库,使得以后编程可以减少开发代码量。这里介绍命令ar,用来对库操作。1.ar基本用法  ar命令可以用来创建、修改库,也可以从库中提出单个模块。库是一单独的文件,里面包含了按照特定的结构组织起来的其它的一些文件(称做此库文件的member)。原始文件的内容、模式、时间戳、属主、组

2014-07-22 16:57:03 466

转载 linux 环境变量

1. 显示环境变量HOME $ echo $HOME /home/redbooks 2. 设置一个新的环境变量hello $ export HELLO="Hello!" $ echo $HELLO Hello! 3. 使用env命令显示所有的环境变量 $ env HOSTNAME=redbooks.safe.org PVM_RSH=/usr/bin/

2014-07-22 11:36:32 457

转载 vim配置及插件安装管理

转载地址: http://blog.csdn.net/namecyf/article/details/7787479

2014-07-21 09:47:07 526

dnw-linux for tiny4412

dnw-linux for tinny 4412。相关文档见 http://blog.csdn.net/liduxun/article/details/50709714

2016-05-03

ARM9常用指令集

arm9 汇编指令介绍的一个中文版,可以作为参考

2015-09-07

GNU汇编gas权威手册 using as

GNU汇编gas权威手册 using as 是GNU官方的as使用手册,包括详尽的GNU汇编编写语法规则,和使用的伪指令。如果你需要看linux的汇编代码,那么这是最好的参考资料之一。

2015-09-07

空空如也

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

TA关注的人

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