#include #include #include #include #include #include //#define handle_error(msg) do { perror(msg); exit(EXIT_FAILURE); } while (0) #define handle_error(msg) do { perror(msg); exit(EXIT_FAILURE); } while (0) #include "core/lpc134x.h" void testByte(void* addr) { fprintf(stderr,"Testing address %x : read ",addr); fprintf(stderr,"%x, write ",(int)(*((char*)addr))); ++(*((char*)addr)); fprintf(stderr,"%x",(int)(*((char*)addr))); --(*((char*)addr)); fprintf(stderr," OK\n"); } void testMemoryHack(void* addr,long size) { fprintf(stderr,"Testing memory range %x - %x\n",addr,addr+size); for(void* p=addr; p= sb.st_size) { fprintf(stderr, "offset is past end of file\n"); exit(EXIT_FAILURE); } length = size; addr = mmap(address, length + offset - pa_offset, PROT_READ | PROT_WRITE, MAP_PRIVATE, fd, pa_offset); if (addr == MAP_FAILED) handle_error("mmap"); if(addr!=address) { fprintf(stderr, "mmap: wanted %x, got %x: ",address,addr); handle_error("mmap address discrepancy"); } // testMemoryHack(address,size); fprintf(stderr,"Range %x tested\n",addr); } void systemInit() { // setupMemoryHack((void*)0x40000000,0x1000000); // setupMemoryHack((void*)0x50000000,10*1024*1024); // setupMemoryHack((void*)0x10000000,10*1024*1024); // systick stuff unmappable setupMemoryHack((void*)0xe0000000,0x10000); #if 0 printf("Test %d\n",SSP_SSP0CR0); printf("Test2 %d\n",++SSP_SSP0CR0); printf("Test3 pre %x\n",&SYSTICK_STRELOAD); // printf("Test3 %d\n",++SYSTICK_STRELOAD); #endif }