2024年4月13日发(作者:长夏烟)
本文主要描述在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_AT070TN940"
"console=ttyO0,115200n80"
"mmcroot=/dev/mmcblk0p2 rw0"
"mmcrootfstype=ext4 rootwait0"
"mmcargs=setenv bootargs console=${console} noinitrd root=${mmcroot}
rootfstype=${mmcrootfstype} lcdtype=${lcdtype} consoleblank=00"
"mmcdev=" MMCDEV "0"
"loadaddr=0x810000000"
"dtbfile=0"
"bootenv=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=0x820000000"
"loadimage=load mmc ${bootpart} ${loadaddr} uImage0"
"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;"
"if run loadimage; then "
"run loaddtb;"
"bootm ${loadaddr} - ${loadaddr-dtb};"
"fi;"
"fi; 0"
#endif
以上,红色为修改部分。修改完成后,重新编译即可。
二、移植内核
下载内核源码,进入TI官网:
/sitara_linux/esd/processor-sdk/PROCESSOR-SDK-LINUX-AM335
X/latest/index_
下载文件,解压该文件后,在当前目录下生成
board-support目录,进入内核源码目录
board-support/linux-3.14.43+gitAUTOINC+875c69b2c3-g875c69b,进行以下步骤:
1、内核配置和编译
先调入TI给AM335X_EVM提供的config文件tisdk_am335x-evm_defconfig(该配置文
件与COM335X核心板最合适,也可使用omap2plus_defconfig,但需改动的配置较多),这
样很多配置就可以使用它的,然后在此基础上增加或裁减配置。
#make ARCH=arm
CROSS_COMPILE=/opt/gcc-linaro-arm-linux-gnueabihf-4.7-2013.03-20130313_linux/bin/arm-li
nux-gnueabihf- tisdk_am335x-evm_defconfig
进入menuconfig,进行配置修改:
#make ARCH=arm menuconfig
内核配置注意事项:
a、首先要修改的是串口,tisdk_am335x-evm_defconfig里的console串口(即调试串口)为
8250的扩展串口,但EVB335X-II没有该扩展串口,因此需要取消该项配置,其console串
口为CPU自带串口,配置选项为OMAP serial port:
Device Drivers --->
Character devices --->
Serial drivers --->
< > 8250/16550 and compatible serial support
.........
<*> OMAP serial port support
[*] Console on OMAP serial port
如果不做修改,系统启动后会出现can't open /dev/ttyO0: No such file or directory的提示,
无法使用调试串口。
b、修改USB配置,原配置里的USB不能使用,修改配置如下:
Device Drivers --->
2024年4月13日发(作者:长夏烟)
本文主要描述在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_AT070TN940"
"console=ttyO0,115200n80"
"mmcroot=/dev/mmcblk0p2 rw0"
"mmcrootfstype=ext4 rootwait0"
"mmcargs=setenv bootargs console=${console} noinitrd root=${mmcroot}
rootfstype=${mmcrootfstype} lcdtype=${lcdtype} consoleblank=00"
"mmcdev=" MMCDEV "0"
"loadaddr=0x810000000"
"dtbfile=0"
"bootenv=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=0x820000000"
"loadimage=load mmc ${bootpart} ${loadaddr} uImage0"
"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;"
"if run loadimage; then "
"run loaddtb;"
"bootm ${loadaddr} - ${loadaddr-dtb};"
"fi;"
"fi; 0"
#endif
以上,红色为修改部分。修改完成后,重新编译即可。
二、移植内核
下载内核源码,进入TI官网:
/sitara_linux/esd/processor-sdk/PROCESSOR-SDK-LINUX-AM335
X/latest/index_
下载文件,解压该文件后,在当前目录下生成
board-support目录,进入内核源码目录
board-support/linux-3.14.43+gitAUTOINC+875c69b2c3-g875c69b,进行以下步骤:
1、内核配置和编译
先调入TI给AM335X_EVM提供的config文件tisdk_am335x-evm_defconfig(该配置文
件与COM335X核心板最合适,也可使用omap2plus_defconfig,但需改动的配置较多),这
样很多配置就可以使用它的,然后在此基础上增加或裁减配置。
#make ARCH=arm
CROSS_COMPILE=/opt/gcc-linaro-arm-linux-gnueabihf-4.7-2013.03-20130313_linux/bin/arm-li
nux-gnueabihf- tisdk_am335x-evm_defconfig
进入menuconfig,进行配置修改:
#make ARCH=arm menuconfig
内核配置注意事项:
a、首先要修改的是串口,tisdk_am335x-evm_defconfig里的console串口(即调试串口)为
8250的扩展串口,但EVB335X-II没有该扩展串口,因此需要取消该项配置,其console串
口为CPU自带串口,配置选项为OMAP serial port:
Device Drivers --->
Character devices --->
Serial drivers --->
< > 8250/16550 and compatible serial support
.........
<*> OMAP serial port support
[*] Console on OMAP serial port
如果不做修改,系统启动后会出现can't open /dev/ttyO0: No such file or directory的提示,
无法使用调试串口。
b、修改USB配置,原配置里的USB不能使用,修改配置如下:
Device Drivers --->