⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 armtest.cpp

📁 浙江大学的悟空嵌入式系统模拟器
💻 CPP
📖 第 1 页 / 共 4 页
字号:
//-------------------------------------------------------- 
	Core::Wukong_Get_System().load_binary((Core::Binary_Loader &)(*loader), "ARM", "swpb_1.axf");
	( (ARM::CPU_7TDMI *) Core::Wukong_Get_System().get_cpu() )->run();
	( (ARM::CPU_7TDMI *)Core::Wukong_Get_System().get_cpu() )->\
		    get_mmu().access(Memory_32Bit::MEMORY_READ,0xe0,4,buf);
	( (ARM::CPU_7TDMI *)Core::Wukong_Get_System().get_cpu() )->read_register(1,r1);

	buf0 = buf[0];
    buf1 = buf[1];
	buf2 = buf[2];
    buf3 = buf[3];
	CPPUNIT_ASSERT( buf0 == 0x01);
    CPPUNIT_ASSERT( buf1 == 0x00);
	CPPUNIT_ASSERT( buf2 == 0x00);
    CPPUNIT_ASSERT( buf3 == 0x10);
	CPPUNIT_ASSERT( r1 == 0x00000002);
//-------------------------------------------------------- 
	Core::Wukong_Get_System().load_binary((Core::Binary_Loader &)(*loader), "ARM", "swpb_2.axf");
	( (ARM::CPU_7TDMI *) Core::Wukong_Get_System().get_cpu() )->run();
	( (ARM::CPU_7TDMI *)Core::Wukong_Get_System().get_cpu() )->\
		    get_mmu().access(Memory_32Bit::MEMORY_READ,0xe0,4,buf);
	( (ARM::CPU_7TDMI *)Core::Wukong_Get_System().get_cpu() )->read_register(1,r1);

	buf0 = buf[0];
    buf1 = buf[1];
	buf2 = buf[2];
    buf3 = buf[3];
	CPPUNIT_ASSERT( buf0 == 0x02);
    CPPUNIT_ASSERT( buf1 == 0x01);
	CPPUNIT_ASSERT( buf2 == 0x00);
    CPPUNIT_ASSERT( buf3 == 0x10);
	CPPUNIT_ASSERT( r1 == 0x0);
//-------------------------------------------------------- 
	Core::Wukong_Get_System().load_binary((Core::Binary_Loader &)(*loader), "ARM", "swpb_3.axf");
	( (ARM::CPU_7TDMI *) Core::Wukong_Get_System().get_cpu() )->run();
	( (ARM::CPU_7TDMI *)Core::Wukong_Get_System().get_cpu() )->\
		    get_mmu().access(Memory_32Bit::MEMORY_READ,0xe0,4,buf);
	( (ARM::CPU_7TDMI *)Core::Wukong_Get_System().get_cpu() )->read_register(1,r1);

	buf0 = buf[0];
    buf1 = buf[1];
	buf2 = buf[2];
    buf3 = buf[3];
	CPPUNIT_ASSERT( buf0 == 0x02);
    CPPUNIT_ASSERT( buf1 == 0x00);
	CPPUNIT_ASSERT( buf2 == 0x01);
    CPPUNIT_ASSERT( buf3 == 0x10);
	CPPUNIT_ASSERT( r1 == 0x0);
//-------------------------------------------------------- 
	Core::Wukong_Get_System().load_binary((Core::Binary_Loader &)(*loader), "ARM", "swpb_4.axf");
	( (ARM::CPU_7TDMI *) Core::Wukong_Get_System().get_cpu() )->run();
	( (ARM::CPU_7TDMI *)Core::Wukong_Get_System().get_cpu() )->\
		    get_mmu().access(Memory_32Bit::MEMORY_READ,0xe0,4,buf);
	( (ARM::CPU_7TDMI *)Core::Wukong_Get_System().get_cpu() )->read_register(1,r1);

	buf0 = buf[0];
    buf1 = buf[1];
	buf2 = buf[2];
    buf3 = buf[3];
	CPPUNIT_ASSERT( buf0 == 0x02);
    CPPUNIT_ASSERT( buf1 == 0x00);
	CPPUNIT_ASSERT( buf2 == 0x00);
    CPPUNIT_ASSERT( buf3 == 0x01);
	CPPUNIT_ASSERT( r1 == 0x10);
#endif


//____________________________________________________________________________
//--------------------------------------------------------
#ifdef  WORD
	Core::Wukong_Get_System().load_binary((Core::Binary_Loader &)(*loader), "ARM", "word.axf");
	( (ARM::CPU_7TDMI *) Core::Wukong_Get_System().get_cpu() )->run();
	
	( (ARM::CPU_7TDMI *)Core::Wukong_Get_System().get_cpu() )->read_register(0,r0);
	( (ARM::CPU_7TDMI *)Core::Wukong_Get_System().get_cpu() )->read_register(1,r1);
	( (ARM::CPU_7TDMI *)Core::Wukong_Get_System().get_cpu() )->read_register(2,r2);
	( (ARM::CPU_7TDMI *)Core::Wukong_Get_System().get_cpu() )->read_register(3,r3);
	( (ARM::CPU_7TDMI *)Core::Wukong_Get_System().get_cpu() )->read_register(4,r4);
	( (ARM::CPU_7TDMI *)Core::Wukong_Get_System().get_cpu() )->read_register(5,r5);
	( (ARM::CPU_7TDMI *)Core::Wukong_Get_System().get_cpu() )->read_register(6,r6);
	( (ARM::CPU_7TDMI *)Core::Wukong_Get_System().get_cpu() )->read_register(7,r7);
	( (ARM::CPU_7TDMI *)Core::Wukong_Get_System().get_cpu() )->read_register(8,r8);
	( (ARM::CPU_7TDMI *)Core::Wukong_Get_System().get_cpu() )->read_register(9,r9);
	( (ARM::CPU_7TDMI *)Core::Wukong_Get_System().get_cpu() )->read_register(10,r10);
	( (ARM::CPU_7TDMI *)Core::Wukong_Get_System().get_cpu() )->read_register(11,r11);
	( (ARM::CPU_7TDMI *)Core::Wukong_Get_System().get_cpu() )->read_register(12,r12);
	( (ARM::CPU_7TDMI *)Core::Wukong_Get_System().get_cpu() )->read_register(13,r13);


	CPPUNIT_ASSERT( r0 == 0x8078);
	CPPUNIT_ASSERT( r1 == 0x80c8);
	CPPUNIT_ASSERT( r2 == 0x0);
	CPPUNIT_ASSERT( r3 == 0x4);
#endif

//--------------------------------------------------------
#ifdef JUMP
	Core::Wukong_Get_System().load_binary((Core::Binary_Loader &)(*loader), "ARM", "jump.axf");
	( (ARM::CPU_7TDMI *) Core::Wukong_Get_System().get_cpu() )->run();
	( (ARM::CPU_7TDMI *)Core::Wukong_Get_System().get_cpu() )->read_register(0,r0);
	( (ARM::CPU_7TDMI *)Core::Wukong_Get_System().get_cpu() )->read_register(1,r1);
	( (ARM::CPU_7TDMI *)Core::Wukong_Get_System().get_cpu() )->read_register(2,r2);
	( (ARM::CPU_7TDMI *)Core::Wukong_Get_System().get_cpu() )->read_register(3,r3);
	
	CPPUNIT_ASSERT( r0 == 0x5);
	CPPUNIT_ASSERT(r1 == 0x3);
	CPPUNIT_ASSERT( r2 == 0x2);
	CPPUNIT_ASSERT( r3 == 0x8024);
#endif

//--------------------------------------------------------
#ifdef  MAIN	
	Core::Wukong_Get_System().load_binary((Core::Binary_Loader &)(*loader), "ARM", "main.axf");
	( (ARM::CPU_7TDMI *) Core::Wukong_Get_System().get_cpu() )->run();


	( (ARM::CPU_7TDMI *)Core::Wukong_Get_System().get_cpu() )->read_register(0,r0);
	( (ARM::CPU_7TDMI *)Core::Wukong_Get_System().get_cpu() )->read_register(1,r1);
	( (ARM::CPU_7TDMI *)Core::Wukong_Get_System().get_cpu() )->read_register(2,r2);
	( (ARM::CPU_7TDMI *)Core::Wukong_Get_System().get_cpu() )->read_register(3,r3);
	( (ARM::CPU_7TDMI *)Core::Wukong_Get_System().get_cpu() )->read_register(4,r4);
	( (ARM::CPU_7TDMI *)Core::Wukong_Get_System().get_cpu() )->read_register(5,r5);
	( (ARM::CPU_7TDMI *)Core::Wukong_Get_System().get_cpu() )->read_register(6,r6);
	( (ARM::CPU_7TDMI *)Core::Wukong_Get_System().get_cpu() )->read_register(7,r7);
	( (ARM::CPU_7TDMI *)Core::Wukong_Get_System().get_cpu() )->read_register(8,r8);
	( (ARM::CPU_7TDMI *)Core::Wukong_Get_System().get_cpu() )->read_register(9,r9);
	( (ARM::CPU_7TDMI *)Core::Wukong_Get_System().get_cpu() )->read_register(10,r10);
	( (ARM::CPU_7TDMI *)Core::Wukong_Get_System().get_cpu() )->read_register(11,r11);
	( (ARM::CPU_7TDMI *)Core::Wukong_Get_System().get_cpu() )->read_register(12,r12);
	( (ARM::CPU_7TDMI *)Core::Wukong_Get_System().get_cpu() )->read_register(13,r13);

	CPPUNIT_ASSERT( r0 == 0x16);
	CPPUNIT_ASSERT( r1 == 0x83f8);
	CPPUNIT_ASSERT( r2 == 0x83fc);
	CPPUNIT_ASSERT( r3 == 0x0);
	CPPUNIT_ASSERT( r4 == 0x83bc);
	CPPUNIT_ASSERT( r5 == 0x80bc);
	CPPUNIT_ASSERT( r6 == 0x0);
	CPPUNIT_ASSERT( r7 == 0x0);
	CPPUNIT_ASSERT( r8 == 0x8098);
	CPPUNIT_ASSERT( r9 == 0x0);
	CPPUNIT_ASSERT( r10 == 0x0);
	CPPUNIT_ASSERT( r11 == 0x837f);
	CPPUNIT_ASSERT( r12 == 0x83a3);
	CPPUNIT_ASSERT( r13 == 0x83f8);
#endif

//--------------------------------------------------------
#ifdef  OS
	Core::Wukong_Get_System().load_binary((Core::Binary_Loader &)(*loader), "ARM", "linux_2.4");
	((Core::Board<Core::u32> *)(Core::Wukong_Get_System().get_board()))->prepare_rom();
	( (ARM::CPU_7TDMI *) Core::Wukong_Get_System().get_cpu() )->run();
#endif

#ifdef  ucos
	Core::Wukong_Get_System().load_binary((Core::Binary_Loader &)(*loader), "ARM", "ucos_shell.elf");
	((Core::Board<Core::u32> *)(Core::Wukong_Get_System().get_board()))->prepare_rom();
	( (ARM::CPU_7TDMI *) Core::Wukong_Get_System().get_cpu() )->run();
#endif

#ifdef  Arm_linux
	Core::Wukong_Get_System().load_binary((Core::Binary_Loader &)(*loader), "ARM", "zImage");
	((Core::Board<Core::u32> *)(Core::Wukong_Get_System().get_board()))->prepare_rom();
	( (ARM::ARM_CPU*) Core::Wukong_Get_System().get_cpu() )->run();
#endif

#ifdef TEST_ALL
	Core::Wukong_Get_System().load_binary((Core::Binary_Loader &)(*loader), "ARM", "huochai.axf");
   ( (ARM::CPU_7TDMI *) Core::Wukong_Get_System().get_cpu() )->run();

   ( (ARM::CPU_7TDMI *)Core::Wukong_Get_System().get_cpu() )->read_register(0,r0);
	( (ARM::CPU_7TDMI *)Core::Wukong_Get_System().get_cpu() )->read_register(1,r1);
	( (ARM::CPU_7TDMI *)Core::Wukong_Get_System().get_cpu() )->read_register(2,r2);
	( (ARM::CPU_7TDMI *)Core::Wukong_Get_System().get_cpu() )->read_register(3,r3);
	( (ARM::CPU_7TDMI *)Core::Wukong_Get_System().get_cpu() )->read_register(4,r4);
	( (ARM::CPU_7TDMI *)Core::Wukong_Get_System().get_cpu() )->read_register(5,r5);
	( (ARM::CPU_7TDMI *)Core::Wukong_Get_System().get_cpu() )->read_register(6,r6);
	( (ARM::CPU_7TDMI *)Core::Wukong_Get_System().get_cpu() )->read_register(7,r7);
	( (ARM::CPU_7TDMI *)Core::Wukong_Get_System().get_cpu() )->read_register(8,r8);
	( (ARM::CPU_7TDMI *)Core::Wukong_Get_System().get_cpu() )->read_register(9,r9);
	( (ARM::CPU_7TDMI *)Core::Wukong_Get_System().get_cpu() )->read_register(10,r10);
	( (ARM::CPU_7TDMI *)Core::Wukong_Get_System().get_cpu() )->read_register(11,r11);
	( (ARM::CPU_7TDMI *)Core::Wukong_Get_System().get_cpu() )->read_register(12,r12);
	( (ARM::CPU_7TDMI *)Core::Wukong_Get_System().get_cpu() )->read_register(13,r13);
	
	

	CPPUNIT_ASSERT( r0 == 0x00000016);
	CPPUNIT_ASSERT( r1 == 0x000084D0);
	CPPUNIT_ASSERT( r2 == 0x000084D4);
	CPPUNIT_ASSERT( r3 == 0);
	CPPUNIT_ASSERT( r4 == 0x8494);
	CPPUNIT_ASSERT( r5 == 0x00008188);
	CPPUNIT_ASSERT( r8 == 0x00008098);
	CPPUNIT_ASSERT( r11 == 0x0000844B);
	CPPUNIT_ASSERT( r12 == 0x0000846F);
	CPPUNIT_ASSERT( r13 == 0x000084D0);

	//memory check
	//data address :0x8488 ~ 0x84f3
    Util util;
	MMU<u32> *mem = &(( (ARM::CPU_7TDMI *) Core::Wukong_Get_System().get_cpu() )->get_mmu());
	u32 rt =	util.compare("D:/Core/Wukong/image/ARM/huochai.data",  mem,
		0x8488, 0x84f3);
	//printf("\n0x%x\n",rt);
	//std::vector<u8> buffer;
	//mem->access(Memory_Space_Base::MEMORY_READ, 34000, 1, buffer);
	
	CPPUNIT_ASSERT( rt == 0x00);
   
//	std::vector<u8> mem_data;
//	mem->access(Memory_Space_Base::MEMORY_READ, addr, size, mem_data);


#endif


}




int main(int argc, char * argv[])
{
	
	/*Core::Wukong_Get_System().load_binary((Core::Binary_Loader &)(*loader), "ARM", "mul");
	((Core::CPU_32Bit *)cpu)->run(); */
	CppUnit::TextUi::TestRunner runner;
	CppUnit::Test *suite = CppUnit::TestFactoryRegistry::getRegistry().makeTest();

	runner.addTest( suite );
	runner.setOutputter( new CppUnit::CompilerOutputter( &runner.result(),
                                                       std::cerr ) );

	runner.run();

	int i;
	std::cin>>i;

	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -