在使用NXP提供的LPC32XX内核时,如果使用的是非ARM9DIMM3250这块开发板,或者使用这块板时没有使用UART1作为内核解压信息输出串口时,往往编译时会提示如下警告信息:

原因是arch/arm/mach-lpc32xx/include/mach/uncompress.h这个文件的缺陷,这个文件中定义了一些内核解压时输出字符的函数。因为在LPC32XX系列中,默认是使用UART5这个普通串口作为调试串口的,而在ARM9DIMM3250这块开发板上(估计,我也没有板子)是使用UART1这个高速串口(HS_UART)HS_UART1。

由于两个串口的基地址和操作模式不一样。所以如果开发板定义不同,用于解压缩内核时输出信息的函数也不一样。所以开发者在这个文件中通过CONFIG_ARM9DIMM3250_UNCOMPRESS_ON_UART1这个宏来区分。这个宏可以在内核中通过menuconfig等方式配置。

不过在这个文件里,开发者使用的是如下的代码来判断该宏:

很明显,如果没有定义这个宏,就会提示前面说到的错误。正确的办法应该是:

这样才是实现的这个宏是否定义的判断,而不是这个宏的值是否非真来判断。