您的位置:时时app平台注册网站 > 时时app平台注册网站 > Ubuntu嵌入式开荒情况安排,交叉编写翻译碰着

Ubuntu嵌入式开荒情况安排,交叉编写翻译碰着

2019-09-10 19:19

 

二、配置tftp服务
  笔者这里说的tftp服务仅指配置调试主机的tftp服务,开发板上U-BOOT对tftp服务的支持需要涉及到网卡驱动的修改等,不是我们讨论的重点,这里不展开论述。
  具体步骤如下:
  1、打开新立得包管理器,搜索tftp,如果你已经装了tftp和tftpd,那么先用新立得去彻底删除他们;如果也已经安装了tftp-pha和tftpd-hpa,那么也同样用新立得去彻底删除他们。
  2、同上,用新立得安装tftp-hpa和tftpd-pha。
  3、设置tftp服务端。建立一个tftp 根目录,表示tftp客户端会访问的位置
  #cd Document
  #mkdir tftproot
  #chmod 777 tftproot (我这里是为了省事,赋予了读、写、执行权限,读者可以自行决定赋予哪些权限)
  4、更改tftp服务端的配置文件。
  #vi /etc/default/tftpd-hpa
  修改前是这样的:
  # /etc/default/tftpd-hpa
  TFTP_USERNAME="tftp"
  TFTP_DIRECTORY="/tftpboot"
  TFTP_ADDRESS="0.0.0.0:69"
  TFTP_OPTIONS="-l -c -s /tftpboot"
  修改好后的配置是这样的:
  RUN_DAEMON="yes" 
  OPTIONS="-l -s -c /home/eric/Documents/tftproot"  (按自己的实际情况修改)
  TFTP_USERNAME="eric"  (按自己的实际情况修改)
  TFTP_DIRECTORY="/home/eric/Documents/tftproot"  (按自己的实际情况修改)
  TFTP_ADDRESS="0.0.0.0:69"
  TFTP_OPTIONS="--secure"
  5、重启动tftp服务
  #sudo service tftpd-hpa restart
  tftpd-hpa start/running, process 2084
  6、测试tftp服务是否正常
  进入任意一个目录下,获取tftproot下的test.txt文件(读者可以自己建立测试文件),查看操作完成后,test.txt文件是否读取成功。
  # tftp localhost
  #tftp> get test.txt  (在你的tftproot目录下,建立一个测试小文件,在这里测试获取)
  #tftp>quit
  一个tftp服务端即配置完成了,可以在开发板uboot中使用tftp命令,获取主机上的内核和文件系统文件。

Ubuntu下S5PV210开发板嵌入式开发环境搭建

本教程所使用的开发板是GEC210开发板,核心板资源概述:CPU:S5PV210,SDRAM:512MB,Flash:8MB,NandFlash:256MB。

本教程搭建的环境可以用于uboot移植、Linux移植,即使开发板只有uboot也能轻松实现内核驱动程序开发。

U-Boot源代码下载地址

u-boot Makefile完全解读

U-Boot中的date命令

U-Boot源代码下载地址

U-Boot下的两个重要数据:bd_t和gd_t

U-Boot中的version命令

U-Boot中的usb命令

接下来,直接进入正题:

1、交叉编译器

1.1  因为我们编写的程序是要运行在开发板上的,而Ubuntu自带的编译器编译的程序只能在X86架构下运行。

解压编译器:

$ tar -jxvf arm-2009q3.tar.bz2 -C /usr/local/arm/(arm-2009q3.tar.bz2是适用于S5PV210平台的编译器)。
1.2  设置环境变量

#vim ~/.bashrc
在文件尾端加入
export PATH=/usr/local/arm/arm-2009q3/bin:$PATH
使环境变量生效
#. ~/.bashrc
验证环境变量设置
#arm-linux-gcc -v

2、配置串口工具--minicom

2.1 安装串口工具

sudo apt-get install minicom

2.2  配置

#minicom -s

选择第三项 Serial port setup 进行配置

2.3  串口通讯参数配置

波特率: 115200 8N1
硬件控制流: 无
端口配置: Serial Device: /dev/ttyS0(台式机使用COM1)

3、搭建tftp服务器

3.1 安装 tftp 工具

apt-get --force-yes -y install tftpd-hpa tftp-hpa xinetd

3.2 建立 tftp 服务器目录

mkdir /tftpboot
chmod 777 /tftpboot

3.3 配置 tftp 服务

vim /etc/default/tftpd-hpa
修改配置文件为
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/tftpboot"
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS="-l -c -s"
开启 tftp 服务
sudo /etc/init.d/xinetd restart
sudo service tftpd-hpa restart

测试
touch /tftpboot/aaa
tftp localhost
get aaa
如果没有任何错误,然后按 q 退出看当前目录下有没有 aaa 文件,如果有证明 tftp 服务配置成功

Ubuntu下tftp服务搭建

TFTP服务器配置

Ubuntu Linux配置TFTP下载服务器

Ubuntu 11.10 配置tftp Server

Ubuntu 12.04 搭建TFTP服务

Ubuntu 12.04 搭建tftp服务器的安装、设置、调试

  1. 搭建 NFS 服务器

4.1 安装 NFS 工具

apt-get --force-yes -y install nfs-kernel-server nfs-client nfs-common portmap

4.2 建立 NFS 共享目录

mkdir -p /nfs
chmod 755 /nfs -R

4.3 配置 NFS 服务

vim /etc/exports增加下面一行
/nfs *(rw,sync,no_root_squash)

4.4 开启 NFS 服务

service portmap restart
/etc/init.d/nfs-kernel-server restart

4.5 测试

showmount -e localhost
Note:在开发板 ping 一下,如果没有通,关闭防火墙

本教程所使用的开发板是GEC210开发板,核心板资源概述:CPU:S5PV210,SDRAM:512MB,Flash:8MB,NandFl...

          

要搭建一个嵌入式开发环境,主要有这几个服务需要配置好,交叉编译环境,tftp服务,...

        #sudo apt-get install nfs-kernel-server

一、交叉编译环境
  交叉编译器可以自己编译,但最好的办法是使用板子厂家提供的成形的交叉编译器,方便且几乎不会有问题,否则自己整一个,不是编译不过就是配置有差异,总之很烦,笔者自己使用的OK6410开发板提供的arm-gcc交叉编译工具。
  #mkdir /usr/local/arm
  #cp arm-linux-gcc-4.3.2.tgz /usr/local/arm
  #tar -zxvf arm-linux-gcc-4.3.2.tgz -C /  解压缩
  完成上述操作后,在usr/local/arm目录下,应该有个4.3.2的目录,其中即包括了交叉编译需要的全部东西,将该目录下bin添加到环境变量中即可。
 
  echo $PATH查看当前环境变量配置,我们的目标是在$PATH变量中添加/usr/local/arm/4.3.2/bin这个值,可以修改的位置很多,如/etc/environment,~/.profile等,我个人推荐大家用~/.profile,使用前者会导致sudo -s后,无法找到交叉编译的环境变量设置,熟悉整个Ubuntu环境变量管理流程的读者很容易知道为什么。
  #gedit .profile
  在文件最后一行后输入export PATH=$PATH:/usr/local/arm/4.3.2/bin,保存,使用source .profile命令使配置生效。
  #echo $PATH
  #/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/arm/4.3.2/bin
  #arm-linux-gcc -v
  Using built-in specs.
Target: arm-none-linux-gnueabi
Configured with: /scratch/julian/lite-respin/linux/src/gcc-4.3/configure --build=i686-pc-linux-gnu --host=i686-pc-linux-gnu --target=arm-none-linux-gnueabi --enable-threads --disable-libmudflap --disable-libssp --disable-libstdcxx-pch --with-gnu-as --with-gnu-ld --enable-languages=c,c --enable-shared --enable-symvers=gnu --enable-__cxa_atexit --with-pkgversion='Sourcery G Lite 2008q3-72' --with-bugurl= --disable-nls --prefix=/opt/codesourcery --with-sysroot=/opt/codesourcery/arm-none-linux-gnueabi/libc --with-build-sysroot=/scratch/julian/lite-respin/linux/install/arm-none-linux-gnueabi/libc --with-gmp=/scratch/julian/lite-respin/linux/obj/host-libs-2008q3-72-arm-none-linux-gnueabi-i686-pc-linux-gnu/usr --with-mpfr=/scratch/julian/lite-respin/linux/obj/host-libs-2008q3-72-arm-none-linux-gnueabi-i686-pc-linux-gnu/usr --disable-libgomp --enable-poison-system-directories --with-build-time-tools=/scratch/julian/lite-respin/linux/install/arm-none-linux-gnueabi/bin --with-build-time-tools=/scratch/julian/lite-respin/linux/install/arm-none-linux-gnueabi/bin
Thread model: posix
gcc version 4.3.2 (Sourcery G Lite 2008q3-72) 
  环境变量配置成功。

         如果上面一切正常,表示nfs服务已经可以使用了,接下来配置一下u-boot的环境变量,让它告诉内核挂载nfs。

Ubuntu嵌入式开发环境配置,交叉编译环境 tftp minicom

 

  调试BSP和驱动的基本环境就搭建完毕了,现在可以开始你的正式工作了。

         设置u-boot的环境变量,更改启动参数,我的如下:

三、串口终端
  串口终端的作用不必说,几乎调试BSP和驱动时处处要使用它与板子打交道,笔者使用的是minicom。
  具体步骤如下:
  1、安装minicom
  #sudo apt-get install minicom
  2、配置minicom
  在终端中输入minicom以启动minicom;
  先按下Ctrl a, 放开, 再按o, 出现配置菜单.
  选择 Serial port setup
 时时app平台注册网站 1
  上面是笔者的配置,如果没有使用USB转串口,而是直接使用串口,那么Serial Device要配置为/dev/ttyS0。
  对波特率,数据位和停止位进行配置,键入“E”,波特率选为115200 8N1 (奇偶校验无, 停止位1),硬/软件流控制分别键入“F”“G”并且都选NO.
  按回车键退出当前配置,选择Save setup as dfl保存为默认配置,下次即可直接使用了。(若提示说无法保存为默认配置,表示权限不够,注意启动minicom时,使用sudo)
  接下来,连上板子,就可以使用串口终端进行调试了。

 

  要搭建一个嵌入式开发环境,主要有这几个服务需要配置好,交叉编译环境,tftp服务,串口终端。
  简单介绍以下,交叉编译环境很好理解,没有它无法编译程序在板上运行,所以是必须的;tftp服务本人认为非常好用,如果每次编译内核后,都要烧写到flash中去,不仅仅是极大减少flash的寿命(一般flash可擦写10万次左右),而且很费实际,利用tftp服务将程序直接从主机加载到板子上,马上就可运行是很舒服的开发过程。串口终端也是必须有的服务,没有串口终端,都不知道板子现在运行情况,也无法通过命令交互,没有它几乎没法进行开发。
  笔者主机是Ubuntu 11.10版本系统,下面简单介绍以下开发环境搭建过程,方便自己以后查阅,若有读者觉得有问题,欢迎留言讨论。

 

        saveenv

 

 

 

         嵌入式开发无非就是BSP开发和驱动开发两个部分,和所有其它开发工作一样,调试时间占开发周期的大部分实际,能够方便的调试修改后的内核和驱动程序将大大的提高工作效率。想一想我们通常的开发步骤,就是修改然后下载到板子上调试,通过串口查看调试结果。这里介绍下我比较喜欢的一种调试模式:u-boot先移植、调试成功,固化到flash中,使用tftp在线加载内核,挂载一个nfs文件系统。这样无论是内核还是新编写的驱动程序,都可以迅速的进行测试,而不用大动干戈的擦写flash。

 

 

 

 

         虽然有这些工具可以帮我们比较迅速的调试程序,但是,这样终究没有在IDE下开发效率高,希望什么时候linux平台下有一个免费、开源的workbench类软件,那样应该会有更多的人投入linux开发的怀抱。

         操作完成后,你在目标机上执行ls -l,就可以看到主机mnt目录下的所有内容。

 

三、挂载目录到目标机

         255.255.255.0是子网掩码

 

        #tftp 0xc0008000 zImage

 

 

         #service portmap status

 

 

         #sudo /etc/init.d/portmap restart

 

 

        #sudo apt-get install portmap

         /home/eric/Documents/nfs *(rw,sync,no_root_squash) (这里的/home/eric/Documents/nfs请根据自己的实际情况配置,注意,在nfs下请建立一个root目录,否则服务可能启动失败)

        如果你以前没有使用过nfs,那么使用前你必须安装一些基础软件。主要操作如下:

 

 

Ubuntu搭建嵌入式开发环境-续

 

         确保没有fail出现,就表示服务启动成功了,下面查看一下nfs服务状态

 

 

 

        待tftp读取zImage文件完成后,运行bootm 0xc0008000,正常的话就开始内核运行了,你将会看到熟悉的starting kernel。

       在阅读我的上篇文章《嵌入式开发环境-交叉编译 tftp minicom》后,启用tftp服务端和串口终端很简单。

        首先建立一个目录,拥有nfs的根目录。

         192.168.1.20是板子的ip地址

 

         192.168.1.10是主机的ip地址

 

         nfsd running

        注意:

 

        正常的话,你将看到kernel panic,因为你没有根文件系统。

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

 

        #sudo service tftpd-hpa restart

一、下载内核

嵌入式开发环境包括两个部分,工具环境和调试环境。在前一篇文章《嵌入式开发环境-交叉编译 tftp minicom》中...

        开发板是OK6410,u-boot是1.1.6版,自己添加、修改使其支持OK6410的DM9000网卡驱动。

        #minicom

        顺利的话,在串口终端中你已经可以看到u-boot的初始化调试信息了,迅速的按任意键进入u-boot的命令模式。

         #mount -t nfs -o nolock 192.168.1.10:/mnt  /tmp

        上面的命令是告诉u-boot,从tftp的服务端根目录下,读取zImage文件到内存0xc0008000位置。(如你所知,这步要顺利完成,你必须将一个可用的内核zImage文件置于tftp服务端的根目录下)

 

二、加载nfs

        安装这两个软件后,需要配置以下nfs服务端。

 

         #service nfs-kernel-server status

 

        在这里你有两种选择,一是烧写可用的根文件系统到flash指定位置;另一各是使用nfs。若你决定使用nfs,请继续下一个部分。

         在文件最后加上一段

         192.168.1.1是网关地址

         setenv bootargs "root=/dev/nfs nfsroot=192.168.1.10:/home/eric/Documents/nfs/root/FileSystem-Yaffs2        ip=192.168.1.20:192.168.1.10:192.168.1.1:255.255.255.0:witech.com.cn:eth0:off console=ttySAC0,115200"    

 

 

嵌入式开发环境包括两个部分,工具环境和调试环境。在前一篇文章《嵌入式开发环境-交叉编译 tftp minicom》中介绍了工具环境的搭建,在这篇续中,将介绍利用这些工具环境搭建的一个嵌入式的调试环境。当然,我这篇续不是什么操作指导文章,只是说明一下我个人比较喜欢的调试方式,相比vxworks,linux驱动开发环境还是非常的原始,vxworks下workbench一统天下,无论是BSP还是驱动程序,抑或是RTP程序,一个workbench让你从编码到在线调试都可以顺利完成,用着非常的惬意。当然其代价就是非常多的dollar,有钱的享受服务,没钱的就自己动手。

         

 

        #sudo vi /etc/exports

         网路环境配置和挂载nfs类似,你在目标机上建立一个目录,执行下面的命令。

        #mkdir nfs/root

        #cp yaffs /nfs/root

         接下来启动nfs服务

         接下来,我们的系统可以顺利启动了。使用tftp 0xc0008000 zImage下载系统,bootm 0xc0008000启动,顺利的话你可以看到系统正常启动,并且挂载了你主机上的nfs。        

         当你正常的一步步都这里,你已经可以很容易的开始你的BSP和驱动的调试了,至少是很容易的在板子上运行你修改后的代码,你可以将你的驱动放在nfs下,这样板子一启动你就可以测试的驱动是否正确,同样你也可以测试你的应用程序。当然,你要是觉得这样文件不清晰的话,可以挂载主机的某个目录到目标机上,形成两者目录的共享。

         portmap start/running, process 26038

 

 

本文由时时app平台注册网站发布于时时app平台注册网站,转载请注明出处:Ubuntu嵌入式开荒情况安排,交叉编写翻译碰着

关键词: