- 博客(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关注的人