自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

coldsnow33的专栏

点点滴滴,滴滴点点

  • 博客(80)
  • 资源 (5)
  • 收藏
  • 关注

转载 Linux __setup解析

__setup这条宏在Linux Kernel中使用最多的地方就是定义处理Kernel的启动参数的函数及数据结构,宏定义如下:#define __setup(str, fn) \__setup_param(str, fn, fn, 0)#define __setup_param(str, unique_id, fn, early) \static char __setup_st

2014-08-28 10:03:50 784

原创 cat /proc/cpuinfo

Processor : ARMv7 Processor rev 5 (v7l) BogoMIPS : 799.53 Features : swp half thumb fastmult vfp edsp neon vfpv3 CPU implementer : 0x41 CPU architecture: 7 CPU variant : 0x2 CPU part : 0xc

2014-08-27 20:43:03 2744 1

转载 seq_file文件的内核读取过程

seq_file文件的内核读取过程1 问题seq_file只是在普通的文件read中加入了内核缓冲的功能,从而实现顺序多次遍历,读取大数据量的简单接口。seq_file一般只提供只读接口,在使用seq_file操作时,主要靠下述四个操作来完成内核自定义缓冲区的遍历的输出操作,其中pos作为遍历的iterator,在seq_read函数中被多次使用,用以定位当前从内核自定义链表中读取

2014-08-27 19:01:31 1645

原创 __get_cpu_architecture

static int __get_cpu_architecture(void){ int cpu_arch; if ((read_cpuid_id() & 0x0008f000) == 0) {  cpu_arch = CPU_ARCH_UNKNOWN; } else if ((read_cpuid_id() & 0x0008f000) == 0x00007000) {  

2014-08-26 20:27:26 1304

原创 __enable_mmu

/* * Setup common bits before finally enabling the MMU. Essentially * this is just loading the page table pointer and domain access * registers. * * r0 = cp#15 control register * r1 = machi

2014-07-21 22:17:49 1198

原创 __v7_setup

.arm __HEADENTRY(stext) ARM_BE8(setend be ) @ ensure we are in BE8 mode THUMB( adr r9, BSYM(1f) ) @ Kernel is always entered in ARM. THUMB( bx r9 ) @ If this is a Thumb-2 kernel, THUMB( .th

2014-07-21 18:23:56 2124

原创 __create_page_tables

/* * Setup the initial page tables. We only setup the barest * amount which are required to get the kernel running, which * generally means mapping in the kernel code. * * r8 = phys_offset, r9 =

2014-07-21 17:42:15 1647

转载 ARM指令后缀与常用读取指令

一:指令可选后缀“S”后缀:指令中使用“S”后缀,指令执行后状态寄存器的条件标志位将被刷新;不使用“S”后缀时,指令执行后状态寄存器的条件标志位不会发生变化。此标志经常用于对条件进行测试,例如:是否溢出,是否进位等;根据这些变化,就可以进行一些判断,是否大于,是否相等,从而可能影响指令执行顺序。“!”后缀如果指令地址表达式中不含“!”后缀,则基址寄存器中的地址不会发生变化,指令中含有则

2014-07-21 11:18:32 4762

原创 __vet_atags

内核参数通过一个静态的tag链表在启动的时候传递到内核。每个tag的结构为     +-----------+     tag_header     +-----------+     tag_xxx     +-----------+    其中tag_header为tag头,表明tag_xxx的类型和大小,之所以要标识tag_xxx的类型是因为不同的tag需要不同的处理

2014-07-19 16:34:31 1094

转载 GUN ARM汇编中标号的引用在汇编和C语言中区别

汇编语言中标号表示的是地址,但是C中

2014-07-19 15:52:24 1042

转载 ARM中MMU地址转换理解

MMU的段页表的虚拟地址与物理地址的转换过程

2014-07-19 12:33:42 2978

转载 指令+s对cpsr中标志位的影响

各标志位的含义如下:所有ARM数据处理指令的乘法指令均可选择使用S后缀,并影响状态标志位。而其它指令一般不允许加S后缀,如B 、LDR、SWI、MRS等。N   运算结果的最高位反映在该标志位。对于有符号二进制补码,结果为负数时N=1,结果为正数或零时N=0;      例如:执行movs r0,#0x7FFFFFFF后N=0;因为R0最高位为0                

2014-07-19 10:27:46 2285

转载 __lookup_processor_type

__FINIT .text/* * Read processor ID register (CP#15, CR0), and look up in the linker-built * supported processor list.  Note that we can't use the absolute addresses * for the __proc_info li

2014-07-18 21:19:25 919

原创 __proc_info_begin->__proc_info_end

/arch/arm/kernel/head.S/* * Look in for information about the __proc_info structure. */ .align 2 .type __lookup_processor_type_data, %object

2014-07-18 21:11:59 1889

转载 compressed/head.s __setup_mmu

__setup_mmu: sub r3, r4, #16384 @ Page directory size,r3 = 0x20004000 bic r3, r3, #0xff @ Align the pointer bic r3, r3, #0x3f00@ 这里r4中存放着内核执行地址,将16K的一级页表放在这个内核执行地址下面的16K空间里,@ 上面通过 sub r3,

2014-07-17 15:54:01 1284

转载 linux命令 ld使用

使用ld********本文档介绍GNU连接器ld的2.14版本.本文档在GNU自由文档许可证下发行.在"GNU自由文档许可证"一章中有关于本许可证的一份拷贝.概述********'ld'把一定量的目标文件跟档案文件连接起来,并重定位它们的数据,连接符号引用.一般,在编译一个程序时,最后一步就是运行'ld'.'ld'能接受连接命令语言文件,这是一种用

2014-07-14 14:59:38 2509

转载 Linux内核源码分析--zImage出生实录(Linux-3.0 ARMv7)

原文地址:Linux内核源码分析--zImage出生实录(Linux-3.0 ARMv7) 作者:tekkamanninja    此文为两年前为好友刘庆敏的书《嵌入式Linux开发详解--基于AT91RM9200和Linux 2.6》中帮忙写的章节的重新整理。如有雷同,纯属必然。经作者同意,将我写的部分重新整理后放入blog中。~~~~~~~~~~~~~~~~~~~~~~~~

2014-07-13 13:14:02 987

转载 ARM linux解析之压缩内核zImage的启动过程 三

ARM linux解析之压缩内核zImage的启动过程 B (转载) ARM linux解析之zImage镜像文件的生成  (转载)ARM linux解析之压缩内核zImage的启动过程 C (转载)  2014-04-03 16:32:19|  分类:Technology |  标签: |举报|字号大中小 订阅

2014-07-12 21:23:49 2078 1

转载 B、BL、BX、BLX 和 BXJ

B、BL、BX、BLX 和 BXJ跳转、带链接跳转、跳转并切换指令集、带链接跳转并切换指令集、跳转并转换到 Jazelle 状态。语法op1{cond}{.W} labelop2{cond} Rm其中:op1是下列项之一:B跳转。BL带链接跳转BLX带链接跳转并切换指令集。op2是下列项之一:BX跳转并切换指令集。BLX带

2014-07-12 17:15:56 2145

原创 bl cache_on跳转的返回

bl cache_oncache_on: mov r3, #8 @ cache_on function b call_cache_fncall_cache_fn: adr r12, proc_types#ifdef CONFIG_CPU_CP15 mrc p15, 0, r9, c0, c0 @ get processor ID#else ldr r9, =C

2014-07-12 17:07:37 1133

转载 arm汇编指令整理

1.                   .align.align的作用在于对指令或者数据的存放地址进行对齐,有些CPU架构要求固定的指令长度并且存放地址相对于2的幂指数圆整,否则程序无法正常运行,比如ARM;有些系统却不需要,如果不遵循地址的圆整规则,程序依然可以正确执行,只是降低了一些执行效率,比如i386。.align的作用范围只限于紧跟它的那条指令或者数据,而接下来的指令或者数据的

2014-07-12 15:48:41 3488

转载 ARM linux解析之压缩内核zImage的启动过程 二

3.   。text段开始,先是内核解压地址的确定      再往下看,代码如下:           .text#ifdef CONFIG_AUTO_ZRELADDR           @ determine final kernel image address           mov     r4, pc           a

2014-07-12 15:42:15 3437

转载 ARM linux解析之压缩内核zImage的启动过程 一

首先,我们要知道在zImage的生成过程中,是把arch/arm/boot/compressed/head.s 和解压代码misc.c,decompress.c加在压缩内核的最前面最终生成zImage的,那么它的启动过程就是从这个head.s开始的,并且如果代码从RAM运行的话,是与位置无关的,可以加载到内存的任何地方。下面以arch/arm/boot/compressed/head.s为

2014-07-12 15:36:44 1479

转载 bootloader之little kernel

LK是什么           LK 是 Little Kernel 它是 appsbl (Applications ARM Boot Loader)流程代码  ,little kernel 是小内核小操作系统。           LK 代码 在 bootable/bootloadler/lk 目录下           LK 代码结构           +app       

2014-07-07 18:14:07 5067

转载 探讨蓝牙协议栈的原理和结构

蓝牙,这个已经不是什么新鲜的技术了,相信大多数人都是了解的。那么对于这方面,我们可以在嵌入式操作中进行一下实现。在蓝牙系统中,为了支持不同应用,需要使用多个协议,这些协议按层次组合在一起,构成了蓝牙协议栈.蓝牙协议栈是蓝牙技术的核心组成部分,它能使设备之间互相定位并建立连接,通过这个连接,设备间能通过各种各样的应用程序进行交互和数据交换.  1、蓝牙协议栈体系结构  蓝牙协议栈体系结构为分

2014-03-19 15:37:07 1076

转载 探讨蓝牙协议栈的原理和结构

蓝牙,这个已经不是什么新鲜的技术了,相信大多数人都是了解的。那么对于这方面,我们可以在嵌入式操作中进行一下实现。在蓝牙系统中,为了支持不同应用,需要使用多个协议,这些协议按层次组合在一起,构成了蓝牙协议栈.蓝牙协议栈是蓝牙技术的核心组成部分,它能使设备之间互相定位并建立连接,通过这个连接,设备间能通过各种各样的应用程序进行交互和数据交换.  1、蓝牙协议栈体系结构  蓝牙协议栈体系结构为分

2014-03-19 15:30:07 1924

转载 bluetooth之power on流程

Bluetooth服务(以及蓝牙的A2DP服务)都是通过SystemServer启动(frameworks/base/services/java/com/android/server/SystemServer.java) Frameworks层(frameworks/base/core/java/android/server/BluetoothService.java, fun

2014-03-18 20:05:37 4818

原创 bluetooth数据收发

net/socket.cSYSCALL_DEFINE3(socket, int, family, int, type, int, protocol)->sock_create()->__sock_create()->pf = rcu_dereference(net_families[family]);err = pf->create(net, sock, protocol, kern)

2014-03-18 17:14:07 1417

原创 linux-uart

drivers/ttytty_write()->(ld->ops->write)//调用线路规程的ld->ops的write(n_tty_write)console_init()->tty_ldisc_begin()->tty_register_ldisc(N_TTY, &tty_ldisc_N_TTY)tty_ldiscs[disc] = new_ldisc;//设置ld->ops

2014-03-13 13:53:35 1341

转载 Linux 下 stdin stdout stderr 的由来

现在就从linux kernel的源代码的角度来分析该问题fork()与execve()中stderr,stdio.stdout的继承关系其实用继承这个词好像不太准确,要准确一点,可能复制更适合.首先有2点:1:父进程fork出子进程后,是共享所有文件描述符的(实际上也包括socket)2:进程在execve后,除了用O_CLOEXEC标志打开的文件外,其它的文件描述符都是会复

2014-03-12 12:42:35 2077 1

原创 glibc-printf

printf()函数定义在stdio-common/printf.c#include #include #include #undef printf/* Write formatted output to stdout from the format string FORMAT. *//* VARARGS1 */int__printf (const char *format

2014-03-11 19:03:13 1818

转载 内存储器管理概述、内存分配与释放、地址映射机制(mm_struct, vm_area_struct)、malloc/free 的实现

注:本分类下文章大多整理自《深入分析linux内核源代码》一书,另有参考其他一些资料如《linux内核完全剖析》、《linux c 编程一站式学习》等,只是为了更好地理清系统编程和网络编程中的一些概念性问题,并没有深入地阅读分析源码,我也是草草翻过这本书,请有兴趣的朋友自己参考相关资料。此书出版较早,分析的版本为2.4.16,故出现的一些概念可能跟最新版本内核不同。此书已经开源,阅读地址 ht

2014-03-11 12:40:29 968

转载 使用 ftrace 调试 Linux 内核,第 3 部分

ftrace 是 Linux 内核中提供的一种调试工具。使用 ftrace 可以对内核中发生的事情进行跟踪,这在调试 bug 或者分析内核时非常有用。本系列文章对 ftrace 进行了介绍,分为三部分。本文是第三部分,通过示例代码介绍如何在代码中使用 ftrace 提供的工具函数,以与 ftrace 交互。通过本文的讲解,读者可以在实际代码中使用 ftrace,方便了调试和分析。内核头文件 i

2014-03-11 12:18:16 707

转载 使用 ftrace 调试 Linux 内核,第 2 部分

ftrace 是 Linux 内核中提供的一种调试工具。使用 ftrace 可以对内核中发生的事情进行跟踪,这在调试 bug 或者分析内核时非常有用。本系列文章对 ftrace 进行了介绍,分为三部分。本文是第二部分,通过示例介绍了如何使用 ftrace 中的跟踪器,并对不同格式的跟踪信息进行了描述,同时还对如何使用 ftrace 调试指定内核模块进行了介绍。通过对本文的学习,读者可以了解如何在实

2014-03-11 11:18:14 898

转载 使用 ftrace 调试 Linux 内核,第 1 部分

概述ftrace 是 Linux 内核中提供的一种调试工具。使用 ftrace 可以对内核中发生的事情进行跟踪,这在调试 bug 或者分析内核时非常有用。本系列文章对 ftrace 进行了介绍,分为三部分。本文是第一部分,介绍了内核相关的编译选项、用户态访问 ftrace 的接口、ftrace 的数据文件,并对 ftrace 提供的跟踪器的用途进行了介绍,以使读者更好的了解和使用该工具。f

2014-03-11 10:20:55 721

转载 Linux下的一个全新的性能测量和调试诊断工具Systemtap[1]kprobe

本系列文章详细地介绍了一个Linux下的全新的调式、诊断和性能测量工具Systemtap和它所依赖的基础kprobe以及促使开发该工具的先驱DTrace并给出实际使用例子使读者更进一步了解和认识这些工具。本文是该系列文章之一,它讲解了kprobe的原理、编程接口、局限性和使用注意事项并给出实际使用示例帮助读者理解和认识kprobe。本系列文章之二讲解了DTrace以及Systemtap与DTrac

2014-03-10 19:32:33 870

转载 kprobe module code

#include #include #include #include #include #include #include #include #include /* pre_handler: this is called just before the probed instruction is * executed. */static int handler_p

2014-03-10 19:13:35 715

转载 jprobe module code

#include #include #include #include #include #include #include #include #include #include static irqreturn_t ts_interrupt_probe(int irq, void *dev_id){ printk("KERN_INFO %s: irq = %d\n",

2014-03-10 19:12:13 701

转载 ARM Linux异常处理之data abort

本文简要分析了ARM Linux的data abort异常处理过程,内核版本2.6.28,s3c6410平台。1 异常向量与程序跳转data abort是ARM体系定义的异常之一。异常发生时,ARM会自动跳转到异常向量表中,通过向量表中的跳转命令跳转到相应的异常处理中去。ARM的异常处理向量表在entry-armv.S文件中: .globl __vectors

2014-03-04 21:23:19 4058

原创 completion

1 数据结构struct completion { unsigned int done; wait_queue_head_t wait;//等待队列头};2 初始化2.1 动态static inline void init_completion(struct completion *x){ x->done = 0; init_waitqueue_head(&x->wai

2014-01-20 21:03:59 1217

kprobe-examples.tar.gz

kprobe-examples.tar.gz kpobe jprobe kretprobe

2014-03-10

linux那些事

linux那些事,复旦牛人写的,一直很经典

2013-12-25

STM32固件库使用手册

该函数库是一个固件函数包,它由程序、数据结构和宏组成,包括了微控制器所有外设的性能特征。该函 数库还包括每一个外设的驱动描述和应用实例。通过使用本固件函数库,无需深入掌握细节,用户也可以 轻松应用每一个外设。因此,使用本固态函数库可以大大减少用户的程序编写时间,进而降低开发成本。

2013-12-25

stm32 datasheet

stm32芯片手册中文版,本文档是依据STM32 Reference Manual (RM0008)翻译的,已经与2009年6月的英文第9版(Doc ID 13902 Rev 9)进行了全面校对,更正了不少以前版本的错误。 在校对即将结束时,ST于2009年12月中旬又发布了英文第10版(Doc ID 13902 Rev 10),为了与最新的 英文版同步,我们按照英文第10版结尾的”文档版本历史”中的指示,在翻译的文档中快速地校对更正了对 应的部分。由于时间的关系,没有逐字逐句地按照英文第10版进行通篇校对,鉴于芯片本身没有改变, 我们相信除了”文档版本历史”中指出的差别外,英文第10版与英文第9版不会再有更多的变化,遂定稿现 在这个翻译版本为对应的中文第10版文档。

2013-12-25

FocalTech_ft5x06

FocalTech触摸屏芯片手册,比较详细的一版

2013-12-25

空空如也

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

TA关注的人

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