- 博客(10)
- 资源 (11)
- 收藏
- 关注
原创 Linux中的内存分配和释放之bootmam_init()函数分析
了解了Linux内存管理的基本知识后,我们来研究一下Linux内存的分配和释放。我们会分两个部分来研究的。我们向来探讨系统启动初期内存的分配和释放。这个阶段可以申请到大片的物理内存,但是要注意到以下两点! 1)其实系统启动初期是指在init_mem()之前的阶段,在这个阶段由于只需要少量的内存(内核编译需要的内存,页帧位码表,页表,initrd),所以可以申请到大片的物理内存,但是我们还
2010-02-25 09:33:00 3936
原创 Linux lock_kernel()函数的分析。
这只是暂时的记录,以后会把它归类到start_kernel()函数的分析。在分析之前,我先要说说几个概念。 内核抢占:在2.6内核加入了抢占的能力,就是说调度程序有办法在一个内核级的任务正在执行的时候从新调度。但是必须要保证重新调度要安全,这样就要靠一把锁来保证了。 计数器(thread_info.[reempt_count):其实也可以把他叫成锁的,它的初值定义为0,每当使用锁的
2010-02-24 11:30:00 10620 1
原创 start_kernel函数之前的汇编分析
在分析这段代码之前,我们必须先找到汇编代码的入口位置,也就是Bootloader启动linux时所跳转到的地址。内核一般被压缩后保存到FLASH上的,在Bootloader启动Linux之前必须先解压缩内核,关于内核解压缩部分请参照arch/arm/boot/compressed这里面的代码,这里就不细将了。 在进入Linux汇编代码之前,Bootloader的执行影响CPU的状态,
2010-02-24 09:10:00 4136 1
原创 linux 内存管理之基础篇
一.Linux内存管理的一些基本概念内存空间: 绝大多数的嵌入式系统的系统内存和I/O地址空间是统一编址的,内存和I/O地址空间共享0x00000000~0xFFFFFFFF共4GB地址空间范围,这4GB的地址空间范围包括以下几种存储空间:设备空间、内部高速SRAM空间、内部mini cache空间、低端中断向量空间、高端中断向量空间、RAM内存空间(系统的内存空间)
2010-02-09 10:06:00 5014
原创 arm9处理器的cache和write buffer
接下来的研究就是cache了,只要我们加深了对这些概念的理解,还有前面说的MMU。我们在将来研究内存管理的时候就有谱了。在这里我们就先打打基础,所以我在这里记录一下我对cache的认识。 cache(高速缓存) write buffer(写缓存) 对于cache的工作原理在很多网站上都可以搜索得到,在这里我就不讲述这方面的内容了。我想先说说地址映像方式。地址
2010-02-08 09:32:00 3843 1
原创 arm9处理器的虚拟内存管理单元(MMU)
Linux与ulinux的主要区别其中一点就是有没有mmu。所以我想在这里记录一下我对它的理解。文章分2个部分来记录,第一部分就是讲述当虚拟地址传递给cpu后,cpu是如何解析它,把它装换成物理地址,再把这个地址送到内存总线上;第二部分就是要讨论MMU是如何控制存储空间的访问权限的。这里我先述说第一部分:我先在这里述说一下一些基本概念,页表,页表项。表是用来干什么的?其实就是反应虚拟地址和
2010-02-07 19:46:00 5123 2
转载 linux不懂得就上来查吧!
linux目录架构 / 根目录 /bin 常用的命令 binary file 的目錄 /boot 存放系统启动时必须读取的档案,包括核心 (kernel) 在内 /boot/grub/menu.lst GRUB设置 /boot/vmlinuz 内核 /bo
2010-02-06 10:56:00 904
原创 s3c2440触摸屏驱动分析(LINUX2.6)(3)
这篇文章主要是分析tsdev的设备结点的访问的,通过此分析,也会领悟到整个中断过程和事件上报(event处理)的过程。关于设备结点的访问肯定离不开我们平时谈到的操作指针,与tsdev设备对应的操作指针就是&tsdev_fops(其是tsdev_handler结构体中的一员)。这时有人肯定有一点疑惑,在input文件夹下那么多的.c文件,每个文件都会有对应的input_handler结构体,也就是会
2010-02-03 15:10:00 2139 1
原创 s3c2440触摸屏驱动分析(LINUX2.6)(2)
int __init EmbedSky_ts_init(void){ return driver_register(&EmbedSky_ts_driver);}static struct device_driver EmbedSky_ts_driver = { .name = "EmbedSky-ts", .bus = &pla
2010-02-02 11:28:00 3839
原创 s3c2440触摸屏驱动分析(LINUX2.6)(1)
本人初次写内核方面的文章,关于触摸屏的驱动只是作为一个引子来深入探讨LINUX的INPUT子系统。这边文章主要先研究触摸屏的中断。以下是对代码linux-2.6.25.8/drivers/input/touchscreen文件夹下的EmbedSky_ts.c程序的分析(关于此内核是天嵌公司ARM9开发板对应的内核) 这里我们要关注的是以下三个程序段touch_timer_fire,st
2010-02-02 10:10:00 6843 1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人