logmgr_sample.c 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. /*
  2. * Copyright (c) 2006-2021, RT-Thread Development Team
  3. *
  4. * SPDX-License-Identifier: Apache-2.0
  5. *
  6. * Change Logs:
  7. * Date Author Notes
  8. * 2021-01-13 ChenYong first version
  9. */
  10. #include <string.h>
  11. #include <rtthread.h>
  12. #include <logmgr.h>
  13. static int logmgr_test(int argc, char **argv)
  14. {
  15. volatile int * SCB_CCR = (volatile int *) 0xE000ED14; // SCB->CCR
  16. static rt_bool_t is_init = RT_FALSE;
  17. int x, y, z;
  18. if (argc < 2)
  19. {
  20. rt_kprintf("Please input 'logmgr_test <INIT|DIVBYZERO|UNALIGNED|ASSERT>' \n");
  21. return -1;
  22. }
  23. if (!strcmp(argv[1], "INIT"))
  24. {
  25. /* logmgr initialized */
  26. logmgr_init();
  27. is_init = RT_TRUE;
  28. }
  29. else
  30. {
  31. if (is_init == RT_FALSE)
  32. {
  33. rt_kprintf("logmgr is not initialized, please input 'logmgr_test INIT'\n");
  34. return -1;
  35. }
  36. if (!strcmp(argv[1], "DIVBYZERO"))
  37. {
  38. *SCB_CCR |= (1 << 4); /* bit4: DIV_0_TRP. */
  39. x = 10;
  40. y = rt_strlen("");
  41. z = x / y;
  42. rt_kprintf("z:%d\n", z);
  43. return 0;
  44. }
  45. else if (!strcmp(argv[1], "UNALIGNED"))
  46. {
  47. volatile int * p;
  48. volatile int value;
  49. *SCB_CCR |= (1 << 3); /* bit3: UNALIGN_TRP. */
  50. p = (int *) 0x00;
  51. value = *p;
  52. rt_kprintf("addr:0x%02X value:0x%08X\r\n", (int) p, value);
  53. p = (int *) 0x04;
  54. value = *p;
  55. rt_kprintf("addr:0x%02X value:0x%08X\r\n", (int) p, value);
  56. p = (int *) 0x03;
  57. value = *p;
  58. rt_kprintf("addr:0x%02X value:0x%08X\r\n", (int) p, value);
  59. return 0;
  60. }
  61. else if (!strcmp(argv[1], "ASSERT"))
  62. {
  63. char *p = RT_NULL;
  64. RT_ASSERT(p);
  65. }
  66. }
  67. return 0;
  68. }
  69. #ifdef RT_USING_FINSH
  70. #include <finsh.h>
  71. MSH_CMD_EXPORT(logmgr_test, logmgr feature test);
  72. #endif