#include #include #include "MemMapping.h" int main(int argc, char **argv) { switch(argc) { case 2: { size_t addrPhys = std::stoull(argv[1], nullptr, 0); int val; MemMapping map(O_RDONLY, addrPhys, sizeof(val), PROT_READ, MAP_PRIVATE); memcpy(&val, map.get(), sizeof(val)); std::cout << "0x" << std::hex << val << std::endl; } break; case 3: { size_t addrPhys = std::stoull(argv[1], nullptr, 0); int val = std::stoull(argv[2], nullptr, 0); MemMapping map(O_RDWR | O_SYNC, addrPhys, sizeof(val), PROT_READ | PROT_WRITE, MAP_SHARED); memcpy(map.get(), &val, sizeof(val)); } break; default: { std::cout << "Wrong argument count!" << std::endl; std::cout << "Usage:" << std::endl; std::cout << "Read 32 bits: devmem 0x12345678" << std::endl; std::cout << "Write 32 bits: devmem 0x12345678 314159" << std::endl; } break; } return 0; }