printf.c 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. /*!
  2. * Copyright (C) 2013 Uwe Bonnes
  3. *
  4. * All rights reserved.
  5. *
  6. * Redistribution and use in source and binary forms, with or without
  7. * modification, are permitted provided that the following conditions
  8. * are met:
  9. *
  10. * 1. Redistributions of source code must retain the above copyright
  11. * notice, this list of conditions and the following disclaimer.
  12. * 2. Redistributions in binary form must reproduce the above copyright
  13. * notice, this list of conditions and the following disclaimer in the
  14. * documentation and/or other materials provided with the distribution.
  15. * 3. Neither the name of the copyright holders nor the names of
  16. * contributors may be used to endorse or promote products derived
  17. * from this software without specific prior written permission.
  18. *
  19. * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  20. * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  21. * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
  22. * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
  23. * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
  24. * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
  25. * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
  26. * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
  27. * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
  28. * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
  29. * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  30. * SUCH DAMAGE.
  31. *
  32. * For additional information see http://www.ethernut.de/
  33. */
  34. /*!
  35. * \brief Print IDs of devices connected to the JTAG cable
  36. *
  37. */
  38. #include <string.h>
  39. #include <stdio.h>
  40. #include <io.h>
  41. #include <dev/board.h>
  42. #include <sys/timer.h>
  43. #include <sys/thread.h>
  44. #include <sys/event.h>
  45. #include <sys/version.h>
  46. #include <sys/heap.h>
  47. #include <math.h>
  48. static char *banner = "\nNut/OS Printf Sample on " BOARDNAME
  49. " " __DATE__ " " __TIME__ "\n";
  50. int main(void)
  51. {
  52. int res;
  53. uint32_t baud = 115200;
  54. char inbuf[16];
  55. res = NutRegisterDevice(&DEV_CONSOLE, 0, 0);
  56. if (res )
  57. while(10)
  58. NutSleep(100);
  59. freopen(DEV_CONSOLE.dev_name, "w", stdout);
  60. freopen(DEV_CONSOLE.dev_name, "r", stdin);
  61. _ioctl(_fileno(stdout), UART_SETSPEED, &baud);
  62. fprintf(stdout, banner);
  63. for (;;) {
  64. uint8_t pba = 0xaa, pb5 = 0x55;
  65. uint64_t pll = 0x0123456789abcdefLL;
  66. uint64_t plli = 1000000000000LL;
  67. double pd = 3.14159;
  68. /* first the problematic cases as of SVN r5314
  69. *
  70. * - Printing of 64-bit variable and double not implemented
  71. * - va_list not cleared of full 64-bit argument
  72. * - on arm va_arg(ap, double) gets wrong data due to alignment issues
  73. */
  74. printf("\n\nNut/OS %s\n", NutVersionString());
  75. printf("%d bytes free, debug dev: %s\n", NutHeapAvailable(),
  76. DEV_CONSOLE.dev_name);
  77. printf("\nExpext pll 0x0123456789abcdef, pba 0xaa, pb5 0x55\n");
  78. printf("pll %20llx pba 0x%02x pb5 0x%02x\n", pll, pba, pb5);
  79. printf("pba 0x%02x pll%20llx pb5 0x%02x\n", pba, pll, pb5);
  80. printf("\nExpext plli 1000000000000\n");
  81. printf("plli %32lld\n", plli);
  82. printf("\nExpext pd 3.14159, pba 0xaa, pb5 0x55\n");
  83. printf("pd %f, pba 0x%02x, pb5 0x%02x\n", pd, pba, pb5);
  84. printf("pba 0x%02x, pd %f, pb5 0x%02x\n", pba, pd, pb5);
  85. puts("\nPress \"Enter\" to repeat output");
  86. fflush(stdout);
  87. fgets(inbuf, sizeof(inbuf), stdin);
  88. }
  89. return 0;
  90. }