300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > TI OMAPL138E Linux移植 (Davinci) (资源获取+从串口启动UBoot+从网络启动Linux与文件系统)

TI OMAPL138E Linux移植 (Davinci) (资源获取+从串口启动UBoot+从网络启动Linux与文件系统)

时间:2020-06-24 13:41:53

相关推荐

TI OMAPL138E Linux移植 (Davinci) (资源获取+从串口启动UBoot+从网络启动Linux与文件系统)

Date: -02-08

【1、从实际硬件上获取主芯片型号为TI的OMAPL138E 】,所属系列为OMAPL1,编译默认配置为davinci或者da850。

《以下内容失效》《《《2、登陆TI官方WiKi网站,在网页下方找到General Information主条目,在其中找到Getting Started Guides一项。

3、在2步骤中找到Before the Getting Started Guide一项,点击进去,此篇文档讲述了建立虚拟机和安装GNU/Linux操作系统及配置部分环境。

4、在2步骤中找到Getting Started Guide for OMAP-L1一项,点击进去,此篇文档讲述了开发板和SDK软件的一些知识,具体的网址如下:http://processors./index.php/Getting_Started_Guide_for_OMAP-L1。

5、在4步骤中找到Running PSP Components一项,点击进去,此篇文档讲述了编译U-Boot、Linux内核和文件系统的相关知识,PSP是Linux Platform Support Package的简称。

6、在5步骤中可以下载DaVinci-PSP-SDK-03.20.00.08.tgz压缩包,下载地址是http://software-/dsps/dsps_public_sw/sdo_tii/psp/LinuxPSP/DaVinci_03_20/index.html,该压缩包包含了DaVinci发行版的Linux内核、U-Boot、User Boot Loader (UBL)和Flash writers;CodeSourcery的Sourcery G++ Lite q1-203 for ARM GNU/Linux交叉编译工具需要单独下载。

7、下载交叉编译工具,可以去官网/sgpp/lite/arm/portal/release858注册之后再下载arm-q1-203-arm-none-linux-gnueabi.bin(非常麻烦),安装步骤如文档http://processors./index.php/GSG:_Installing_the_Software_for_OMAP-L1#Downloading_and_installing_the_Code_Sourcery_tools所示;或者直接百度下载arm-q1-203-arm-none-linux-gnueabi.bin;或者去TI官网http://software-/processor-sdk-linux/esd/OMAPL138/latest/index_FDS.html下载最新版的ti-processor-sdk-linux-omapl138-lcdk-04.02.00.09-Linux-x86-Install.bin。

》》》《以上内容失效》

【8、下载交叉编译工具 】ti-processor-sdk-linux-omapl138-lcdk-04.02.00.09-Linux-x86-Install.bin,包含了6步骤中的所有东西外加交叉编译工具,/tools-software/processor-sw.html中介绍了最新开发工具和源码,该文档中的内容与6、7步骤中内容目的相同,但是是最新版本,我们工作中以8步骤的工具与源码为准。

【9、8步骤的内容 】可以从TI官网进入,一步一步找到:进入/,点击中间的Tools&software,点击下面的Software&development tools,点击左侧的Processors,跳转到Processor SDK界面,标题为Scalable Linux, TI-RTOS and Android solutions for TI processors,点击Downloads and technical details by platform中的OMAP-L138,跳转到Processor SDK for OMAPL138 Processors for Linux and TI-RTOS Support页面,在PROCESSOR-SDK-LINUX-OMAPL138后面点击Get Software,进入到PROCESSOR-SDK-LINUX-OMAPL138 04_02_00_09界面,下载ti-processor-sdk-linux-omapl138-lcdk-04.02.00.09-Linux-x86-Install.bin即可;下载包的种类为TI Software Development Kits (SDK) ,文件系统使用的是Yocto,交叉编译工具使用Linano GNU compiler collection(GCC),还包含实时Linux操作系统RT-Linux。

10、下载ti-processor-sdk-linux-omapl138-lcdk-04.02.00.09-Linux-x86-Install.bin后,加执行权限

chmod +x ti-processor-sdk-linux-omapl138-lcdk-04.02.00.09-Linux-x86-Install.bin

运行(安装该软件)

./ti-processor-sdk-linux-omapl138-lcdk-04.02.00.09-Linux-x86-Install.bin

【11、配置编译器 】

gedit /etc/profile

增加arm-gcc路径,

增加一行:export PATH=$PATH:YOUR_PATH.

例如:

export PATH=$PATH:/home/jim/Ti/ti-processor-sdk-linux-omapl138-lcdk-04.02.00.09/linux-devkit/sysroots/x86_64-arago-linux/usr/bin

【12、测试 arm-gcc 安装是否成功 】

终端输入:arm-linux-gnueabi-gcc -v

输出以下为成功(如果不成功source /etc/profile,还不行就重起电脑):

Using built-in specs.

COLLECT_GCC=arm-linux-gnueabi-gcc

COLLECT_LTO_WRAPPER=/home/a/Ti/ti-processor-sdk-linux-omapl138-lcdk-04.02.00.09/linux-devkit/sysroots/x86_64-arago-linux/usr/bin/../libexec/gcc/arm-linux-gnueabi/6.2.1/lto-wrapper

Target: arm-linux-gnueabi

Configured with: /OE/linaro-toolchain/_build/snapshots/gcc-linaro-6.2-.11/configure SHELL=/bin/sh --with-mpc=/OE/linaro-toolchain/_build/builds/destdir/x86_64-unknown-linux-gnu --with-mpfr=/OE/linaro-toolchain/_build/builds/destdir/x86_64-unknown-linux-gnu --with-gmp=/OE/linaro-toolchain/_build/builds/destdir/x86_64-unknown-linux-gnu --with-gnu-as --with-gnu-ld --disable-libstdcxx-pch --disable-libmudflap --with-cloog=no --with-ppl=no --with-isl=no --disable-nls --enable-c99 --enable-gnu-indirect-function --disable-multilib --with-arch=armv5te --with-float=soft --enable-multiarch --with-build-sysroot=/OE/linaro-toolchain/_build/sysroots/arm-linux-gnueabi --enable-lto --enable-linker-build-id --enable-long-long --enable-shared --with-sysroot=/OE/linaro-toolchain/_build/builds/destdir/x86_64-unknown-linux-gnu/arm-linux-gnueabi/libc --enable-languages=c,c++,fortran,lto --enable-checking=release --disable-bootstrap --build=x86_64-unknown-linux-gnu --host=x86_64-unknown-linux-gnu --target=arm-linux-gnueabi --prefix=/OE/linaro-toolchain/_build/builds/destdir/x86_64-unknown-linux-gnu

Thread model: posix

gcc version 6.2.1 1016 (Linaro GCC 6.2-.11)

【13、使用SDK的两篇用户指引 】:http://processors./index.php/Processor_SDK_Linux_Getting_Started_Guide

http://processors./index.php/Processor_SDK_Linux_Software_Developer%E2%80%99s_Guide

14、安装好SDK后,~/ti-processor-sdk-linux-omapl138-lcdk-04.02.00.09/board-support/u-boot-.01+gitAUTOINC+340fb36f04-g340fb36f04/下即为UBoot源码

【15、编译UBoot 】

将~/ti-processor-sdk-linux-omapl138-lcdk-04.02.00.09/board-support/u-boot-.01+gitAUTOINC+340fb36f04-g340fb36f04/复制到~/2_Work/下改名为u-boot-.01,并进入到该目录

执行命令

make distclean CROSS_COMPILE=arm-linux-gnueabi-

make da850evm_defconfig

使用da850官方开发版的默认UBoot配置(备注DA850片子和OMAPL138片子硬件上一模一样,但是ROM里多了Aaudio codec算法,专供OEM大客户在数字音频方面的应用)

编译(没配全局环境变量的话要自带交叉编译参数)

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi-

16、UBoot烧录相关的文档和软件获取

先找到UBoot参考文档Using the OMAP-L132/L138 Bootloader

/ --> 列表第一项Products --> Embedded Processors 下的 Digital Signal Processors(DSP) --> 在跳转后的页面中选Products下面的OMAP-L1x:low-power DSP+ARM@ --> 在跳转后的页面中点击Tools&software --> 滚动到最下方在 Technical Documents中点击OMAP-L138 --> 跳转后页面目录级别为

TI Home > Semiconductors > Processors > Digital Signal Processors > C6000 DSP + ARM Processors > OMAP-L1x >

在Application notes中找到文档《Using the OMAP-L132/L138 Bootloader Application Report (Rev. E)》,地址为/lit/an/sprab41e/sprab41e.pdf,文档中第一页有UBoot格式更改、烧录时会用到的软件AISgen_d800k008_Install_v1.13.exe的下载地址URL:/lit/zip/sprab41

17、在Windows下或Ubuntu wine虚拟环境中安装AISgen_d800k008_Install_v1.13.exe软件

18、另外UBoot启动方式有多种,比如我们前期先从串口启动进行验证,官网上有介绍使用跳线来选择不同的启动介质)。

【19、安装AISgen 】(用于制作执行文件)(所需要的源文件,配置文件,UBoot文件都需要从同事那里获取)

映射Ubuntu串口到wine的Windows平台

cd ~/.wine/dosdevices

ln -s /dev/ttyUSB0 com1

ln -s /dev/ttyUSB0 COM1

ln -s /dev/ttyUSB1 COM2

ln -s /dev/ttyUSB1 com2

右击AISgen_d800k008_Install_v1.13.exe,打开方式,使用wine打开,一步步安装,安装完成之后生成两个应用程序AISgen_d800k008和UartHost.exe。

打开AISgen_d800k008.exe,File-->Load Configuration-->打开angelfish.cfg-->输入u-boot,生成uboot.bin。

【20、设置UBoot mkimage程序的环境变量 】,否则Linux内核只能编译出zImage,编译不出uImage

找到编译完的UBoot目录,将u-boot/tools这个目录记下来,Linux内核编译会用到,

临时生效环境变量

export PATH=/home/jim/2_Works/u-boot-.01/tools:$PATH

当前用户永久生效环境变量

gedit ~/.profile

然后添加

export PATH=/home/jim/2_Works/u-boot-.01/tools:$PATH

保存后

source ~/.bashrc

所有用户永久生效环境变量

gedit /etc/profile 步骤同上

《貌似安装SDK工具ti-processor-sdk-linux-omapl138-lcdk-04.02.00.09时该工具已经配置好了,

包括export PATH=~/ti-processor-sdk-linux-omapl138-lcdk-04.02.00.09/bin:$PATH》

【21、编译Linux内核 】,将~/ti-processor-sdk-linux-omapl138-lcdk-04.02.00.09/board-support/linux-4.9.59+gitAUTOINC+a75d8e9305-ga75d8e9305/复制到~/2_Work/下并改名为linux-4.9.59,并进入到该目录

使用davinci的默认配置

make davinci_all_defconfig ARCH=arm CROSS_COMPILE=arm-linux-gnueabi-

编译内核,设置内核加载地址

make uImage ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- LOADADDR=0xc0700000 -j8

其他命令:修改参数:make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- menuconfig

其他命令:清除上次编译内容:make distclean ARCH=arm CROSS_COMPILE=arm-linux-gnueabi-

其他命令:编译arch/arm/boot/dts/da850-lcdk.dts设备树:make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- da850-lcdk.dtb 编译后dtb文件在arch/arm/boot/dts/da850-lcdk.dtb

22、Ubuntu主机开启tftp服务,用于直接向UBoot传输内核

安装 sudo apt-get install tftpd-hpa

启动 sudo /etc/init.d/tftpd-hpa start 或者 sudo service tftpd-hpa start

要传输的内核文件 cp ~/2_Works/linux-4.9.59/arch/arm/boot/uImage /var/lib/tftpboot/

(稍后在UBoot中使用命令tftp c0700000 uImage即可将内核加载到板子内存)

23、Ubuntu主机开启nfs服务,用于内核启动时通过nfs直接加载nfs文件系统

安装 apt-get install nfs-kernel-server

建立共享目录

mkdir ~/nfsrootfs

chmod 777 ~/nfsrootfs

修改配置文件,允许nfsrootfs文件夹共享

sudo gedit /etc/exports

在里面加入/home/jim/nfsrootfs *(rw,sync,no_root_squash)

或者/home/jim/nfsrootfs 192.168.1.*(rw,sync,no_root_squash)

重启nfs服务

sudo /etc/init.d/nfs-kernel-server restart

//sudo exportfs –r

查看服务器目录和权限

showmount -e

判断是否成功

//sudo mount –tnfs localhost:/home/jim/nfsrootfs /mnt

24、使用一个USB转串口线,在PC主机上安装该款USB转串口的驱动,并获取到该串口的串口号,如COM1

25、从串口启动UBoot

打开UartHost.exe,选好没有中文路径的UBoot文件,波特率选为230400,断开板子电源,点击Start,再接上板子电源,板子上的UBoot即可从串口正常启动。

26、安装串口工具(Windows下可以安装SSCOM32)

sudo apt-get install cutecom

ls /dev/ttyUSB0

sudo usermod -aG dialout <username>

注销Ubuntu并重新登陆或重启系统

打开cutecom

选择ttyUSB0串口,选择波特率为115200,输入回车,则会显示

U-Boot >

表示已经进入UBoot命令行

27、通过UBoot从网络启动Kernel

在Ubuntu主机中将网络IP改为手动,IP地址192.168.1.9,子网掩码255.255.255.0,默认网关192.168.1.1,通过网线连接板子,将Ubuntu主机网络断开,再重新连上

(可以在第15步时,在UBoot的make menuconfig中将delay时间由3秒改为300秒后再重新编译出uboot执行文件,便于UBoot启动后能来得及从串口进入UBoot命令行,不改动也不影响使用)

(如果不是从公司git仓库获取的源码,而是从TI官网获取的源码,第15步时如果开发板晶振有改动,则需要改动以下部分

home\jim\2_Works\u-boot-.01\arch\arm\mach-davinci\Kconfig 16和17行屏蔽掉

# select SYS_DA850_PLL_INIT

# select SYS_DA850_DDR_INIT

或者在menuconfig菜单中屏蔽

将\home\jim\2_Works\u-boot-.01\include\configs\da850evm.h 31行

#define CONFIG_SYS_OSCIN_FREQ 24000000改为

#define CONFIG_SYS_OSCIN_FREQ 48000000

因为我们板子的晶振从24M改为了48M

27、配置UBoot环境

UBoot启动后的3秒内如果在串口终端输入了任意健,则会进入到UBoot命令行模式

在命令行中输入以下命令

设置板子IP | 标明Ubuntu主机IP | 设置默认网关IP(不会使用到) | 设置子网掩码 | 设置板子MAC地址

setenv ipaddr 192.168.1.88

setenv serverip 192.168.1.9

setenv gatewayip 192.168.1.1

setenv netmask 255.255.255.0

setenv ethaddr 32:34:46:78:9A:DC

ping 192.168.1.9 判断网络是否联通

setenv bootargs console=ttyO0,115200n8 initrd=0xc0700000,0x800000 设置最简单的内核启动方式

printenv 查看UBoot已经配置过的环境

28、只是单独加载内核

(如果是官方的源码,第21步时应该将~/2_Works/linux-4.9.59/arch/arm/mach-davinci/da850.c第41行的

#define DA850_REF_FREQ 24000000 改为

#define DA850_REF_FREQ 48000000 之后再进行编译Linux内核

UBoot命令中输入

tftp c0700000 uImage 将Ubuntu主机tftp中共享的uImage加载到板子RAM 0xc0700000地址处

bootm c0700000 从该内存地址处启动内核

此时可以从串口中看见内核被正常启动

29、制作nfs文件系统

将~/ti-processor-sdk-linux-omapl138-lcdk-04.02.00.09/filesystem/tisdk-server-extra-rootfs-image-omapl138-lcdk.tar.xz解压,

将解压后的文件夹内的所有文件拷贝到第23步中的~/nfsrootfs

重新再修改一下权限

chmod 777 ~/nfsrootfs

(如果是ramdisk或者其他文件系统需要做额外的制作工作,然后可以通过UBoot命令直接将该文件系统的压缩文件像内核一样通过tftp加载到内存,而无需用到nfs共享,命令类似于

tftp c1700000 ramdis.gz tftp $loadramdaddr $tftp_path/rootfs.ext2.gz.uboot ## 下载文件系统镜像到ram

bootm c0700000 c1700000 bootm $loadkernaddr $loadramdaddr ## 启动ram中内核和文件系统镜像

30、加载内核与文件系统

在Linux内核的menuconfig中配置nfs启动选项(我们下载的内核源码中已经配好了,可以不管)

使用路由器和自动IP配置的情况下:

setenv ethaddr 32:34:46:78:9A:DC 设置板子MAC地址

板子的网线连接路由器,电脑的网线也连接路由器,将电脑的ip查看一下,记下来,如192.168.0.169

setenv ethaddr 32:34:46:78:9A:DC

setenv bootargs mem=64M console=ttyS2,115200n8 noinitrd rw ip=dhcp root=/dev/nfs nfsroot=192.168.0.169:/home/jim/nfsrootfs,nolock rootwait

setenv bootcmd 'dhcp;setenv serverip 192.168.0.169;tftpboot;bootm'

boot

//setenv bootcmd 'dhcp;setenv serverip 192.168.0.169;bootm'

//saveenv

Linux引导成功之后,按一下回车,进入命令行

sh-3.2#

cd / 之后 ls,可以看到根目录下的文件夹。

在不使用路由器,电脑直接和板子用网线相连的情况下

在第27步的

setenv ipaddr 192.168.1.88 设置板子IP

setenv serverip 192.168.1.9 标明Ubuntu主机IP

setenv gatewayip 192.168.1.1 设置默认网关IP(不会使用到)

setenv netmask 255.255.255.0 设置子网掩码

setenv ethaddr 32:34:46:78:9A:DC 设置板子MAC地址

ping 192.168.1.9 判断网络是否联通

基础上输入再输入以下命令

setenv hostname jim 将jim改成自己Ubuntu主机的用户名

setenv rootpath /home/jim/nfsrootfs

setenv netdev eth0

setenv bootargs mem=64M console=ttyS2,115200n8 noinitrd rw root=/dev/nfs nfsroot=192.168.1.9:/home/jim/nfsrootfs ip=192.168.1.88:192.168.1.9:192.168.1.1:255.255.255.0:jim:eth0:off initrd=0xc0700000,0x800000

tftp c0700000 uImage 将Ubuntu主机tftp中共享的uImage加载v到板子RAM 0xc0700000地址处

bootm c0700000 从该内存地址处启动内核

此时可以从串口中看见内核和文件系统一起被正常启动

31、如果MAC地址有冲突,Kernel下载不成功,需要修改MAC地址(前提是Uboot中 flash驱动已存在,不过一般你不需要操作到这一步)

sf probe

sf erase 0x0 0x200000

setenv ethaddr 32:34:46:78:9A:DC

saveenv

printenv

32、以上只是已验证过的步骤,具体实施时每个人绝对都会遇到各自不同的问题,按照问题在网上一个个搜索解决才是正途。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。