飞凌
OK335xd-linux-4.9.41 移植
ti
官方目前提供的内核最新是
4.9.41,
内核源码有三种方式获得
,ti
内核独立包
,sdk
包,
ti
的
arago-yacto,
这里内核采用
ti
的
sdk
包
,
文件系统采用
ti
的
arago-yocto
。
1.
获取
ti-processor-sdk-linux-am335x-evm-04.01.00.06-Linux-x86-Install.bin,
解压到
/opt/目录,
下载
gcc-linaro-6.2.1-2016.11-x86_64_arm-linux-gnueabihf.tar.xz也解压到
/opt/
2.cd /opt/ti-processor-sdk-linux-am335x-evm-04.01.00.06/board-support/u-boot-2017.01+gitAUTOINC+590c7d7fe1-g590c7d7fe1/
3.
下载
RatioSeed_AM335x_boards.xls
如图配置
4.
下载
AM335x_DDR_register_calc_tool.xls
下载
AM335x_forSlaveRatio.gel
修改以下四行
#defineALLOPP_DDR3_SDRAM_TIMING1 xxxxxxxxxx//Registers tab: SDRAM_TIM_1
#defineALLOPP_DDR3_SDRAM_TIMING2 xxxxxxxxxx//Registers tab: SDRAM_TIM_2
#defineALLOPP_DDR3_SDRAM_TIMING3 xxxxxxxxxx//Registers tab: SDRAM_TIM_3
#defineALLOPP_DDR3_SDRAM_CONFIG xxxxxxxxxx //Registers tab:
其中SDRAM_CONFIG字段参考AM335X用户手册与ddr用户手册配置
利用以上数据及配置表的配置数据使用运行于板子的时序校正算法校正参数,参考http://www.deyisupport.com/question_answer/dsp_arm/sitara_arm/f/25/t/53263.aspx
结果参数
RD_DQS_RATIO_VAL
FIFO_WE_SLAVE_RATIO
WR_DQS_SLAVE_RATIO
PHY_CTRL_SLAVE_RATIO
获取的结果值配置uboot代码相关定义 ./am335x_evm/include/asm/arch/ddr_defs.h定义文件(相对于uboot根目录) 5.$vi build.sh #!/bin/bash export PATH=/opt/TI-AM335X/gcc-linaro-6.2.1-2016.11-x86_64_arm-linux-gnueabihf/bin:$PATH make CROSS_COMPILE=arm-linux-gnueabihf- distclean rm -rf ./am335x_evm make CROSS_COMPILE=arm-linux-gnueabihf- O=am335x_evm am335x_evm_defconfig make CROSS_COMPILE=arm-linux-gnueabihf- O=am335x_evm 6.$chmod +x build.sh 7.$./build.sh 8.插入pc一个不小于4G的sd卡 9.$/opt/ti-processor-sdk-linux-am335x-evm-04.01.00.06/bin/create-sdcard.sh 10.根据提示,格式化所插sd卡,创建启动分区环境。 11.把uboou目录下am335x_evm/MLO am335x_evm/u-boot.img两个文件拷贝到sd卡boot目录 12.$cd /opt/ti-processor-sdk-linux-am335x-evm-04.01.00.06/board-support/linux-4.9.41+gitAUTOINC+e3a80a1c5c-ge3a80a1c5c (进入linux目录) 13.$vi arch/arm/configs/tisdk_am335x-evm_defconfig 添加CONFIG_TOUCHSCREEN_GOODIX=y 14.$vi arch/arm/boot/dts/am335x-evm.dts 在i2c0节点下添加touch(触摸驱动配置节点) &i2c0 { pinctrl-names = "default"; pinctrl-0 = <&i2c0_pins>; status = "okay"; clock-frequency = <400000>; tps: tps@2d { reg = <0x2d>; }; touch: gt911@14 { compatible = "goodix,gt911"; pinctrl-names = "default"; pinctrl-0 = <>911_pins>; reg = <0x14>; interrupt-parent = <&gpio1>; interrupts = <31 0>; irq-gpios = <&gpio1 31 0>; reset-gpios = <&gpio3 15 0>; }; }; 在根节点下添加mmc电源配置节点 mmc_fixed: fixedregulator3 { compatible = "regulator-fixed"; regulator-name = "mmc_vbus"; regulator-min-microvolt = <3300000>; regulator-max-microvolt = <3300000>; regulator-boot-on; /* regulator-always-on; */ }; 在mmc1节点下修改 vmmc-supply的值 &mmc1 { status = "okay"; vmmc-supply = <&mmc_fixed>; /* ti,dual-volt; */ bus-width = <4>; pinctrl-names = "default"; pinctrl-0 = <&mmc1_pins>; cd-gpios = <&gpio0 6 GPIO_ACTIVE_LOW>; }; 15.$vi build.sh 输入以下内容 export PATH=/opt/TI-AM335X/gcc-linaro-6.2.1-2016.11-x86_64_arm-linux-gnueabihf/bin:$PATH make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- distclean make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- tisdk_am335x-evm_defconfig make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- zImage make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- am335x-evm.dtb 16.把kernel目录下的arch/arm/boot/dts/am335x-evm.dtb 和arch/arm/boot/zImage两个文件拷贝到sd卡的rootfs/boot目录 根文件系统: 17. $cd /opt/ $ git clone git://arago-project.org/git/projects/oe-layersetup.git tisdk $ cd tisdk $ ./oe-layertool-setup.sh -f configs/processor-sdk/processor-sdk-04.01.00.06-config.txt $ cd build $ . conf/setenv $ export PATH=/opt/gcc-linaro-6.2.1-2016.11-x86_64_arm-linux-gnueabihf/bin:$PATH $ MACHINE=am335x-evm bitbake tisdk-rootfs-image 生成的文件系统解压至sd卡的rootfs目录即可。 18.在build目录下找到 tisdk-rootfs-image.bb文件后可以编辑增删里面的软件包,每个软件包对应的.bb文件又包含一系列软件组件,可以编辑增删对应的软件组件,一个组件对另外组件的依赖系统会自动处理并添加进生成的根文件系统。 提示: 如果在编译某些包的时候出现以下错误: cp: cannot stat '/opt/TI-AM335X/gcc-linaro-6.2.1-2016.11-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/bin/{ld*,objcopy,strip,nm,ranlib,as,ar,objdump}': No such file or directory 这种报错一般是因为yocto自动生成的脚本使用了bash的大括号扩展语法,而脚本本身却使用的/bin/sh的解释器,无法解析扩展语法,可以把/bin/sh备份后,对/bin/bash建立一个软链接放到/bin/sh