直接烧写stepldr和eboot后,发现可以启动,但调试串口输出的都是乱码,即使修改了波特率也不行。原因是开发板使用的晶振是12MHz,而SMDK2440使用的是16.9344MHz的晶振,需要修改启动代码中PLL的配置。
1 打开S3C2440 datasheet的《CLOCK & POWER MANAGEMENT》一章,找到PLL VALUE SELECTION TABLE,需要根据此表的参数配置PLL。
2 打开PLATFORM\SMDK2440A\src\bootloader\eboot\startup.s文件,修改MPLLCON和UPLLCON:
- ;PLLVAL EQU (((0x6e << 12) + (0x3 << 4) + 0x1))
- PLLVAL EQU (((0x7f << 12) + (0x2 << 4) + 0x1))
- …
- ldr r0, = UPLLCON
- ;ldr r1, = ((0x3c << 12) + (0x4 << 4) + 0x2) ;Fin=16.9344MHz, Fout=47.98MHz
- ldr r1, = ((0x38 << 12) + (0x2 << 4) + 0x2) ; Fin=12MHz, Fout=48MHz
- str r1, [r0]
3 修改PLATFORM\SMDK2440A\Src\Inc\bsp_cfg.h头文件:
- //#define S3C2440A_FCLK 399651840 // 399.65MHz
- #define S3C2440A_FCLK 405000000 // 405MHz
4 打开PLATFORM\SMDK2440A\Src\Kernel\Oal\startup.s文件,将MPLLCON和UPLLCON修改成与步骤2一样的值。