- 博客(19)
- 资源 (56)
- 收藏
- 关注
转载 printk打印消息机制
2.1.4 printk打印消息机制在内核中,函数printk将消息打印到环形缓冲区__log_buf中,并将消息传给控制台进行显示。控制台驱动程序根据控制台的日志级别显示日志消息。应用程序通过系统调用sys_syslog管理环形缓冲区__log_buf,它可以读取数据、清除缓冲区、设置日志级别、开/关控制台等。当系统调用sys_syslog从环形缓冲区__log_buf读取数据时,
2013-04-30 09:16:20 1410
转载 Uboot 分析(4)
还记得上节中,u-boot.lds文件连接的内容吗??代码段 数据段 命令段 bss段下面来看第一部分:代码段,对应于uboot的第一阶段 start.S文件附上代码: ?1234567891011121314
2013-04-24 22:58:28 1068
转载 Uboot 分析(5)
下面结合移植uboot到 s3c2440来分析如何改写相关的uboot源码(上节已经给出uboot源码,可以参考) 根据cpu/arm920t/u-boot.lds中指定的连接方式: 看一下uboot.lds文件,在board/smdk2410目录下面,uboot.lds是告诉编译器这些段改怎么划分,GUN编译过的段,最基本的三个段是RO,RW,ZI,RO表示只读
2013-04-24 22:54:21 1125
转载 Uboot 分析(2)
声明:本人第一次详细写些关于linux源码方面的分析博文,如有错误之处,请大家更正。此外,这里本人主要结合如何移植uboot到tq2440来详细分析uboot源码,在分析中一步一步实现移植uboot到s3c2440中(打破以往博文只注重分析不实践和只教你移植,而不讲解理论)。主要参考博文:http://blog.csdn.net/hare_lee/article/details/69163
2013-04-24 22:51:02 1123
转载 Uboot 分析(3)
首先来回顾一下上节,主要介绍了uboot的第一个文件Makefile,注意点有哪两个呢?第一:交叉编译第二:配置下面主要分析第二个文件:u-boot.lds先看源码:?123456789101112131415
2013-04-24 22:51:02 1041
转载 Uboot 分析(1)
一、bootloader的概念 就是在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境,他就是所谓的引导加载程序(Boot Loader)二、bootloader的作用BootLoader的终极任务是引导操作系统,所谓引导操作系统,就是启动内核,在启
2013-04-24 22:49:09 1294
原创 android 最新bootloader LK加载kernel的问题
MMU 执行boot命令的时候,会执行以下跳入kernel的函数,这和其他bootloader的做法是一样的,唯一的不同是LK使用了MMU和Cache来支持多线程,所以在跳到内核之前要先disable mmu和cache,代码如下uboot使用了MMU吗??体系结构有关,可以打开也可以不打开。一般uboot代码很少,为了简化设计,都是不使用mmu,如
2013-04-24 22:02:41 2480 1
转载 B BL BLX BX详解
B、BL、BX、BLX 和 BXJ跳转、带链接跳转、跳转并切换指令集、带链接跳转并切换指令集、跳转并转换到 Jazelle 状态。语法op1{cond}{.W} labelop2{cond} Rm其中:op1是下列项之一:B跳转。BL带链接跳转BLX带链接跳转并切换指令集。op2
2013-04-24 21:58:24 2328
转载 Linux命令:cp (copy)复制文件或目录
功能: 复制文件或目录说明: cp指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到此目录中。若同时指定多个文件或目录,而最后的目的地并非一个已存在的目录,则会出现错误信息参数: -a 或 --archive 此参数的效果和同时指定"-dpR"参数相同 -b 或 --backup
2013-04-24 10:22:33 1093
转载 关于daemonize()
lock_kernel();siginitsetinv(¤t->blocked, SHUTDOWN_SIGS);daemonize();target_data.thread_id = current;unlock_kernel();注:SHUTDOWN_SIGS前面定义为# define SHUTDOWN_SIGS (sigmask(SIGKILL)|sigmask(SIGIN
2013-04-13 10:00:50 2500
原创 linux 内核线程
创建内核线程: struct task_struct *kthread_create(int (*threadfn)(void *data), void *data, const char namefmt[]); 唤醒内核线程(可以唤醒所有进程(线程)): wake_up_process(struct task_struct *k);创建并运行内核线程: struc
2013-04-13 10:00:23 2146
原创 Linux中的工作队列
工作队列是实现延迟的新机制,从 2.5 版本 Linux 内核开始提供该功能。不同于微线程一步到位的延迟方法,工作队列采用通用的延迟机制, 工作队列的处理程序函数能够休眠(这在微线程模式下无法实现)。 工作队列可以有比微线程更高的时延,并为任务延迟提供功能更丰富的 API。 从前,延迟功能通过 keventd 对任务排队来实现, 但是现在由内核工作线程 events/X 来管理。
2013-04-11 11:02:14 1529
转载 linux 延时工作队列
INIT_DELAYED_WORK()是一个宏,我们给它传递了两个参数.&hub->leds和led_work.对设备驱动熟悉的人不会觉得INIT_DELAYED_WORK()很陌生,其实鸦片战争那会儿就有这个宏了,只不过从2.6.20的内核开始这个宏做了改变,原来这个宏是三个参数,后来改成了两个参数,所以经常在网上看见一些同志抱怨说最近某个模块编译失败了,说什么make的时候遇见这么一个错误:
2013-04-11 10:51:35 2123 2
转载 Linux内核源码分析--内核启动之(1)zImage自解压过程(Linux-3.0 ARMv7)
研究内核源码和内核运行原理的时候,很总要的一点是要了解内核的初始情况,也就是要了解内核启动过程。我在研究内核的内存管理的时候,想知道内核启动后的页表的放置,页表的初始化等信息,这促使我这次仔细地研究内核的启动代码。 CPU在bootloader的帮助下将内核载入到了内存中,并开始执行。当然,bootloader必须为zImage做好必要的准备: 1. CPU
2013-04-06 09:49:54 3708
转载 怎么把kernel-2.6.13用uboot引导?
要解决的问题:1. kernel虚拟地址怎么改?2. bootloader默认把他下载到了那里?3. 参数tag的地址怎么改 ,什么时候使用这个地址的?4. 自解压的地址怎么改?5. 从启动到linux开始运行,整个ram的布局的变换?6. 怎么把kernel-2.6.13用uboot引导?1. 虚拟地址怎么改?(运行时地址,自解压后kernel地址)生成vml
2013-04-05 22:43:35 2102
原创 Linux内核启动:setup_arch
BootLoader可以向Linux传递参数,编译内核时也可以配置boot options。调试中使用的U-Boot bootargs如下:noinitrd root=/dev/mtdblock3 rw console=ttySAC0,115200 init=/linuxrc mem=64M内核版本:2.6.35.7内核的处理参数的整体过程如下:① u-bo
2013-04-05 11:25:57 1840
转载 bootloader 内核启动参数
Bootloader与内核的交互 Bootloader与内核的交互是单向的,Bootloader将各类参数传给内核。由于它们不能同时运行,传递办法只有一个:Bootloader将参数放在某个约定的地方之后,再启动内核,内核启动后从这个地方获得参数。除了约定好参数存放的地址外,还要规定参数的结构。Linux 2.4.x 以后的内核都期望以标记列表(taggedlist)的形式来传递启
2013-04-05 11:16:34 1555
转载 Boot Loader启动过程分析
一、 Boot Loader的概念和功能 1、嵌入式Linux软件结构与分布在一般情况下嵌入式Linux系统中的软件主要分为以下及部分:(1)引导加载程序:其中包括内部ROM中的固化启动代码和Boot Loader两部分。而这个内部固化ROM是厂家在芯片生产时候固化的,作用基本上是引导Boot Loader。有的芯片比较复杂,比如Omap3,他在flash中没有代码的时候有许多启动方
2013-04-05 11:03:47 3160
原创 自旋锁(spinlock) 解释得经典,透彻
获得自旋锁和释放自旋锁有好几个版本,因此让读者知道在什么样的情况下使用什么版本的获得和释放锁的宏是非常必要的。 如果被保护的共享资源只在进程上下文访问和软中断上下文访问,那么当在进程上下文访问共享资源时,可能被软中断打断,从而可能进入软中断上下文来对被保护的共享资源访问,因此对于这种情况,对共享资源的访问必须使用spin_lock_bh和spin_unlock_bh来保护。 当
2013-04-03 12:34:14 2673
Android核心分析
2011-12-25
佛山网通EPON的FTTH工程方案设计
2011-12-25
ARM---Cortex-A8处理器
2022-09-11
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人