Advertisement
Guest User

Untitled

a guest
Feb 17th, 2018
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.29 KB | None | 0 0
  1. #include <stdio.h>
  2.  
  3. #define MAGIC_ONE 0xFD866E14
  4. #define MAGIC_TWO 0x4556494C
  5. #define MAGIC_RESPONSE 0xDEADC0DE
  6.  
  7.  
  8. void ControlLoop(unsigned int *share)
  9. {
  10. unsigned int addr, reqResp;
  11. while (1) {
  12. reqResp = share[6];
  13. printf("Physical Address:> ");
  14. scanf("%x", &addr);
  15. share[8] = addr;
  16. share[7] = reqResp;
  17.  
  18. int iters = 0;
  19. while (iters < 500) {
  20. if (share[6] != reqResp)
  21. break;
  22. usleep(5000);
  23. iters++;
  24. }
  25.  
  26. if (iters == 500)
  27. return;
  28.  
  29. unsigned int value = share[9];
  30. printf("Value at Physical Address: %x --- %x\r\n", addr, value);
  31. }
  32. }
  33.  
  34. int main()
  35. {
  36. unsigned int *arr = (unsigned int*)aligned_alloc(4096, 16384);
  37. if ((unsigned long)arr % 4096) {
  38. printf("Failed to get 4kb alignment %x\n", (unsigned int)arr);
  39. return 0;
  40. }
  41.  
  42. arr[0] = MAGIC_ONE;
  43. arr[1] = MAGIC_TWO;
  44. arr[2] = arr[0] ^ arr[1];
  45. arr[3] = arr[2] + 64;
  46.  
  47.  
  48. printf("myBuffer: 0x%x\r\n", (unsigned int)arr);
  49. unsigned int iters = 0;
  50. while (1) {
  51. usleep(10000);
  52. iters++;
  53.  
  54. if (arr[5] == MAGIC_RESPONSE) {
  55. printf("Found response. myBuffer physical address: 0x%x\r\n", arr[4]);
  56. ControlLoop(arr);
  57. printf("Lost communicationr\r\n");
  58. break;
  59. }
  60. else if (iters % 50 == 0) {
  61. printf("No response yet\r\n");
  62. }
  63. }
  64.  
  65. arr[0] = 0;
  66.  
  67. return 0;
  68. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement