测试用户态程序
我们提供了一些简单的测试方法,包括:
仅测试用户态程序能否运行(无 ELF、无系统调用)
利用下面的程序,我们可以在没有实现 ELF 和系统调用的情况下,测试用户态程序是否能够运行。运行前,请确保这个程序的地址空间中 0x10000000
地址(UART 的物理基地址)已经被映射到了 0x10000000
地址。和一般程序不同,这个程序是从 pc
为 0 开始执行的。
let program: [u32; 4] = [
0x10000537, // lui a0,0x10000
0x0310059b, // addiw a1,zero,0x31
0x00b50023, // sb a1,0(a0)
0xbfd5 // j 0
];
如果程序能够正常运行,那么其将会不断打印字符 1
。
测试调度是否正确(无 ELF、无系统调用)
利用下面的程序,我们可以在没有实现 ELF 和系统调用的情况下,测试调度是否正确。运行前,请确保两个程序的地址空间中 0x10000000
地址(UART 的物理基地址)已经被映射到了 0x10000000
地址。和一般程序不同,这个程序是从 pc
为 0 开始执行的。
let program1: [u32; 4] = [
0x10000537, // lui a0,0x10000
0x0310059b, // addiw a1,zero,0x31
0x00b50023, // sb a1,0(a0)
0xbfd5 // j 0
];
let program2: [u32; 4] = [
0x10000537, // lui a0,0x10000
0x0320059b, // addiw a1,zero,0x32
0x00b50023, // sb a1,0(a0)
0xbfd5 // j 0
];
如果程序能够正常运行,那么控制台将会不断交替打印字符 1
和 2
。