当前位置:文档之家› am335x_linux-3.14.43内核移植笔记

am335x_linux-3.14.43内核移植笔记

本文主要描述在EVB335X-II以Device Tree的方式移植新TI官网AM335X系列最新的linux-3.14.43版本内核以及移植Debian文件系统的过程及遇到的一些问题。

整个Device Tree牵涉面比较广,即增加了新的用于描述设备硬件信息的文本格式(即.dts文件),又增加了编译这一文本的工具,同时Bootloader也需要支持将编译后的Device Tree传递给Linux内核。

以下是修改步骤:一、修改uboot,支持Device TreeEVB335X-II在linux-3.2版本内核移植的时候已经有uboot,因此只需在该uboot上增加Device Tree支持即可,以下是修改步骤:1、修改include/configs/com335x.h文件,增加支持DT的宏定义:/* Flattened Device Tree */#define CONFIG_OF_LIBFDT2、修改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;" \"if run loadimage; then " \"run loaddtb;" \"bootm ${loadaddr} - ${loadaddr-dtb};" \"fi;" \"fi; \0"#endif以上,红色为修改部分。

修改完成后,重新编译即可。

二、移植内核下载内核源码,进入TI官网:/sitara_linux/esd/processor-sdk/PROCESSOR-SDK-LINUX-AM335X/latest/index_FDS.html下载am335x-evm-sdk-src-01.00.00.03.tar.gz文件,解压该文件后,在当前目录下生成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-linux-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 --->[*] USB support --->[*] OTG support.............<*> Inventra Highspeed Dual Role Controller (TI, ADI, ...)MUSB Mode Selection (Dual Role mode) ---><*> Platform Glue Layer (TI DSPS platforms) --->MUSB DMA mode (TI CPPI 4.1 (AM335x)) --->需要注意的是,Platform Glue Layer必须选为TI DSPS platforms,否则USB无法使用。

c、修改声卡配置,原配置为模块,现将其配置进内核:Device Drivers ---><*> Sound card support ---><*> Advanced Linux Sound Architecture ---><*> ALSA for SoC audio support ---><*> SoC Audio for Texas Instruments chips using eDMA(AM33XX/43XX)-*- Multichannel Audio Serial Port (McASP) support<*> SoC Audio for the AM33XX chip based boards-*- SoC Audio for the Texas Instruments OMAP chipsCODEC drivers --->-*- Texas Instruments TLV320AIC31xx CODECs-*- Texas Instruments TLV320AIC3x CODECs其它功能的具体配置这里不一一表述,具体参考evb335x-ii-demo_config。

编译内核:#make ARCH=arm CROSS_COMPILE=/opt/gcc-linaro-arm-linux-gnueabihf-4.7-2013.03-20130313_linux/bin/arm-linux-gnueabihf- LOADADDR=0x80008000 uImage注意:加上LOADADDR参数,否则会出以下错误:multiple (or no) load addresses:This is incompatible with uImagesSpecify LOADADDR on the commandline to build an uImage2、dts文件的制作和编译dts文件存放位置为arch/arm/boot/dts/目录。

由于evb335x-ii的设计与evm335x接近,因此可以通过修改am335x-evm.dts文件来制作适合evb335x-ii的dts文件。

具体修改请参考arch/arm/boot/dts/evb335x-ii-emmc.dts文件。

编译dts文件:#make ARCH=arm CROSS_COMPILE=/opt/gcc-linaro-arm-linux-gnueabihf-4.7-2013.03-20130313_linux/bin/arm-linux-gnueabihf-evb335x-ii-emmc.dtb编译完成后,在arch/arm/boot/dts/目录下生成evb335x-ii-emmc.dtb文件。

相关主题