最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

am335x_linux-3.14.43内核移植笔记

IT圈 admin 24浏览 0评论

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 --->

发布评论

评论列表 (0)

  1. 暂无评论