mmuos

所属分类:处理器开发
开发工具:C/C++
文件大小:75KB
下载次数:498
上传日期:2005-10-08 22:28:30
上 传 者dswei
说明:  这是一个不到2000行的操作系统,巧妙地利用ARM9 CPU的内存管理单元(MMU)实现进程的切换。ARM9的4G虚拟地址可分成128个进程空间,每个32M。虽然它们的虚拟地址(VA)都是0-(32M-1),但是对应的MVA(Modified vitual address,由虚拟地址VA和进程号PID组合而来)不一样,设置MVA对应的页表指向不同物理地址就可以很方便地让各进程运行空间相互隔开。代码很少,注释丰富,希望能对想理解操作系统、了解ARM体系结构的朋友有所帮助。
(This is a trip of less than 2000 operating system, cleverly using ARM9 CPU memory management unit (MMU) to achieve the switching process. ARM9 4G virtual address can be divided into 128 process space, each 32M. While their virtual address (VA) are 0- (32M-1), but the corresponding MVA (Modified Virtual address, and by the virtual address VA and the process of portfolio from PID) not the same, set MVA corresponding page table at the different physical address can be very easy to let the the process of separating the mutual operation of space. Code rarely Notes rich, in hopes of understanding the operating system, understanding the ARM architecture friends help.)

文件列表:
MOS\arch\s3c2410\head.S (2618, 2005-10-07)
MOS\arch\s3c2410\init.c (5374, 2005-10-07)
MOS\arch\s3c2410\head.d (101, 2005-10-07)
MOS\arch\s3c2410\Makefile (790, 2005-10-07)
MOS\arch\s3c2410\init.d (328, 2005-10-07)
MOS\arch\s3c2410\head.o (1920, 2005-10-07)
MOS\arch\s3c2410\init.o (1656, 2005-10-07)
MOS\arch\s3c2410\built-in.o (2884, 2005-10-07)
MOS\arch\s3c2410 (0, 2005-10-07)
MOS\arch\mos.lds (176, 2005-06-20)
MOS\arch\Makefile (889, 2005-06-20)
MOS\arch\built-in.o (2884, 2005-10-07)
MOS\arch (0, 2005-10-07)
MOS\lib\string.c (555, 2005-06-20)
MOS\lib\Makefile (854, 2005-06-20)
MOS\lib\string.d (29, 2005-10-07)
MOS\lib\string.o (772, 2005-10-07)
MOS\lib\built-in.o (835, 2005-10-07)
MOS\lib (0, 2005-10-07)
MOS\include\init.h (368, 2005-10-07)
MOS\include\interrupt.h (1408, 2005-10-07)
MOS\include\mmu.h (563, 2005-06-20)
MOS\include\s3c2410.h (2917, 2005-10-07)
MOS\include\sched.h (1140, 2005-06-20)
MOS\include\serial.h (171, 2005-06-21)
MOS\include\string.h (69, 2005-06-20)
MOS\include\swi.h (878, 2005-06-20)
MOS\include (0, 2005-10-07)
MOS\user_program\uart (192, 2005-10-05)
MOS\user_program\leds (204, 2005-10-05)
MOS\user_program\cat_sh (911, 2005-06-21)
MOS\user_program\m (13516, 2005-10-07)
MOS\user_program\usr_LEDS\main.c (562, 2005-06-20)
MOS\user_program\usr_LEDS\Makefile (655, 2005-10-05)
MOS\user_program\usr_LEDS\crt0.o (640, 2005-10-05)
MOS\user_program\usr_LEDS\main.o (940, 2005-10-05)
MOS\user_program\usr_LEDS\crt0.s (362, 2005-06-20)
MOS\user_program\usr_LEDS\lib.o (703, 2005-10-05)
MOS\user_program\usr_LEDS\uart (432, 2005-06-20)
MOS\user_program\usr_LEDS\leds (204, 2005-10-05)
... ...

1. MOS目录下user_program为用户代码,其它目录为内核代码 2. 实验环境: a. s3c2410开发板,***M SDRAM,物理起始地址0x30000000 b. 主机redhat9.0,交叉编译工具arm-linux-3.4.1,nand flash JTAG工具Jflash-s3c2410 3. 实验步骤: a. 在MOS目录下运行: make 生成mos内核二进制文件 b. 进入user_program/usr_UART: make 生成user_program/uart用户代码,二进制文件 c. 进入user_program/usr_LEDS: make 生成user_program/leds用户代码,二进制文件 d. 运行user_program目录下的cat_sh脚本,它把mos、uart、leds三者合成文件m: ./cat_sh e. 将文件m写入nand flash地址0开始处: Jflash-s3c2410 m /t=5 f. 串口工具设置:57600 8N1,无流控 4. 实验现象: a. 如果一切正常,那么串口将不断地输出26个字母,并稍作停顿,然后继续 b. 如果您使用的LED引脚有GPB7-10,可观察到LED不断地计数 c. 在串口上还可以看到"process 0, idle\n\r"和"user program leds will sleep 0.5s" 5. 所有代码遵循GPL协议 6. 有什么问题请给我发信:dswei@ustc.edu,非常感谢 7. 完成于2005年6月20号凌晨1点28分,广西

近期下载者

相关文件


收藏者