微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > ARM技术讨论 > 之开发环境搭建

之开发环境搭建

时间:10-02 整理:3721RD 点击:

【创龙AM4379Cortex-A9试用体验】之开发环境搭建

上一篇试用报告,介绍了一下对开发板的上电操作,简单体验了一下多LED灯、Hello World、网络等基本功能的试用。在使用过程中,发现按键功能的试用没用任何反应,但是从开发板启动后的/dev设备驱动中确实加载了/dev/input/event2,看来还是需要我们自己去开始、实现相关的驱动,自己编写应用层的程序,以更好的探索AM4379的强大功能。

要想做更加深入的研究与功能挖掘,一个操作方便、高效的开发环境是必不可少的。根据创龙公司提供的开发板配套光盘,及开发环境搭建手册,发现不管是32位还是64位Ubuntu虚拟机都无法完成对TI SDK的安装,而交叉编译工具链、QT、内核相关的配置均在成功安装了TI SDK的前提下。后来,干脆用创龙给提供的Ubuntu版本,重新安装基于虚拟机的Linux系统,最后还是没有成功安装TI SDK。不知道是资料的问题,还是我个人的操作问题,怎么办呢?

当然还是有办法的,创龙除了TI SDK,还提供了与AM4379本身架构想匹配的交叉编译工具链,内核源码,这就好办了,我们一步一步的操作,为我们后续的QT移植、Python移植,以及字符设备驱动程序的开发,创建一个稳定可靠的开发环境。

1. 安装交叉编译工具链

在光盘资料中,到tools/linux下,找到gcc-linaro-arm-linux-gnueabihf-4.7-2013.03-20130313_linux.tar文件,如图所示:


将该交叉编译工具压缩包拷贝到Ubuntu虚拟机,执行如下命令:

tar -xvf gcc-linaro-arm-linux-gnueabihf-4.7-2013.03-20130313_linux.tar-C /opt

将讲编译工具解压到/opt目录下(注:该工具包是个打包文件,并不是压缩文件,后缀不带.gz或bz2),如图所示:


我们在利用交叉编译工具编译C或C++程序时,可以直接使用arm-li     nux-gcc或使用命令的绝对路径,显示采用绝对路径是相当麻烦的,我们设置一下环境变量,使我们今后交叉编译程序时只需输入arm-linux-gnueabi-gcc即可。

输入命令:

sudo gedit /etc/profile

在打开的文件末尾输入如下图所示的内容:


执行命令是环境变量设置生效:

sudo source /etc/profile

执行命令,如果出现如图所示的信息,说明交叉编译链设置完成:


2. 编译内核

由于后续的试用过程中,会涉及到驱动程序的开发,我们必须先编译好内核,以备我们后续工作中使用。

创龙公司给我我们提供了三个版本的内核源码,我们先看一下当前开发板安装的是哪一个版本,在TL-4379开发板中执行命令,

uname -a

结果如图所示:


从上图信息中,我们需要编译与给内核一致的版本,从kernel文件夹中将文件linux-3.14.43.tar拷贝到ubuntu虚拟机,执行如下命令:

sudo tar  -jxvf  linux-3.14.43.tar.bz2-C /opt/linux3.14.43

将内核源码解压到/opt/linux3.14.43目录下,如图所示:


执行命令清理内核:

cd linux-3.14-43

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-distclean

执行命令,生成.config文件:

sudo make ARCH=armCROSS_COMPILE=arm-linux-gnueabihf- tisdk_am437x-evm_de fconfig

结果如图所示:


执行命令配置内核树:

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-am437x-gp-evm.dtb

执行结果如图所示:


执行命令开始编译内核:

sudo make ARCH=armCROSS_COMPILE=arm-linux-gnueabihf- zImage -j2

编译结果如图所示:


3. 配置NFS服务

我们在Linux主机上交叉编译后的程序需要拷贝到TL-4379开发板上运行,这里我采用NFS网络文件系统的方式。在Linux主机上安装NFS服务软件,创建并配置NFS文件夹,具体步骤如下:

sudo apt-getinstall nfs-kernel-server 安装 NFS 服务器端

创建NFS共享目录:sudo mkdir /nfsshare

编辑/etc/exports文件,在该文件中设置/nfsshare为共享目录,并设置其访问权限。

输入命令:sudo gedit /etc/exports

打开/etc/exports文件后,把“/nfsshare”目录设置为 NFS 共享目录,在该文件末尾添加下面的一行: /nfsshare *(rw,sync,no_root_squash)

如图所示:


修改完成后,保存退出/etc/exports文件,在命令行执行如下命令:

sudo chmod -R 777/nfsshare

sudo chown –Rnobody /nfsshare

至此,我们就在PC机端设置了NFS共享目录。

执行如下命令启动NFS服务:

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

4. 交叉编译C运行并通过NFS在开发板上运行

在Ubuntu虚拟机上编写一个C程序,交叉编译,将编译后的可行执行文件拷贝到上一节创建的NFS共享目录,以便开发板挂载NFS,执行目标程序。

4.1 创建C程序

执行命令:

gedit hello.c

#include <stdio.h>

int main(void)

{

      printf("HelloWorld!\n");

      return0;

}

4.2 交叉编译C程序

执行命令:

arm-linux-gnueabihf-gcc -o hello hello.c

编译结果如图所示:


4.3 在开发板上执行程序

启动开发板,执行如下命令:

mount -t nfs 192.168.1.136:/nfsshare /mnt-o nolock

cd /mnt

./hello

执行结果如图所示:



Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top