kitchen_sink.c 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. /*
  2. * Copyright (c) 2020 Raspberry Pi (Trading) Ltd.
  3. *
  4. * SPDX-License-Identifier: BSD-3-Clause
  5. */
  6. #include <stdio.h>
  7. // Include all headers to check for compiler warnings
  8. #include "hardware/adc.h"
  9. #include "hardware/claim.h"
  10. #include "hardware/clocks.h"
  11. #include "hardware/divider.h"
  12. #include "hardware/dma.h"
  13. #include "hardware/exception.h"
  14. #include "hardware/flash.h"
  15. #include "hardware/gpio.h"
  16. #include "hardware/i2c.h"
  17. #include "hardware/interp.h"
  18. #include "hardware/irq.h"
  19. #include "hardware/pio.h"
  20. #include "hardware/pio_instructions.h"
  21. #include "hardware/pll.h"
  22. #include "hardware/pwm.h"
  23. #include "hardware/resets.h"
  24. #include "hardware/rtc.h"
  25. #include "hardware/spi.h"
  26. #include "hardware/sync.h"
  27. #include "hardware/timer.h"
  28. #include "hardware/uart.h"
  29. #include "hardware/vreg.h"
  30. #include "hardware/watchdog.h"
  31. #include "hardware/xosc.h"
  32. #include "pico/binary_info.h"
  33. #include "pico/bit_ops.h"
  34. #include "pico/bootrom.h"
  35. #include "pico/divider.h"
  36. #include "pico/double.h"
  37. #include "pico/fix/rp2040_usb_device_enumeration.h"
  38. #include "pico/float.h"
  39. #include "pico/int64_ops.h"
  40. #include "pico/malloc.h"
  41. #include "pico/multicore.h"
  42. #include "pico/printf.h"
  43. #include "pico/runtime.h"
  44. #include "pico/stdio.h"
  45. #include "pico/stdlib.h"
  46. #include "pico/sync.h"
  47. #include "pico/time.h"
  48. #include "pico/unique_id.h"
  49. #include "hardware/structs/adc.h"
  50. #include "hardware/structs/bus_ctrl.h"
  51. #include "hardware/structs/clocks.h"
  52. #include "hardware/structs/dma.h"
  53. #include "hardware/structs/i2c.h"
  54. #include "hardware/structs/interp.h"
  55. #include "hardware/structs/iobank0.h"
  56. #include "hardware/structs/ioqspi.h"
  57. #include "hardware/structs/mpu.h"
  58. #include "hardware/structs/padsbank0.h"
  59. #include "hardware/structs/pads_qspi.h"
  60. #include "hardware/structs/pio.h"
  61. #include "hardware/structs/pll.h"
  62. #include "hardware/structs/psm.h"
  63. #include "hardware/structs/pwm.h"
  64. #include "hardware/structs/resets.h"
  65. #include "hardware/structs/rosc.h"
  66. #include "hardware/structs/rtc.h"
  67. #include "hardware/structs/scb.h"
  68. #include "hardware/structs/sio.h"
  69. #include "hardware/structs/spi.h"
  70. #include "hardware/structs/ssi.h"
  71. #include "hardware/structs/syscfg.h"
  72. #include "hardware/structs/systick.h"
  73. #include "hardware/structs/timer.h"
  74. #include "hardware/structs/uart.h"
  75. #include "hardware/structs/usb.h"
  76. #include "hardware/structs/vreg_and_chip_reset.h"
  77. #include "hardware/structs/watchdog.h"
  78. #include "hardware/structs/xip_ctrl.h"
  79. #include "hardware/structs/xosc.h"
  80. bi_decl(bi_block_device(
  81. BINARY_INFO_MAKE_TAG('K', 'S'),
  82. "foo",
  83. 0x80000,
  84. 0x40000,
  85. NULL,
  86. BINARY_INFO_BLOCK_DEV_FLAG_READ | BINARY_INFO_BLOCK_DEV_FLAG_WRITE |
  87. BINARY_INFO_BLOCK_DEV_FLAG_PT_UNKNOWN));
  88. //#pragma GCC push_options
  89. //#pragma GCC optimize ("O3")
  90. uint32_t *foo = (uint32_t *) 200;
  91. uint32_t dma_to = 0;
  92. uint32_t dma_from = 0xaaaa5555;
  93. void __noinline spiggle(void) {
  94. dma_channel_config c = dma_channel_get_default_config(1);
  95. channel_config_set_bswap(&c, true);
  96. channel_config_set_transfer_data_size(&c, DMA_SIZE_16);
  97. channel_config_set_ring(&c, true, 13);
  98. dma_channel_set_config(1, &c, false);
  99. dma_channel_transfer_from_buffer_now(1, foo, 23);
  100. }
  101. __force_inline int something_inlined(int x) {
  102. return x * 2;
  103. }
  104. int main(void) {
  105. spiggle();
  106. stdio_init_all();
  107. printf("HI %d\n", something_inlined((int)time_us_32()));
  108. puts("Hello Everything!");
  109. puts("Hello Everything2!");
  110. // this should compile as we are Cortex M0+
  111. __asm volatile("SVC #3");
  112. }