自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

btoh_workstation

业精于勤荒于嬉,行成于思毁于随!

  • 博客(19)
  • 收藏
  • 关注

转载 kzalloc 函数详解

用kzalloc申请内存的时候, 效果等同于先是用 kmalloc() 申请空间 , 然后用 memset() 来初始化 ,所有申请的元素都被初始化为 0.[csharp] view plaincopy/**  * kzalloc - allocate memory. The memory is set to zero.  * @size: how many byt

2014-08-19 20:31:52 672

原创 U-boot 2014 启动流程详细分析

U-boot 2014 启动流程:-> _start: b     reset     (arch/arm/cpu/armv7/start.S line 28)-> bl     _main     (line 151)     ->ENTRY(_main)     (arch/arm/lib/crt0.S line 58)           -> bl     boar

2014-08-11 21:22:38 1282

转载 Linux进程的睡眠和唤醒

1  Linux进程的睡眠和唤醒   在Linux中,仅等待CPU时间的进程称为就绪进程,它们被放置在一个运行队列中,一个就绪进程的状态标志位为TASK_RUNNING。一旦一个运行中的进程时间片用完, Linux内核的调度器会剥夺这个进程对CPU的控制权,并且从运行队列中选择一个合适的进程投入运行。   当然,一个进程也可以主动释放CPU的控制权。函数schedule()是一个调

2014-06-10 17:28:04 533

转载 Linux中kfifo数据结构的精妙之处:即使溢出仍然正确

kfifo是linux内核中的环形缓冲区,实现了先进先出的队列数据结构。以下为kfifo的数据结构定义(内核版本2.6.33.20):[cpp] view plaincopystruct kfifo {          unsigned char *buffer;  // 环形缓冲区的大小          unsigned int size;      // 环形缓

2014-06-10 15:35:19 808

转载 巧夺天工的kfifo

Linux kernel里面从来就不缺少简洁,优雅和高效的代码,只是我们缺少发现和品味的眼光。在Linux kernel里面,简洁并不表示代码使用神出鬼没的超然技巧,相反,它使用的不过是大家非常熟悉的基础数据结构,但是kernel开发者能从基础的数据结构中,提炼出优美的特性。kfifo就是这样的一类优美代码,它十分简洁,绝无多余的一行代码,却非常高效。关于kfifo信息如下:本文分析的原代

2014-06-10 15:27:06 468

原创 关于bootloader链接脚本中的ALIGN关键字的解析

问题描述:前几天遇到一个问题:下图表示的链接脚本中的绿色框中ALIGN(4):表示什么意思?是4个字节对齐呢?还是2的4次幂个字节对齐?还有就是对齐是如何对齐的呢?如果有结论该如何验证这些内容?

2014-05-29 11:52:14 4614

转载 Nand flash读写范围的问题

很多时候对nand的操作都是通过主控的nand控制器直接完成,或者更多时候是通过MTD标准操作接口完成读写擦的过程,然而有些细节问题有必要在这里讨论一下,我分为以下几点进行说明:1、擦除过程:擦除过程是将0变成1的过程,即充电的过程(比如SLC中,当低于某个电压值表示0,高于这个电压值则表示1;而对于MLC来说可以有多个阈值,所以可以保存更多bit)。擦除过程是按块进行的,但启

2014-05-26 19:58:34 668

转载 windows下载android源码

在网上有已经有很多这样的文章了,自己对这一块也不是太熟悉,主要是按照以前的方法,会出现以下错误:还是从头开始吧,先下载window的git工具msysgit:http://code.google.com/p/msysgit/,如下图:下载以后,点击安装,一直点击next,直到完成。安装好以后,在你想存放源码的地方新建个文件夹,比如:

2014-05-26 19:51:45 479

转载 U-Boot重定位代码分析

概述重定位(relocate)代码将BootLoader自身由Flash复制到SDRAM,以便跳转到SDRAM执行。之所以需要进行重定位是因为在Flash中执行速度比较慢,而系统复位后总是从0x00000000地址取指。重定位代码,位于/U-Boot/cpu/s3c44b0/start.S :relocate:                /* relocate U-Boot t

2014-05-26 19:41:20 628

转载 U-boot中的gd结构体

U-boot中有一个用来保存很多有用信息的全局结构体--gd_t(global data缩写),其中包括了bd变量,可以说gd_t结构体包括了u-boot中所有重要全局变量。对于ARM平台这个结构体的定义大致如下: include/asm-arm/global_data.htypedefstructglobal_data {bd_t*bd;unsigned lo

2014-05-26 19:35:55 616

转载 Linux 内核list_head 学习(一)

在Linux内核中,提供了一个用来创建双向循环链表的结构 list_head。虽然linux内核是用C语言写的,但是list_head的引入,使得内核数据结构也可以拥有面向对象的特性,通过使用操作list_head 的通用接口很容易实现代码的重用,有点类似于C++的继承机制(希望有机会写篇文章研究一下C语言的面向对象机制)。下面就是kernel中的list_head结构定义:struct li

2014-05-26 19:02:01 3467

转载 Linux热插拔及mdev机制

1、创建设备类,是为了让mdev知道根据这些信息来创建设备节点,根据/sys来创建,所以从devfs开始,根文件系统就引入了一个/sys目录,/sys/dev下面都是内核加载的驱动的主从设备号 2、class的初始化过程(在/sys/下创建class目录):start_kernel() -> rest_init() -> kernel_init() ->do_basic_setup()

2014-05-23 17:01:21 1353

转载 memset函数原型

memset:[cpp] view plaincopyprint? void* cb_memset(void* buffer, int b, size_t size){  assert(buffer!=NULL);  char* retAddr = (char*)buffer;  while (size-- > 0){            *(retAddr+

2014-05-17 09:25:43 605

转载 isdigit()极品实现

我不得不承认,在编程的世界,无奇不有,码农的创造力是无穷的,也是妙不可言的!只要涉及到效率,永远是没有最快,只有更快!    我们知道,在标准C中,有函数int isdigit(int c)可以用来判断字符c是否为0~9之间的数字。比如:1int a = isdigit('1');    //a == 12int b

2014-05-16 10:19:34 753

转载 Android arm linux kernel启动流程(二)

写这个总结的时候咱的心情是沉重的,因为还有好多东西没弄明白。。。感叹自己的知识还是浅薄得很,前途钱途漫漫阿~~不过基本脉络是清楚的,具体的细节只能留在以后有时间再啃了。这里的第二部分启动流程指的是解压后kernel开始执行的一部分代码,这部分代码和ARM体系结构是紧密联系在一起的,所以最好是将ARM ARCHITECTURE REFERENCE MANUL仔细读读,尤其里面关于控制寄存器啊,MMU

2014-05-12 19:46:58 715

转载 Android arm linux kernel启动流程(一)

虽然这里的Arm Linux kernel前面加上了Android,但实际上还是和普遍Arm linux kernel启动的过程一样的,这里只是结合一下Android的Makefile,讲一下bootimage生成的一个过程。这篇文档主要描述bootimage的构造,以及kernel真正执行前的解压过程。     在了解这些之前我们首先需要了解几个名词,这些名词定义在/Documentatio

2014-05-12 19:39:16 911

转载 Linux 2.6 menuconfig内核编译配置选项详解

Code maturity level options代码成熟度选项Prompt for development and/or incomplete code/drivers 显示尚在开发中或尚未完成的代码与驱动.除非你是测试人员或者开发者,否则请勿选择 General setup常规设置Local version - append to kernel re

2014-05-11 17:07:06 1050

转载 Android文件系统的结构及目录用途、操作方法

以下内容转载1、android文件系统的结构android源码编译后得到system.img,ramdisk.img,userdata.img映像文件。其中,ramdisk.img是emulator的文件系统,system.img包括了主要的包、库等文件,userdata.img包括了一些用户数据,emulator加载这3个映像文件后,会把system和 userdata分别加载到 r

2014-05-11 17:00:32 1087 1

转载 android 文件系统类型的介绍

android系统启动过程中有两个很重要的文件,init.c和init.rc ,这两个文件具体重要的在哪里,这里不再累赘,网上资料一大把。不过通过这两个文件,我们可以很清楚的看到比如dev 等目录属于哪种文件类型,了解之后就可以去使用了。下面关于android文件系统类型进行介绍。    在init初始化过程中,Android分别挂载了tmpfs,devpts,proc,sysfs 4类文

2014-05-11 16:26:51 3555

空空如也

空空如也

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

TA关注的人

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