移植u-boot-2015.07-rc3之修改代码支持串口(三)

时间:2022-03-05 09:43:39

串口信息出现乱码第一想到的原因就是波特率是否设置正确,所以先到串口初始化函数中去看看,在新版本的uboot中,串口初始化工作在board_init_f函数中调用serial_init函数完成,现在来演示一下串口乱码原因的追踪过程:移植u-boot-2015.07-rc3之修改代码支持串口(三)

整个追踪过程依赖sourceInsight的追踪功能,追踪到get_HCLK函数中时看到了#ifdef CONFIG_S3C2440,关于S3C2440的宏定义,而在smdk2440.h文件中没有定义这个宏,所以出现乱码,所以在smdk2440.h文件中增加CONFIG_S3C2440,把原来的CONFIG_S3C2410删掉。

include/configs/smdk2440.h/smdk2440.h修改如下:                                                                                                                                                                                              

20 #define CONFIG_S3C24X0          /* This is a SAMSUNG S3C24x0-type SoC */

 21 /*#define CONFIG_S3C2410*/              /* specifically a SAMSUNG S3C2410 SoC */

 22 /*#define CONFIG_SMDK2410*/             /* on a SAMSUNG SMDK2410 Board */

 23 #define CONFIG_S3C2440

 24 #define CONFIG_SMDK2440

 25 #define CONFIG_SYS_TEXT_BASE    0x30008000

 

这里需要注意一点,在修改smdk2440.h文件的时候,如果要注释一句话必须使用/**/,否者就直接删掉。如果使用//注释的话编译会出现这个错误:

arm-linux-ld:u-boot.lds:1: ignoring invalid character `#' in expression

arm-linux-ld:u-boot.lds:1: syntax error

make: *** [u-boot] Error 1

 

 

 

另外,在start.S中关中断时使用的宏开关CONFIG_S3C2410,现在CONFIG_S3C2410没有了,但也要把中断关掉,所以在start.S中做如下修改:                            

78 # if defined(CONFIG_S3C2410)

 79         ldr     r1, =0x3ff

 80         ldr     r0, =INTSUBMSK

 81         str     r1, [r0]

 82 # endif

 83

 84 # if defined(CONFIG_S3C2440)

 85         ldr     r1, =0x3ff

 86         ldr     r0, =INTSUBMSK

 87         str     r1, [r0]

 88 # endif

 

 

做了上述修改后直接make编译,编译通过。把u-boot.bin和u-boot-spl.bin再次下载到NandFlash中,选择NandFlash启动,这一次就可以看到让人兴奋的u-boot界面了:



移植u-boot-2015.07-rc3之修改代码支持串口(三)


在上面的串口信息中我们可以发现u-boot至少还有4个地方还需要继续修改的----NorFlash支持、NandFlash支持、环境变量设置(u-boot在初始化的时候读取不到环境变量就会报警告说bad CRC)、DM9000支持。

下一讲修改uboot支持NorFlash。