board.h 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  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-07-14 JasonHu first version
  9. */
  10. #ifndef __BOARD_H__
  11. #define __BOARD_H__
  12. #include <rtconfig.h>
  13. #include <interrupt.h>
  14. #include <cpuport.h>
  15. /* boot size */
  16. #define HW_KERNEL_BEGIN 0x00000000UL
  17. #define HW_KERNEL_SIZE (8 * 1024 * 1024)
  18. /* DMA start at 8M (DMA must lower than 16 MB address) */
  19. #define HW_DMA_BEGIN (HW_KERNEL_BEGIN + HW_KERNEL_SIZE)
  20. /* DMA 8 MB size */
  21. #define HW_DMA_SIZE (8 * 1024 * 1024)
  22. /* heap start at 16M */
  23. #define HW_HEAP_BEGIN (HW_DMA_BEGIN + HW_DMA_SIZE)
  24. /* heap 16 MB size */
  25. #define HW_HEAP_SIZE (16 * 1024 * 1024)
  26. #define HW_KERNEL_DELAY_MAP_MB 128
  27. #ifdef RT_USING_USERSPACE
  28. #define HW_HEAP_END (void*)(KERNEL_VADDR_START + HW_HEAP_BEGIN + HW_HEAP_SIZE)
  29. #define HW_PAGE_START HW_HEAP_END
  30. /* TODO: use dynamic memroy select size */
  31. #define HW_PAGE_SIZE_MIN ((64 - 32) * 1024 * 1024)
  32. #define HW_PAGE_SIZE_MAX (((1024 - HW_KERNEL_DELAY_MAP_MB) - 32) * 1024 * 1024)
  33. #define HW_PAGE_SIZE_DEF ((256 - 32) * 1024 * 1024)
  34. /* this should at end of phy memory */
  35. #define HW_PAGE_END (void*)(HW_PAGE_START + HW_PAGE_SIZE_DEF)
  36. #define HW_PHY_MEM_SIZE_MIN (HW_KERNEL_SIZE + HW_DMA_SIZE + HW_HEAP_SIZE + HW_PAGE_SIZE_MIN)
  37. #else
  38. #define HW_HEAP_END (void*)(HEAP_BEGIN + HW_HEAP_SIZE)
  39. #endif
  40. /* start at 1G, end at 4G */
  41. #define HW_USER_START 0x40000000UL
  42. #define HW_USER_END 0xFFFFF000UL
  43. #define HW_USER_SIZE (HW_USER_END - HW_USER_START)
  44. /*
  45. * Delay map, don't map when kernel do self map, only map when needed.
  46. * This area was used ioremap.
  47. */
  48. #define HW_KERNEL_DELAY_MAP_SIZE (HW_KERNEL_DELAY_MAP_MB * (1024 * 1024))
  49. #define HW_KERNEL_START (0)
  50. #define HW_KERNEL_END (HW_USER_START - HW_KERNEL_DELAY_MAP_SIZE)
  51. #define HW_KERNEL_DELAY_MAP_START HW_KERNEL_END
  52. /**
  53. * Virtual memory layout:
  54. *
  55. * +------------+ <- 0xFFFFFFFF (4GB)
  56. * | USER |
  57. * +------------+ <- 0x40000000 (1GB)
  58. * | DELAY MAP |
  59. * +------------+ <- 0x38000000 (896MB)
  60. * | PAGE |
  61. * +------------+ <- 0x02000000 (32MB)
  62. * | HEAP |
  63. * +------------+ <- 0x01000000 (16MB)
  64. * | DMA |
  65. * +------------+ <- 0x00800000 (8MB)
  66. * | KERNEL |
  67. * +------------+ <- 0x00000000
  68. */
  69. void rt_hw_board_init(void);
  70. #endif