- 博客(34)
- 资源 (1)
- 收藏
- 关注
转载 启动流程分析(2)-uboot .
1 Uboot存放地址Uboot是是运行完固化的Boot Code后,Boot Code会跳转到选定设备的指定地址去运行,以EMMC为例,见下图起始的前0x200即512B为MBR,接着的是预留的Second Image Table,Boot Image( uboot)应该放在0x400(1024)的地址,即烧写uboot的时候,就应该烧写在emmc主分区的102
2012-09-12 23:01:56
2028
转载 FSL Imx53 启动流程分析(1) --上电启动 .
IMx53上电后,进入的是其内部的Memory,从iMx53RM.pdf Chapter 2中可以查看到System Memory Map图如下: 从片内地址的0x0000_0000至0x0000_FFFF这64K是Boot Rom的空间,其固化有Boot Code。IMx53在硬件复位后会强制Arm内核从Boot Rom启动,运行Boot Code。 Boot
2012-09-12 22:57:52
1206
转载 imx51 ROM boot code 启动分析 .
启动模式mx51支持四种启动模式,这些模式的选择是通过IC package上的焊点来决定的(BOOT_MODE 0/1),在reset后会采样这两个焊点,然后把他们的状态保存到SRC Boot Mode Register(SBMR) 寄存器。焊点连接到地对应logic 0,对于logic 1,freescale推荐使用NVCC_PER3四种启动模式分别为: internal,
2012-09-12 22:44:16
1772
转载 使uboot支持S3C6410的SD启动
这里使用的uboot并非uboot官方发布的uboot代码,而是为三星定制的一个uboot版本s3c-u-boot-1.1.6,其代码作者就包括了三星的程序员与denx的员工。这个版本支持SD启动,不过默认是nand启动,使它支持uboot需要做以下事情: 1、 虽然支持uboot启动,但是uboot代码里不叫SD启动方式,而是叫movinand启动方式,在incluede/confi
2012-09-12 22:29:27
717
转载 imx50芯片基于SD卡启动分析
启动概述:Mx50的在上电复位的时候开始启动:执行on-chip boot ROM,boot ROM根据配置的模式,及其OCOTP bits值和GPIO的设置,判断具体启动方式。boot ROM的代码主要功能:支持多种启动设备USB下载支持DCD(Device Configuration Data)数字签名基于HAB(High Assurance Boot)Mx50 boo
2012-09-12 22:26:58
2349
转载 对于struct file_operations中ioctl消失的学习笔记
很久都没有写驱动代码了,对于一些驱动相关的内核变化也没有怎么关心。这次重游《LDD3》获益良多,其值对于struct file_operations中ioctl的消失也让我长了不少见识。当年看《LDD3》的时候已经注意到了书中对ioctl的评价不是很好:“ioctl调用的非结构化本质导致众多内核开发者倾向于放弃它。” ,而在这次阅读3.0代码的时候,这个成员在struct file_opera
2011-11-16 19:39:40
688
转载 中断处理的工作队列机制
工作队列(work queue)是另外一种将工作推后执行的形式 ,它和我们前面讨论的所有其他形式都有不同。工作队列可以把工作推后,交由一个内核线程去执行,也就是说,这个下半部分可以在进程上下文中执行。这样,通过工作队列执行的代码能占尽进程上下文的所有优势。最重要的就是工作队列允许
2011-10-14 11:03:22
1301
转载 什么是进程上下文,什么是中断上下文
进程上下文和中断上下文是操作系统中很重要的两个概念,这两个概念在操作系统课程中不断被提及,是最经常接触、看上去很懂但又说不清楚到底怎么回事。造成这种局面的原因,可能是原来接触到的操作系统课程的教学总停留在一种浅层次的理论层面上,没有深入去研究。处理器总处于以下状态中的一种:
2011-10-14 10:49:12
906
转载 Linux 系统内核空间与用户空间通信的实现与分析
2 Linux 内核模块的运行环境与传统进程间通信在一台运行 Linux 的计算机中,CPU 在任何时候只会有如下四种状态:【1】 在处理一个硬中断。【2】 在处理一个软中断,如 softirq、tasklet 和 bh。【3】 运行于内核态,但有进程上下文,
2011-09-28 16:31:48
846
转载 Linux那些事儿之博客导读
我是U盘 说的是2.6.10的内核 我是Sysfs 说的是2.6.10的内核 戏说USB 说的是2.6.22的内核 我是Hub/UHCI/EHCI 说的是2.6.22.1的内核 ===============================
2011-09-19 09:22:31
569
翻译 #define XXX do{...}while(0)
1、函数式宏定义的参数没有类型,预处理器只负责做形式上的替换,而不做参数类型检查,所以传参时要格外小心。2、调用真正函数的代码和调用函数式宏定义的代码编译生成的指令不同。如果是真正的函数,那么它的函数体要编译生成指令,代码中出现的每次调用也要编译生成传参指令和call指令。而
2011-09-15 11:21:48
1064
转载 uImage PK zImage
内核编译(make)之后会生成两个文件,一个Image,一个zImage,其中Image为内核映像文件,而zImage为内核的一种映像压缩文件,Image大约为4M,而zImage不到2M。 那么uImage又是什么的?它是uboot专用的映像文件,它是在z
2011-08-23 15:12:25
452
转载 man函数输入参数分析
main( int argc, char ** argv ) argv: 指针的指针 argc: 整数 char **argv or char *argv[] or char argv[][] 为了能形象的说明这两个参数的含义,我们
2011-08-23 15:10:43
908
转载 定时器相关的一些结构体
content: struct timer_list init_timer timer_pending add_timer del_timer del_timer_sync ---------------------------
2011-08-23 15:07:25
865
转载 Linux内核2.6.14源码分析-双向循环链表代码分析(巨详细)
Linux内核源码分析-链表代码分析分析人:余旭 分析时间:2005年11月17日星期四 11:40:10 AM 雨 温度:10-11度编号:1-4 类别:准备工作Email:yuxu9710108@163.com时代背景:开始在www.linuxforu
2011-08-23 15:04:33
608
转载 关于双向链表的一些分析
跟大家门交流一下:一、插入操作(insert)(一)基本原理 双链表就好像是手拉手站成一排的人,每个人的右手(next)拉着下一个人,左手(prior)拉着前一个人,每两个人之间有两支手互联.插入操作实际是向队伍中增加人员,他需要拉上左右两边的人,即共三个人要发生
2011-08-23 13:56:34
670
转载 subsys_initcall();
我们看到一个 subsys_initcall,它是一个宏,我们可以把它理解为module_init,只不过因为这部分代码比较核心,开发者们把它看作一个子系统,而不仅仅是一个模块,这也很好理解,usbcore这个模块它代表的不是某一个设备,而是所有usb设备赖以生存的模块,Li
2011-08-05 13:43:26
391
转载 Linux那些事儿(目录)
第1篇 Linux那些事儿之我是USB Core1.引子 22.它从哪里来 23.PK 34.漫漫辛酸路 35.我型我秀 46.我是一棵树 57.我是谁 98.好戏开始了 119.不一样的core 1310.从这里开始 1711.面纱
2011-08-04 22:15:29
112
转载 从文件到字符设备
从文件到字符设备 在/dev下面有很多设备,其中也有大家广为使用的字符设备,呢里面的文件是如何与字符设备挂钩的呢~ 平时我们使用的open函数是如何动态加载字符设备的操作集的呢~下面就让我们慢慢剖析~ (以内核2.6.26为参考)一.首先是文件系统~ 需要动态解析文件路径名 像/dev/ts0 在文件系统里分为3个部分 1./(根文件目录) 2.d
2011-08-03 13:48:15
741
转载 Linux I2C应用程序
#include #include #include #include #include #include #include #include #include #include #include #include int main(int argc,
2011-08-02 17:11:42
6885
原创 Linux I2C驱动源码分析
内核版本:2.6.31.6如果是TQ2440开发板,eeprom i2c访问地址为0x50首先在S3C2440平台的初始化函数中,主要是将开发平台的设备注册进了系统,也就是将device注册到了platform虚拟的总线上,并进行了一些初始化的工作,这里我们只关注I2C的部分。static void __init smdk2440_machine_init(void){...
2011-08-02 16:46:24
1762
原创 个人对kobject的一点研究(6)
然后platform_driver_unregister,他的参数 test_driver的结构如下static struct platform_driver test_driver = { .probe = test_probe, .remove = test_remove, ...
2011-08-01 17:39:13
437
原创 个人对kobject的一点研究(5)
在platform模型设备的建立中,需要2个部分的注册,驱动的注册和设备的注册platform_device_register(&test_device); platform_driver_register(&test_driver);首先看platform_device_register注册参数为test_device,结构如下static stru...
2011-08-01 17:31:51
578
原创 个人对kobject的一点研究(4)
现在到bus_register了注册的参数platform_bus_type如下所示struct bus_type platform_bus_type = { .name = "platform", .dev_attrs = platform_dev_attrs, .match ...
2011-08-01 17:28:20
570
原创 个人对kobject的一点研究(3)
在platform的注册中,分为两个部分,一部分是注册到devices中,另一部分是注册到bus中,代码在/drivers/base/platform.c中int __init platform_bus_init(void){ int error; //注册到devices目录中 error = device_register(&...
2011-08-01 17:22:15
452
原创 个人对kobject的一点研究(2)
首先是busbus的注册在/drivers/base/bus.c里int __init buses_init(void){ bus_kset = kset_create_and_add("bus", &bus_uevent_ops, NULL); if (!bus_kset) return -ENOMEM; ...
2011-08-01 17:17:31
641
转载 个人对kobject的一点研究(1)
在LINUX中最让人不解的大概就是/sys下面的内容了下面首先让我们来创建一个简单的platform设备,并从这个设备的视角进行深入,在此篇文章的深入过程中,我们只看kobeject的模型我所使用的内核版本号为2.6.26,操作系统的内核版本号为2.6.27-7,暂未
2011-08-01 17:11:28
913
1
转载 个人对kobject的一点研究
http://www.chinaunix.net 作者:superfight 发表于:2009-02-01 22:42:13【发表评论】【查看原文】【Linux讨论区】【关闭】在LINUX中最让人不解的大概就是/sys下面的内容了下面首先让我们来创建一个简单的platform设
2011-07-22 14:06:42
72
转载 内核中的likely和unlikely宏定义
在内核代码中经常会看到unlikely和likely的踪影。他们实际上是定义在 linux/compiler.h 中的两个宏。 #define likely(x) __builtin_expect(!!(x), 1) #define unlikely(x) __bui
2011-07-21 12:20:25
503
转载 文件描述符FD_set FD_zero
FD_SET: 打开类型fd_set的某一位。 FD_ZERO: 初始化fd_set; FD_ISSET:测试结构fd_set中的描述字。 select函数 系统提供了select函数实实现多路复用输入/输出模型。原型 #include #inc
2011-07-19 15:21:33
2591
原创 clk_get()
struct clk *clk_get(struct device *dev, const char *id),对于SPI时钟,第一个参数必须不能为NULL。函数用于获取时钟信息,函数内部会将传入的“spi”字符串和系统中各时钟的名字进行比较,看是否匹配,看上面的分析可知,SPI控制器时钟注册时的时钟名也是“spi”,这个过程实际上和device,driver的匹配过程是类似的。clk_get源...
2011-07-13 11:17:09
2770
转载 __initdata 的奇怪影响
__initdata 的奇怪影响作者: 宋立新Email:zjujoe@yahoo.com恍然大悟后,当然也就不奇怪了。 不过当时 __initdata 修饰符确实给我们带来很大的困惑。事情的经过是这样的。通常我们设置mfp寄存器是在系统的启动阶段统一设置的, 所以 lc6830.c 中会有一个数组:static mfp_cfg_t saar_mfp_c...
2011-07-13 09:39:58
491
原创 alsa:open_substream
<br />传入参数0;<br /> switch (stream) {<br /> case SNDRV_PCM_STREAM_PLAYBACK:<br /> if (pcm->info_flags & SNDRV_PCM_INFO_HALF_DUPLEX) {<br /> for (substream = pcm->streams[SNDRV_PCM_STREAM_CAPTURE].substream; substream; substream
2011-06-02 11:11:00
92
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人