Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #define MAGIC_ONE 0xFD866E14
- #define MAGIC_TWO 0x4556494C
- #define MAGIC_RESPONSE 0xDEADC0DE
- void ControlLoop(unsigned int *share)
- {
- unsigned int addr, reqResp;
- while (1) {
- reqResp = share[6];
- printf("Physical Address:> ");
- scanf("%x", &addr);
- share[8] = addr;
- share[7] = reqResp;
- int iters = 0;
- while (iters < 500) {
- if (share[6] != reqResp)
- break;
- usleep(5000);
- iters++;
- }
- if (iters == 500)
- return;
- unsigned int value = share[9];
- printf("Value at Physical Address: %x --- %x\r\n", addr, value);
- }
- }
- int main()
- {
- unsigned int *arr = (unsigned int*)aligned_alloc(4096, 16384);
- if ((unsigned long)arr % 4096) {
- printf("Failed to get 4kb alignment %x\n", (unsigned int)arr);
- return 0;
- }
- arr[0] = MAGIC_ONE;
- arr[1] = MAGIC_TWO;
- arr[2] = arr[0] ^ arr[1];
- arr[3] = arr[2] + 64;
- printf("myBuffer: 0x%x\r\n", (unsigned int)arr);
- unsigned int iters = 0;
- while (1) {
- usleep(10000);
- iters++;
- if (arr[5] == MAGIC_RESPONSE) {
- printf("Found response. myBuffer physical address: 0x%x\r\n", arr[4]);
- ControlLoop(arr);
- printf("Lost communicationr\r\n");
- break;
- }
- else if (iters % 50 == 0) {
- printf("No response yet\r\n");
- }
- }
- arr[0] = 0;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement