Chinaunix首页 | 论坛 | 博客
  • 博客访问: 6465025
  • 博文数量: 579
  • 博客积分: 1548
  • 博客等级: 上尉
  • 技术积分: 16635
  • 用 户 组: 普通用户
  • 注册时间: 2012-12-12 15:29
个人简介

http://www.csdn.net/ http://www.arm.com/zh/ https://www.kernel.org/ http://www.linuxpk.com/ http://www.51develop.net/ http://linux.chinaitlab.com/ http://www.embeddedlinux.org.cn http://bbs.pediy.com/

文章分类

全部博文(579)

文章存档

2018年(18)

2015年(91)

2014年(159)

2013年(231)

2012年(80)

发布时间:2013-01-17 08:33:00

要过年了,发个年终总结贴,只是个人理解,不包正确哈。本贴涉及的硬件平台是X86,如果是其它平台,嘻嘻,不保证能一一对号入座,但是举一反三,我想是完全可行的。一、概念物理地址(physical address)用于内存芯片级的单元寻址,与处理器和CPU连接的地址总线相对应。——这个概念应该是这几个概念中最好理解的一个.........【阅读全文】

阅读(3350) | 评论(0) | 转发(1)

发布时间:2013-01-15 09:14:09

PC操作系统:ubuntu?11.10使用的开发板:am335x_evm开发板使用的操作系统:linux?3.2测试用例:#include #include #include #include #include #include #include #incl.........【阅读全文】

阅读(5609) | 评论(0) | 转发(1)

发布时间:2013-01-09 14:42:59

MicrosoftInternetExplorer402DocumentNotSpecified7.8Normal0Slab将缓存分为两种:一种是专用高速缓存,另外一种是普通高速缓存。请注意,这里所说的高速缓存和硬件没有必然的关系,它只是slab分配器中的一个软件概念。专用高速缓存中用来存放内核使用的数据结构,例如:mm,skb,vm等等普通高速缓存是指存放一般的数据,比如内核为指针分配一段内存所有的高速缓存区都通过链表的方式组织在一起,它的首结点是cache_chain另外,普通高速缓存将分配区分为32*(2^0),32*(2^1),32*(2^2) ….32*(2^12)大小,共......【阅读全文】

阅读(3118) | 评论(0) | 转发(2)

发布时间:2013-01-08 14:11:36

Linux内核中提供的一些字符串转换函数: lib/vsprintf.c [html] view plaincopyprint? 1. unsigned long long simple_strtoull(const char *cp, char **endp, unsigned int base)     2. unsigned long simple_strtoul(const&n......【阅读全文】

阅读(2516) | 评论(0) | 转发(1)

发布时间:2013-01-08 11:08:22

测试代码: 点击(此处)折叠或打开#include#include#include#include#include#include#include#includeMODULE_LICENSE("Dual BSD/GPL");MODULE_AUTHOR("S......【阅读全文】

阅读(2269) | 评论(0) | 转发(1)

发布时间:2013-01-07 18:28:07

点击(此处)折叠或打开#include<linux/device.h>#include<linux/module.h>#include<linux/kernel.h>#include<linux/stat.h>#include<linux/init.h>#include<linux/string.h>#include<linux/sysfs.h>#include<linux/kobject.h>MODULE_LICENSE("Dual BSD/GPL");MODULE_AUTHOR("SM");s......【阅读全文】

阅读(1796) | 评论(0) | 转发(1)

发布时间:2013-01-07 16:09:14

文章的例子和实验使用《LDD3》所配的lddbus模块(稍作修改)。 提示:在学习这部分内容是一定要分析所有介绍的源代码,知道他们与上一部分内容(kobject、kset、attribute等等)的关系,最好要分析一个实际的“flatform device”设备,不然会只学到表象,到后面会不知所云的。 总线 总线是处理器和一个或多个设备之间的通道,在设备模型中, 所有的设备都通过总线相连, 甚至是内部的虚拟"platform"总线。总线可以相互插入。设备模型展示了总线和它们所控制的设备之间的实际连接。在 Linux 设备模型中, 总线由 bus_type 结构表示, 定义在 &......【阅读全文】

阅读(2042) | 评论(0) | 转发(1)

发布时间:2013-01-07 10:55:08

在linux-2.6.36内核上加载编译驱动时,出现  error:unknown field 'ioctl' specified in initializer 原因是:在2.6.36内核上file_operations发生了重大的改变: 原先的   int (*ioctl)(struct inode*, struct file*, unsigned int, unsigned long); 被改为了           long (*unlocked_ioctl) (struct file *, un......【阅读全文】

阅读(1989) | 评论(0) | 转发(0)

发布时间:2013-01-06 16:26:30

在 ldd_bus.h 定义如下://LDD driver typestruct ldd_driver{    char    *version;    struct module *module;    struct device_driver driver;    struct driver_attribute    version_attr;};//A device type for things "plugg......【阅读全文】

阅读(2311) | 评论(0) | 转发(2)

发布时间:2013-01-06 15:10:56

1. TI官方资源 TI中文主页 : http://focus.ti.com.cn/cn/tihome/docs/homepage.tsp 或者:http://www.ti.com 从“处理器”连接可以连接到每个芯片的资料主页,比如: http://focus.ti.com.cn/cn/docs/prod/folders/print/omap3530.html 或直接访问www.ti.com.omap3530 可以下载数据手册,应用文档,用户手册,开发工具等 2 开发环境和软件开发包下载 建议大家注册一个myti,方便下载一些软件工具和资料,并可以设定邮箱提醒 http://m......【阅读全文】

阅读(4849) | 评论(0) | 转发(3)

发布时间:2013-01-06 11:45:24

点击(此处)折叠或打开#include <linux/types.h>     //dev_t,MAJOR,MINOR,MKDEV#include <linux/fs.h>        //file_operations,struct file,struct indoe,register/unregister_chrdev,register/alloc/unregister_chrdev_regino,#include <linux/cdev.......【阅读全文】

阅读(4204) | 评论(0) | 转发(2)

发布时间:2013-01-06 09:43:44

PC操作系统:ubuntu 11.10使用的开发板:am335x_evm开发板使用的操作系统:linux 3.2 在新版本的内核中struct device 已经没有bus_id成员,取而代之的是通过dev_name和dev_set_name对设备的名字进行操作。         dev_name和dev_set_name在2.6.35.6内核中的源代码如下:         static inline const char *d......【阅读全文】

阅读(2339) | 评论(0) | 转发(0)

发布时间:2013-01-04 18:49:12

#include<linux/miscdevice.h>建一个miscdevice结构体static struct miscdevice misc = {       .minor = MISC_DYNAMIC_MINOR,       .name = DEVICE_NAME,       .fops = &dev_fops,};在驱动函数初始化中注册这个混杂设备misc_register(&a......【阅读全文】

阅读(2080) | 评论(0) | 转发(1)

发布时间:2013-01-04 15:43:53

1.结构框图:2.管脚功能描述3.状态图:Power on: 上电Reset Procedure: 复位过程Initialization: 初始化ZQCL: 上电初始化后,用完成校准ZQ电阻。ZQCL会触发DRAM内部的校准引擎,      一旦校准完成,校准后的值会传递到DRAM的IO管脚上,并反映为输出驱动和ODT阻值。ZQCS: 周期性的校准,能够跟随电压和温度的变化而变化。校准需要更短的时间窗口,     &......【阅读全文】

阅读(12263) | 评论(0) | 转发(12)

发布时间:2013-01-04 15:41:59

首先,我们先了解一下内存的大体结构工作流程,这样会比较容量理解这些参数在其中所起到的作用。这部分的讲述运用DDR3的简化时序图。   DDR3的
内部是一个存储阵列,将数据“填”进去,你可以它想象成一张表格。和表格的检索原理一样,先指定一个行(Row),再指定一个列(Column),我们就
可以准确地找到所需要的单元格,这就是内存芯片寻址的基本原理。对于内存,这个单元格可称为存储单元,那么这个表格(存储阵列)就是逻辑
Bank(Logical Bank,下面简称Bank)。 DDR3内部Bank示意图,这是一个NXN的阵列,B代表Bank......【阅读全文】

阅读(12227) | 评论(0) | 转发(15)

发布时间:2012-12-31 17:18:47

     前两天把内核关于内核启动参数的一些知识彻底地分析了一遍《Linux内核源码分析--内核启动命令行的传递过程(Linux-3.0 ARMv7)》,发现了一些以前没有注意的细节问题,这里总结如下:一、2.6.32以后的内核不再对cmdline中的未知参数输出警告信息     以前在移植内核的时候,如果cmdline中有未知的参数,内核一般会打印如下警告:Unknown boot option `**********': ignoring    但是这次我在uboot的bootargs中添加了内核未知的参数,比......【阅读全文】

阅读(2279) | 评论(0) | 转发(0)

发布时间:2012-12-31 17:15:31





    在完成了zImage自解压之后,就跳转到了解压后的内核(也就是vmlinux的bin版本Image),具体的入口可以在arch/arm/kernel/vmlinux.lds.S(最终的链接脚本是通过这个文件产生的)中获得:
......
SECTIONS
{
#ifdef CONFIG_XIP_KERNEL
. = XIP_VIRT_ADDR(CONFIG_XIP_PHYS_ADDR);
#else
. = PAGE_OFFSET + TEXT_OFFSET;
#endif

.init : { /* Init co......【阅读全文】

阅读(3527) | 评论(0) | 转发(3)

发布时间:2012-12-31 17:14:10

1. 引言 在专用的嵌入式板子运行 GNU/Linux 系统已经变得越来越流行。一个嵌入式 Linux 系统从软件的角度看通常可以分为四个层次: 1. 引导加载程序。包括固化在固件(firmware)中的 boot 代码(可选),和 Boot Loader 两大部分。 2. Linux 内核。特定于嵌入式板子的定制内核以及内核的启动参数。 3. 文件系统。包括根文件系统和建立于 Flash 内存设备之上文件系统。通常用 ram disk 来......【阅读全文】

阅读(3252) | 评论(0) | 转发(7)

发布时间:2012-12-31 17:10:37

    在基本分析完内核启动流程的之后,还有一个比较重要的初始化函数没有分析,那就是do_basic_setup。在内核init线程中调用了do_basic_setup,这个函数也做了很多内核和驱动的初始化工作,详解如下:/* * 好了, 设备现在已经初始化完成。 但是还没有一个设备被初始化过, * 但是 CPU 的子系统已经启动并运行, * 且内存和处理器管理系统已经在工作了。 * * 现在我们终于可以开始做一些实际的工作了.. */static void __init do_basic_setup(v......【阅读全文】

阅读(2265) | 评论(0) | 转发(0)

发布时间:2012-12-31 17:10:30

  在构架相关的汇编代码运行完之后,程序跳入了构架无关的内核C语言代码:init/main.c中的start_kernel函数,在这个函数中Linux内核开始真正进入初始化阶段,   下面我就顺这代码逐个函数的解释,但是这里并不会过于深入每个函数,因为这样就会只见树木,不见森林。分析代码首先要从构架上宏观地理解,然后再去考虑细节问题(这和小时候学语文要概括中心思想和段落大意是一个道理)。今后对于每个子系统的初始化,特别是内存子系统,有空都会分析一遍。asmlinkage void __init start_kernel(void){  &nbs......【阅读全文】

阅读(2351) | 评论(0) | 转发(0)

发布时间:2012-12-31 17:10:22

在分析start_kernel函数的时候,其中有构架相关的初始化函数setup_arch。此函数根据构架而异,对于ARM构架的详细分析如下:void __init setup_arch(char **cmdline_p){    struct machine_desc *mdesc; 点击(此处)折叠或打开此为设备描述结构体,对于任何板子都定义了这样的一个结构体,我以前的文章有介绍:《Uncompressing Linux... done, booting the kernel》 1、machine type 不匹配   ......【阅读全文】

阅读(2301) | 评论(0) | 转发(0)

发布时间:2012-12-31 17:10:07

    前面粗略分析start_kernel函数,此函数中基本上是对内存管理和各子系统的数据结构初始化。在内核初始化函数start_kernel执行到最后,就是调用rest_init函数,这个函数的主要使命就是创建并启动内核线程init。这个函数虽然意思为剩下的初始化,但是这个“剩下”的可是内容颇多,下面详细分析如下:/* * 我们必须确定在一个非__init函数或 * 其他根线程(root thread)和初始化线程(init thread)间的竞态。 * (这种竞态可能导致start_kernel在根线程运作到cpu_idle前被free_......【阅读全文】

阅读(2017) | 评论(0) | 转发(0)

发布时间:2012-12-31 12:01:41

    Linux内核在启动的时候需要一些参数,以获得当前硬件的信息或者启动所需资源在内存中的位置等等。这些信息可以通过bootloader传递给内核,比较常见的就是cmdline。以前我在启动内核的时候习惯性的通过uboot传递一个cmdline给内核,没有具体的分析这个过程。最近在分析内核启动过程的时候,重新看了一下内核启动参数的传递过程,彻底解决一下在这方面的疑惑。   一、bootloader与内核的通讯协议   内核的启动参数其实不仅仅包含在了cmdline中,cmdline不过是bootloader传递给内核的信......【阅读全文】

阅读(2432) | 评论(0) | 转发(0)

发布时间:2012-12-28 19:25:41

    在完成了zImage自解压之后,就跳转到了解压后的内核(也就是vmlinux的bin版本Image),具体的入口可以在arch/arm/kernel/vmlinux.lds.S(最终的链接脚本是通过这个文件产生的)中获得: ...... SECTIONS { #ifdef CONFIG_XIP_KERNEL . = XIP_VIRT_ADDR(CONFIG_XIP_PHYS_ADDR); #else . = PAGE_OFFSET + TEXT_OFFSET; #endif .init : { /* Init co......【阅读全文】

阅读(2948) | 评论(0) | 转发(0)

发布时间:2012-12-28 19:25:31

    研究内核源码和内核运行原理的时候,很总要的一点是要了解内核的初始情况,也就是要了解内核启动过程。我在研究内核的内存管理的时候,想知道内核启动后的页表的放置,页表的初始化等信息,这促使我这次仔细地研究内核的启动代码。    CPU在bootloader的帮助下将内核载入到了内存中,并开始执行。当然,bootloader必须为zImage做好必要的准备: 1. CPU 寄存器的设置:R0=0;R1=Machine ID(即Machine Type Number,定义在linux/arch/arm/tools/mach-types);R2=内......【阅读全文】

阅读(2448) | 评论(0) | 转发(0)
给主人留下些什么吧!~~

Dafanzi2016-12-05 18:21

我找到代码了 不用了 谢谢

回复  |  举报

Dafanzi2016-12-05 17:20

大佬,在你这篇讲解内存池的博文(http://blog.chinaunix.net/uid-28458801-id-4254501.html)中,list.h源文件没有提供啊。你能提供这个博文的完整代码我学习学习吗?能的话发给我邮箱可以吗?brottfan@163.com谢谢啦

回复  |  举报
留言热议
请登录后留言。

登录 注册