test.c 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <unistd.h>
  4. #include <sys/io.h>
  5. #include <stdint.h>
  6. #include <string.h>
  7. #include <unistd.h>
  8. int main(void)
  9. {
  10. unsigned char val;
  11. if (ioperm(0x80, 1, 1) < 0) { //申请 0x80 端口的访问权限
  12. perror("Failed to request I/O port permission");
  13. return 1;
  14. }
  15. /*
  16. outb(0x00,0xA45);
  17. outb(inb(0xA46) | 0x40, 0xA46);//update VBAT
  18. outb(0x00,0xEB);
  19. outb(0x00,0xEB);
  20. outb(0x00,0xEB);
  21. outb(0x28,0xA45);
  22. val = inb(0xA46);//read VBAT
  23. */
  24. outb(0x11, 0x80); //用户空间也有 outb 函数(需链接 libx86)
  25. sleep(1);
  26. outb(0x22, 0x80); //用户空间也有 outb 函数(需链接 libx86)
  27. sleep(1);
  28. outb(0x33, 0x80); //用户空间也有 outb 函数(需链接 libx86)
  29. sleep(1);
  30. outb(0x44, 0x80); //用户空间也有 outb 函数(需链接 libx86)
  31. sleep(1);
  32. outb(0x55, 0x80); //用户空间也有 outb 函数(需链接 libx86)
  33. sleep(1);
  34. outb(0x66, 0x80); //用户空间也有 outb 函数(需链接 libx86)
  35. sleep(1);
  36. outb(0x77, 0x80); //用户空间也有 outb 函数(需链接 libx86)
  37. sleep(1);
  38. outb(0x00, 0x80); //用户空间也有 outb 函数(需链接 libx86)
  39. sleep(1);
  40. outb(0x88, 0x80); //用户空间也有 outb 函数(需链接 libx86)
  41. ioperm(0x80,1,0); //释放权限
  42. //printf("VBAT value = %dmv\n", val * 2 * 11);
  43. return 0;
  44. }