本文主要描述在EVB335X-II以Device Tree的方式移植新TI官网AM335X系列最新的linux-3.14.43版本内核以及移植Debian文件系统的过程及遇到的一些问题。整个Device Tree牵涉面比较广,即增加了新的用于描述设备硬件信息的文本格式(即.dts文件),又增加
了编译这一文本的工具,同时Bootloader也需要支持将编译后的Device Tree传递给Linux
内核。以下是修改步骤:
一、修改uboot,支持Device Tree
EVB335X-II在linux-3.2版本内核移植的时候已经有uboot,因此只需在该uboot上增加Device Tree支持即可,以下是修改步骤:
1、修改include/configs/com335x.h文件,增加支持DT的宏定义:
/* Flattened Device Tree */
#define CONFIG_OF_LIBFDT
2、修改uboot启动参数,增加dtb文件的加载和启动(由于目前只是移植EMMC版本的EVB335X-II,因此只需修改EMMC的启动参数即可,大概在405行),修改如下:
#elif defined(CONFIG_EMMC_BOOT)
#define CONFIG_BOOTCOMMAND \
"run mmcboot;"
#define CONFIG_EXTRA_ENV_SETTINGS \
"lcdtype=AUO_AT070TN94\0" \
"console=ttyO0,115200n8\0" \
"mmcroot=/dev/mmcblk0p2 rw\0" \
"mmcrootfstype=ext4 rootwait\0" \
"mmcargs=setenv bootargs console=${console} noinitrd root=${mmcroot} rootfstype=${mmcrootfstype} lcdtype=${lcdtype} consoleblank=0\0" \
"mmcdev=" MMCDEV "\0" \
"loadaddr=0x81000000\0" \
"dtbfile=evb335x-ii-emmc.dtb\0" \
"bootenv=uEnv.txt\0" \
"bootpart=" BOOTPART "\0" \
"loadbootenv=load mmc ${mmcdev} ${loadaddr} ${bootenv}\0" \
"importbootenv=echo Importing environment from mmc ...; " \
"env import -t $loadaddr ${filesize}\0" \
"loadaddr-dtb=0x82000000\0" \
"loadimage=load mmc ${bootpart} ${loadaddr} uImage\0" \
"loaddtb=load mmc ${bootpart} ${loadaddr-dtb} ${dtbfile}\0" \
"mmcboot=mmc dev ${mmcdev}; " \
"if mmc rescan; then " \
"echo SD/MMC found on device ${mmcdev};" \
"if run loadbootenv; then " \
"echo Loaded environment from ${bootenv};" \
"run importbootenv;" \
"fi;" \
"run mmcargs;" \