Uboot移植(smart210)

淩亂°似流年 2022-06-16 01:17 446阅读 0赞
  1. 初步移植:在基本的基础之上移植
  2. 1.#define IS_SAMSUNG_TYPE(type, id) \
  3. static inline int cpu_is_##type(void) \
  4. { \
  5. return s5p_cpu_id == id ? 1 : 0; \
  6. }
  7. IS_SAMSUNG_TYPE(s5pc100, 0xc100)
  8. IS_SAMSUNG_TYPE(s5pc110, 0xc110)
  9. 转换成下面的:
  10. #define IS_SAMSUNG_TYPE(s5pc100, 0xc100) \ static inline int cpu_is_s5pc100(void) \ { \ return s5p_cpu_id == 0xc100 ? 1 : 0; \ }
  11. 2.更改文件arch/arm/include/asm/arch-s5pc1XX/cpu.h
  12. arch\arm\cpu\armv7\s5p-common\cpu_info.c
  13. static inline int cpu_is_s5pc110(void) \
  14. {
  15. return 1 ;
  16. }
  17. 这个比较除暴,,,下面调用了这个宏怎么办?
  18. 最后推翻上面的改动部分,全错 直接在那个函数cpu_info.c里面添加
  19. int print_cpuinfo(void)
  20. {
  21. char buf[32];
  22. /*printf("CPU:\t%s%X@%sMHz\n", s5p_get_cpu_name(), s5p_cpu_id, strmhz(buf, get_arm_clk()));*/
  23. //printf("\nCPU: S5PV210@%ldMHz(%s)\n", get_ARMCLK()/1000000, ((result_set == 1) ? "OK" : "FAIL"));
  24. printf("\nCPU: S5PV210@%sMHz(OK!)\n", strmhz(buf, get_arm_clk()));
  25. return 0;
  26. }
  27. 2.修改S5PV210@400MHz(OK!)中的400的问题,去跟中函数,最后会到
  28. cpu.h
  29. samsung_get_base_clock
  30. return S5PC110_CLOCK_BASE;
  31. cpu.h中照这个宏定义,找aPLL计算公式也是对的
  32. #define APLL_LOCKTIME_VAL 0x2cf
  33. #define CLK_DIV0_MASK 0x7fffffff
  34. #define APLL_MDIV 0x7d
  35. #define APLL_PDIV 0x3
  36. #define APLL_SDIV 0x1
  37. #define APLL_LOCKTIME_VAL 0x2cf
  38. #define AFC_ON 0x00000000
  39. #define AFC_OFF 0x10000010
  40. #define EPLL_MDIV 0x60
  41. #define EPLL_PDIV 0x6
  42. #define EPLL_SDIV 0x2
  43. #define VPLL_MDIV 0x6c
  44. #define VPLL_PDIV 0x6
  45. #define VPLL_SDIV 0x3
  46. /* CLK_DIV0 */
  47. #define APLL_RATIO 0
  48. #define A2M_RATIO 4
  49. #define HCLK_MSYS_RATIO 8
  50. #define PCLK_MSYS_RATIO 12
  51. #define HCLK_DSYS_RATIO 16
  52. #define PCLK_DSYS_RATIO 20
  53. #define HCLK_PSYS_RATIO 24
  54. #define PCLK_PSYS_RATIO 28
  55. #define set_pll(mdiv, pdiv, sdiv) (1<<31 | mdiv<<16 | pdiv<<8 | sdiv)
  56. #define APLL_VAL set_pll(APLL_MDIV,APLL_PDIV,APLL_SDIV)
  57. #define MPLL_VAL set_pll(MPLL_MDIV,MPLL_PDIV,MPLL_SDIV)
  58. #define EPLL_VAL set_pll(EPLL_MDIV,EPLL_PDIV,EPLL_SDIV)
  59. #define VPLL_VAL set_pll(VPLL_MDIV,VPLL_PDIV,VPLL_SDIV)
  60. #define CLK_DIV0_VAL ((0<<APLL_RATIO)|(4<<A2M_RATIO)|(4<<HCLK_MSYS_RATIO)|(1<<PCLK_MSYS_RATIO)\ |(3<<HCLK_DSYS_RATIO)|(1<<PCLK_DSYS_RATIO)|(4<<HCLK_PSYS_RATIO)|(1<<PCLK_PSYS_RATIO))
  61. #define CLK_DIV1_VAL ((1<<16)|(1<<12)|(1<<8)|(1<<4))
  62. #define CLK_DIV2_VAL (1<<0)
  63. /****for x210zhu****************/
  64. #define CONFIG_NR_DRAM_BANKS 2
  65. CONFIG_SYS_SDRAM_BASE 0x30000000
  66. #define PHYS_SDRAM_1 CONFIG_SYS_SDRAM_BASE /* OneDRAM Bank #0 */
  67. #define PHYS_SDRAM_1_SIZE (256 << 20) /* 80 MB in Bank #0 */
  68. #define PHYS_SDRAM_2 0x40000000 /* mDDR DMC1 Bank #1 */
  69. #define PHYS_SDRAM_2_SIZE (256 << 20) /* 256 MB in Bank #1 */
  70. //#define PHYS_SDRAM_3 0x50000000 /* mDDR DMC2 Bank #2 */
  71. //#define PHYS_SDRAM_3_SIZE (128 << 20)
  72. /****board_init_f***/机器码问题
  73. #ifdef CONFIG_MACH_TYPE
  74. gd->bd->bi_arch_number = CONFIG_MACH_TYPE; /* board id for Linux */
  75. #endif
  76. 后面又重新定义了,(这是新版本中的一点)
  77. int board_init(void)
  78. {
  79. /* Set Initial global variables */
  80. s5pc110_gpio = (struct s5pc110_gpio *)S5PC110_GPIO_BASE;
  81. gd->bd->bi_arch_number = MACH_TYPE_GONI;
  82. gd->bd->bi_boot_params = PHYS_SDRAM_1 + 0x100;
  83. return 0;
  84. }
  85. 可见文件集中::::
  86. #define MACH_TYPE_TNETV107X 2418
  87. #define MACH_TYPE_SMDKV210 2456/****/
  88. #define MACH_TYPE_OMAP_ZOOM3 2464
  89. #define MACH_TYPE_OMAP_3630SDP 2465
  90. 在上诉文件中,改即可
  91. gd->bd->bi_arch_number = MACH_TYPE_SMDKV210;
  92. MMC 卡的编号问题一定注意
  93. CONFIG_SYS_MMC_ENV_DEV = 0代表(内部)flash =1代表sd
  94. int saveenv(void)
  95. {
  96. ALLOC_CACHE_ALIGN_BUFFER(env_t, env_new, 1);
  97. ssize_t len;
  98. char *res;
  99. struct mmc *mmc = find_mmc_device(CONFIG_SYS_MMC_ENV_DEV);
  100. u32 offset;
  101. int ret, copy = 0;
  102. if (init_mmc_for_env(mmc))
  103. return 1;
  104. /********************************/
  105. /***s5p_goni.h中添加代码即可*修改相应的MAKE file*/
  106. #define CONFIG_ENV_SIZE CFG_ENV_SIZE /* 256 KiB, 0x40000 */
  107. #define CONFIG_ENV_IS_IN_MMC 1
  108. #define CONFIG_SYS_MMC_ENV_DEV 0
  109. /***include/common 中的MAke file 注释掉COBJS-$(CONFIG_ENV_IS_IN_MMC) += env_mmc.o COBJS-$(CONFIG_ENV_IS_IN_FAT) += env_fat.o COBJS-$(CONFIG_ENV_IS_IN_NAND) += env_nand.o COBJS-$(CONFIG_ENV_IS_IN_NVRAM) += env_nvram.o #COBJS-$(CONFIG_ENV_IS_IN_ONENAND) += env_onenand.o COBJS-$(CONFIG_ENV_IS_IN_SPI_FLASH) += env_sf.o 还有其他的MAkefile 修改见笔记

发表评论

表情:
评论列表 (有 0 条评论,446人围观)

还没有评论,来说两句吧...

相关阅读