在gcc下模拟bfin-uclinux的内存管理(2):所需要的文件及其更改
来源:互联网 发布:宝果网络 编辑:程序博客网 时间:2024/05/18 14:23
快乐虾
http://blog.csdn.net/lights_joy/
lights@hb165.com
本文适用于
ADI bf561 DSP
uclinux-2008r1-rc8 (移植到vdsp5)
Visual DSP++ 5.0
欢迎转载,但请保留作者信息
由于内核的头文件都放在include目录下,且其相互之间的引用关系较为复杂,故此保留include的整个目录。此外还需要以下几个c文件:
Arch/blackfin/kernel/setup.c:这个文件中定义了几个与内存管理相关的全局变量,然后在setup_arch函数中设置了这些全局变量的值。
由于我们需要对内存分配过程进行模拟,因此需要首先从系统分配
raw_memory = malloc((CONFIG_MEM_SIZE + 1) * 1024 * 1024);
memory_start = _rambase = _ramstart = ((unsigned long)raw_memory + PAGE_SIZE - 1) / PAGE_SIZE * PAGE_SIZE;
memory_end = _ramend = _ramstart + CONFIG_MEM_SIZE * 1024 * 1024;
而原来对这几个全局变量的设置语句则不再使用。
之所以多分配了
Init/main.c:这个文件中主要使用了start_kernel函数,当然在此函数中并不需要进行所有的初始化工作,而仅仅调用几个与内存管理相关的函数:
void __init start_kernel(void)
{
char * command_line;
………………………………….
setup_arch(&command_line);
…………………………………….
build_all_zonelists();
page_alloc_init();
………………………………………….
mem_init();
kmem_cache_init();
.......................
}
经过这几个函数调用之后,三种内存算法的初始化工作全部完成,就可以自由进行调用了。
Arch/blackfin/mm/init.c:这个文件主要有paging_init与mem_init两个函数。
mm/bootmem.c:bootmem算法实现。
Mm/page_alloc.c:buddy算法实现。
Mm/slab.c:slab算法实现。
此外还需要几个辅助文件,如lib/bitmap.c等,与内存算法关系不大,在此就不进行列举了。
参考资料
uClinux2.6(bf561)中的CPLB(
uclinux2.6(bf561)中的bootmem分析(1):猜测(
uclinux2.6(bf561)中的bootmem分析(2):调用前的参数分析(
uclinux2.6(bf561)中的bootmem分析(3):init_bootmem_node(
uclinux2.6(bf561)中的bootmem分析(4):alloc_bootmem_pages(
uclinux2.6(bf561)内核中的paging_init(
uclinux-2008r1(bf561)内核的icache支持(1):寄存器配置初始化(
uclinux-2008r1(bf561)内核的icache支持(2):icplb_table的生成(
uclinux-2008r1(bf561)内核的icache支持(3):__fill_code_cplbtab(
uclinux-2008r1(bf561)内核的icache支持(4):换页问题(
再读uclinux-2008r1(bf561)内核中的bootmem(
uclinux-2008r1(bf561)内核中与存储管理相关的几个全局变量(
uclinux-2008r1(bf561)内核存储区域初探(
uclinux-2008r1(bf561)内核中的zonelist初始化(
uclinux-2008r1(bf561)内核中内存管理相关的几个结构体(
再读内核存储管理(1):相关的全局变量(
再读内核存储管理(2):相关的数据结构(
再读内核存储管理(3):bootmem分配策略(
再读内核存储管理(4):存储区域管理(
再读内核存储管理(5):buddy算法(
再读内核存储管理(6):高速缓存的应用(
再读内核存储管理(7):icache支持(
再读内核存储管理(8):片内SRAM的使用(
初读SLAB(
三读bootmem(
再读uclinux-2008r1(bf561)内核存储区域管理(1):相关数据结构(
再读uclinux-2008r1(bf561)内核存储区域管理(2):可用页表初始化(
再读uclinux-2008r1(bf561)内核存储区域管理(3):zone初始化(
再读uclinux-2008r1(bf561)内核存储区域管理(4):zonelist初始化(
再读uclinux-2008r1(bf561)内核存储区域管理(5):page初始化(
在gcc下模拟bfin-uclinux的内存管理(1):基本思想(
- 在gcc下模拟bfin-uclinux的内存管理(2):所需要的文件及其更改
- 在gcc下模拟bfin-uclinux的内存管理(1):基本思想
- 在cygwin下进行bfin-uclinux开发
- 在cygwin下使用bfin-uclinux-gdb
- uClinux的内存管理
- 基于bfin-uclinux的asterik siptls
- GCC在编译时如何寻找所需要的头文件(转)
- bfin-xxx-gcc-4.3.1中config.status的生成及运行(3):文件配置
- S3c44B0在uclinux中需要修改的文件
- gcc 在编译时如何去寻找所需要的头文件
- gcc 在编译时如何去寻找所需要的头文件:
- bfin-xxx-gcc-4.3.1中config.status的生成及运行(2):Shell检测
- bfin-xxx-gcc的差异(1):猜测
- 初试bfin-uclinux-08r1.5-rc3的SMP支持
- bfin-xxx-gcc-4.3.1中config.status的生成及运行(9):头文件生成
- ARC下需要注意的内存管理
- ARC下需要注意的内存管理
- ARC下需要注意的内存管理
- [对话]--活跃在社区的美女猎头
- 宛如,一个要强的女人――第三届英雄大会嘉宾专访
- DataTable的使用
- ERROR org.mortbay.log - failed java.lang.NoClassDefFoundError: org/apache/log4j/PropertyConfigurator
- 探索NDIS HOOK新的实现方法
- 在gcc下模拟bfin-uclinux的内存管理(2):所需要的文件及其更改
- alv 两种格式原始的例子
- ASP生成随机密码的两个函数:
- 宽带网速计算方法
- UNIX 高手的 10 个习惯
- c#自动升级
- NetBeans 时事通讯(刊号 # 18 - Jul 30, 2008)
- 对手 Opponent
- UNIX 高手的另外 10 个习惯