boot.cpp
上传用户:kepeng103
上传日期:2022-07-27
资源大小:2653k
文件大小:1k
源码类别:

DSP编程

开发平台:

C/C++

  1. #include "..commonhal.h"
  2. #define TEXT_SIZE 0x00008000
  3. #define TEXT_RUN 0x00000400
  4. #define TEXT_LOAD 0x90000400
  5. extern "C" void c_int00(void);
  6. void pll_init(void);
  7. void emif_init(void);
  8. void text_copy(void);
  9. #pragma CODE_SECTION(".boot_code")
  10. extern "C" void boot(void)
  11. {
  12. CSR &= (~0x00000001);
  13. IER = 0;
  14. pll_init();
  15. emif_init();
  16. text_copy();
  17. c_int00();
  18. }
  19. #pragma CODE_SECTION(".boot_code")
  20. void pll_init(void)
  21. {
  22. REG32(PLL_PLLCSR) &= (~0x00000001);
  23. asm(" NOP 9");
  24. REG32(PLL_PLLCSR) |= 0x00000008;
  25. REG32(PLL_PLLDIV0) = 0x00008001;
  26. REG32(PLL_PLLM) = 0x00000014;
  27. asm(" NOP 9");
  28. REG32(PLL_OSCDIV1) = 0x00008000;
  29. asm(" NOP 9");
  30. REG32(PLL_PLLDIV1) = 0x00008000;
  31. asm(" NOP 9");
  32. REG32(PLL_PLLCSR) &= (~0x00000008);
  33. asm(" NOP 9");
  34. REG32(PLL_PLLCSR) |= 0x00000001;
  35. }
  36. #pragma CODE_SECTION(".boot_code")
  37. void emif_init(void)
  38. {
  39. REG32(EMIF_GBLCTL) = 0x00000078;
  40. REG32(EMIF_CECTL0) = 0x20A20292;
  41. REG32(EMIF_CECTL1) = 0xffffff17;
  42. REG32(EMIF_CECTL3) = 0xffffff17;
  43. REG32(EMIF_SDTIM) = 0x00000FFF;
  44. REG32(EMIF_SDEXT) = 0x000a8529;
  45. REG32(EMIF_SDCTL) = 0x53115000;
  46. }
  47. #pragma DATA_SECTION(".boot_data")
  48. static int i;
  49. #pragma CODE_SECTION(".boot_code")
  50. void text_copy(void)
  51. {
  52. for(i=0; i<TEXT_SIZE; i+=2) {
  53. REG16(TEXT_RUN + i) = REG16(TEXT_LOAD + i);
  54. }
  55. }