自家小白,使用的是MYB-Y335X开发板,基于TI推出的Cortex
A8内核的AM3352b处理器芯片。

 

壹 、Linux中的硬件配备号
     设 备          设 备 号
    IDE硬盘         /dev/hd[a-d]   (并行硬盘)
    SCSI硬盘        /dev/sd[a-p]   (串行硬盘)
    U盘             /dev/sd[a-p]
    光驱            /dev/cdrom
    软驱            /dev/fd[0-1]
    打印机          /dev/lp[0-2]
    鼠标            /dev/mouse
    LCD             /dev/fb0
    系统终端        /dev/tty0
 
 例如:
 <1>当插入第陆个U盘时,它的装置号为sda1
    当插入第二个U盘时,它的设施号为sdb1
 <2>当插入第3个硬盘时,它的配备号为hda1
    当插入第三个硬盘时,它的设备号为hdb1
tf卡传输可执行程序至linux开发板,Gdbserver远程调节和测试的有血有肉落到实处。    
二 、设备的挂载
    例程:将U盘插入ARM开发板
   
在Linux系统中,设备在上层都被映射为设备文件,比如IDE硬盘被映射为装备文件/dev/hda1,U盘被映射为装备文件/dev/sda1.一旦用户直接待上访问这个装备文件,则收获的一堆二进制代码.所以,为了便利用户的使用,Linux规定,必须将该装置文件挂载到某一索引下(常用的是/mnt目录),用户对该目录(比如/mnt目录)的操作(读/写)正是对设施文件的操作,也正是对设备的操作.当然,在实际应用中,常在/mnt目录下新建一子目录,比如hdisk(IDE硬盘)、udisk(U盘),然后将设备文件挂载到该子目录下.
    步骤1:将相应的文件系统烧入AENCOREM开发板,以帮忙USB设备等.
   
步骤2:插入U盘,此时在A福睿斯M开发板的顶点(putty软件或拔尖终端)上会彰显该U盘的相应新闻,最要紧的是U盘的配备文件名.
          当插入第一个U盘时,该U盘的设备文件名为/dev/sda1.
          当插入第②个U盘时,该U盘的设施文件名为/dev/sdb1.
    步骤3:在putty软件(或顶级终端)下输入指令:
          [root@localhost /]#cd /mnt
          [root@localhost mnt]#mkdir udisk
          那样,就在/mnt目录下新建一子目录udisk.
         
注意,在putty软件(或一流终端)下输入指令是对ARAV4M开发板举行操作,也便是操作A凯雷德M开发板内的文书系统.切记不要再Linux虚拟机下操作.因为现在是将U盘挂载到A凯雷德M开发板上,而不是Linux虚拟机,所以,必须对AEscortM开发板进行操作.
    步骤4:在putty软件(或一级终端)下输入指令:
          [root@localhost /]#mount -t -vfat /dev/sda1 /mnt/udisk
         
那样,就打响的将U盘的配备文件/dev/sda1挂载到了ALX570M开发板的/mnt/udisk目录下,且以fat格式举行挂载.当用户须要拜访U盘时,能够透过对文件/mnt/udisk而落成.
    注意,U盘多采取fat格式的文书系统.
    步骤5:在putty软件(或一流终端)下输入指令:
          [root@localhost udisk]#cd ..
          这样就退出了udisk目录.
          [root@localhost udisk]#umount /mnt/udisk
    那样就水到渠成的卸载了U盘(卸载U盘前,要求先退出/mnt/udisk目录).
    
叁 、文件的挂载
   
例程:将Linux虚拟机的/home/lishuai目录挂载到ASportageM系统的/mnt/arm_linux文件下
    步骤1:将相应的文件系统烧入A哈弗M开发板.
   
步骤2:在Linux虚拟机上建立NFS服务器,并将/home/lishuai目录作为共享目录,且设置的主机IP地址为192.168.0.*.
   
步骤3:<1>在Linux虚拟机终端上经过ifconfig命令设置IP地址为:192.168.0.20,并透过ifconfig命令查询IP地址.
         
<2>在Windows的网上邻居设置IP地址为:192.168.0.40,并由此”运维>cmd>ipconfig”命令查询IP地址.
         
<3>在putty软件或超级终端上通过ifconfig命令设置A福特ExplorerM开发板IP地址为:192.168.0.60,子网掩码为255.255.255.0(#ifconfig
eth0 192.168.0.60 netmask 255.255.255.0)并通过ifconfig
eth0命令查询IP地址.
    那样,Windows、Linux虚拟机、AOdysseyM开发板就在同一网段上了.
    步骤4:在putty软件或一流终端上输入指令:
          #ping 192.168.0.20      //查看AOdysseyM开发板能或无法ping通Linux主机
          #ping 192.168.0.40      //查看A瑞虎M开发板能或不能够ping通Windows
    步骤5:在putty软件或一级终端上输入指令:
         [root@localhost /]#cd /mnt
         [root@localhost mnt]#mkdir arm_linux
        
那样,就在A卡宴M开发板的文件系统中/mnt下新建了一子目录arm_linux.
    步骤6:在putty软件或拔尖终端上输入指令:
         #mount -o nolock,wsize=1024,rsize=1024
192.168.0.20:/home/lishuai /mnt/arm_linux

工欲善其事,必先利其器。

开发板自带的费用手册写的丰盛简单,对于初学者的话上手相比较费力,可是也直接的提升了友好化解难题的能力。

选用的是nfs目的板挂载本机目录的不二法门,当然首先,你得开通本机的nfs共享服务,具体步骤如下:

         
那样就将IP地址为192.168.0.20(Linux虚拟机)下的/home/lishuai挂载到(A哈弗M系统)的/mnt/arm_澳门金沙国际,linux目录下.
    注释:
       
<1>若在putty软件或超级终端上输入上面包车型地铁挂载命令,表示用户对A途锐M系统举办操作.由于A奥迪Q3M内已烧入了文件系统,故/mnt/arm_linux是A宝马X5M内文件系统的1个目录.因而,当用户执行该命令时,表示是将IP地址为192.168.0.20的/home/lishuai挂载到(A智跑M系统)的/mnt/arm_linux目录下.由此,当用户须要在A讴歌RDXM系统下对Linux虚拟机的/home/lishuai目录进行操作时,直接对/mnt/arm_linux目录操作便足以了.
          此时,在putty软件或超级终端上输入指令:#cd
/home,但却找不到lishuai这几个目录,这是因为在在putty软件或一流终端上实行cd命令时,是对A昂CoraM系统的访问.而不是对Linux主机进行走访,即便A奥德赛M系统已烧入了文件系统,但/home目录下未必有lishuai那一个目录.
       
<2>若在Linux虚拟机的极限上输入下面的挂载命令,表示用户对Linux主机实行操作.当然在Linux主机内已有照应的文件系统.故/mnt/arm_linux是Linux主机的2个目录.由此,当用户执行该命令时,表示将IP地址为192.168.0.20的/home/lishuai挂载到Linux主机的/mnt/arm_linux目录下.由此,当用户要求在Linux主机下对IP地址为192.168.0.20的配备的/home/lishuai目录进行操作时,直接对/mnt/arm_linux目录操作便得以了.
    从上面的描述能够见见,执行的指标差异,落成的挂载指标也分化.
    
④ 、对装备挂载、文件挂载的汇总达成
    例程:将Windows下的某部文件通过ALacrosseM开发板放入U盘
   
步骤1:通过Samba服务器将Windows下的文书hehe.txt放入(linux与Windows的)共享目录/home/lishuai内.
   
步骤2:通过NFS服务器将Linux主机的/home/lishuai目录挂载到A奥迪Q7M开发板的/mnt/arm_linux目录下.
          在putty软件或一级终端上输入指令:
          #mount -o nolock,wsize=1024,rsize=1024
192.168.0.20:/home/lishuai /mnt/arm_linux
    步骤3:将U盘挂载到A驭胜M开发板的/mnt/udisk目录下.
          在putty软件或超级终端上输入指令:
          #mount -t -vfat /dev/sda1 /mnt/udisk
    步骤4:在putty软件或一级终端上输入指令:
          #cd /mnt/udisk
          #cp ../arm_linux/hehe.txt ./
    那样就完结了将Windows下的某些文件通过A酷路泽M开发板放入U盘的指标.
 步骤5:卸载U盘和Linux虚拟机的/home/lishuai目录.
       在putty软件或超级终端上输入指令:
       [root@localhost udisk]#cd ..
       [root@localhost mnt]#umount /mnt/arm_linux
       [root@localhost mnt]#umount /mnt/udisk

学嵌入式也是一模一样,首先得询问环境。

一 、首先要求在linux主机中编译想要运维的次序,那里以led.c程序为例,进入led程序目录下输入make,假若程序已经编写翻译过会出现

① 、进入/etc目录,vim exports那个文件,在里边添加/home
192.168.0.*(rw,sync)保存后脱离

 

上面作者讲讲开发的步子:

make: Nothing to be done for `all'.

注:/home
为要共享的文书夹的名目,192.168.0.*为本NFS服务器允许访问的客户端ip,若nfs不成功,后边参数rw
ro
等标志对文本夹操作权限,sync:数据同步写入内部存款和储蓄器和硬盘,也足以应用async,此时数码会先暂存于内部存款和储蓄器中,而不立时写入硬盘。可以将括号里面包车型客车sync去掉。

伍 、设备号的另类应用
 1.配置linux主机IP地址:192.168.220.54
 2.配置ARM开发板IP地址:192.168.220.1
 3.配置Windows的IP地址:192.168.220.55
 4.在putty软件或一流终端下:#ping 192.168.220.54
 5.将linux主机的/home/lishuai目录挂载到A纳瓦拉M开发板的/mnt/arm_linux目录下:
   #mount -o nolock,wsize=1024,rsize=1024192.168.220.54:/home/lishuai
/mnt/arm_linux
 6.在linux主机的/home/lishuai目录下创立hehe.c源码.
   #vim hehe.c
   #include <stdio.h>
   int main(void)
   {
      printf(“hello embeded!/n”);
      return 0;
   }
 7.在linux主机的/home/lishuai目录下接纳arm-linux-gcc编写翻译hehe.c(为了在AEnclaveM平台上运转,必须使用arm-linux-gcc编写翻译器).
   #arm-linux-gcc hehe.c -o hehe.arm
  
编写翻译成功后,在putty软件或超级终端下的/mnt/arm_linux目录下会新发生一个hehe.arm的可实施文件.由此看出,linux主机的/home/lishuai与ATucsonM开发板的/mnt/arm_linux目录是联合署名更新的.
 8.在putty软件或一流终端下:
   #./hehe.arm > /dev/tty0      //将hehe.arm执行结果打字与印刷到LCD上
   #clear      > /dev/tty0      //清屏
   #ls         > /dev/tty0     
//将显示出近期路径(/mnt/arm_linux)下的文件和目录
 
Attention!!!

壹 、串口安装

编写翻译器暗中同意程序尚未改变,就不会再开始展览其余操作,固然想要重新编写翻译供给make
clean

② 、重新起动nfs服务,命令为:/sbin/service nfs restart

(1)经常向LCD上写那一个重定向,是写到tty0,而不是fb0.

第②:连接串口,使用工具 secure C卡宴T。

root@ubuntu:/home/rsn/AM3352/Examples/led# make clean
rm -f *.o led_test

③ 、输入命令route del default来关闭网关(加速mount速度)

(2)使用NFS完结文件挂载时,必须有限援助上面几点.
   <1>linux主机的NFS服务器常规使用.
      若卓殊,可透过指令重启服务器:#service nfs restart
      或询问服务器状态:#service nfs status
  
<2>Windows、linux主机和AEscortM开发板的IP地址在同一网段内,且通过A凯雷德M开发板能够ping通其余五个设备.因为文件挂载是经过互联网完结的.

而是呢连接串口后,不大概键入。

诸如此类编写翻译器就会去除编写翻译生成的可实施代码,之后再编写翻译

④ 、mount 192.168.0.47(为本机的ip):/home
/mnt用以测试本机是不是开始展览nfs服务。

(3)在其实的嵌入式开发中,平常力不从心将Linux主机的某部目录挂载到A大切诺基M开发板上,此时可以从以下四个地点出手:

缓解方案:

root@ubuntu:/home/rsn/AM3352/Examples/led# make
arm-linux-gnueabihf-gcc -o led_test led.c main.c

cd
/mnt目录下,看mnt下的始末是不是与home的始末千篇一律,若一致,表明已经开始展览nfs服务。

  
<1>由于那种挂载注重于NFS服务器,由此得以查询NFS服务器的意况,或许重启NFS服务器.

参考资料: http://blog.csdn.net/heli007/article/details/7279022SecureCRAV4T下的串口不能输入

更改串行选项:如下图所示。

 

澳门金沙国际 1

那之中必要留意一点的正是,一般的开发板,出厂时早已将linux系统烧录进开发板了。大家不须要在进展烧录了,然后正是串口的接连。

自个儿用的那款 处理器 三星 S5PV210 基于Cortex M-A8. Arm 有八个密密麻麻:
application、real-time 、micro controller。

留神:一般配备好串口后,不会立刻出多少,要求重启开发板上边的连串才行,最简便易行方法便是断电。

下一场,大家用C卡宴T(要求在同盟格局下运营),捕捉到界面如下。(看上去像是硬件自检)

澳门金沙国际 2

② 、硬件条件

无外乎正是网线与串口连接,大家可以在串口中输入
ifconfig来规定IP地址。然后将本机IP设置到支付板同1个网段即可。

眼前在自我的运用中,大家得以透过网线设置nat,实行文件间的共享,通过串口也许网口来执行命令都足以。

在意:那里有个小窍门,一般台式机唯有叁个网口如何做?我们只须要把开发板的网线接到路由器或许调换机上即可。

③ 、配置宿主机软件条件

貌似嵌入式开发条件有三:
基于pc机Windows操作系统下的CYGWIN;在Windows系统上安装虚拟机,然后再虚拟机上装Linux系统;直接安装Linux系统。

此处大家以第二种为例,前提是系统足够强悍,配置高即可。

网络方面:设置下NFS服务器。

步骤:

1)、 配置文件 打开 vi /etc/exports 录入要共享的目录 /CBT-SuperIOT
*(rw)    可读写 *意味着任意机器都足以访问,最前边是共享目录。

2)、打开可能重启服务 /etc/init.d/nfs restart
(全体的服务都得以通过此办法开始展览关闭大概重启,类似于 svcadm xxxservice
start)

其实也能够经过 service nfs start 来落到实处。 大概 chkconfig nfs on
来促成。这三种艺术都得以,最后一种方式重启后生效。

如图:

澳门金沙国际 3

澳门金沙国际 4

闭馆防火墙: (必须求关张,否则开发板系统(从设备)不能够共享nfs的目录。)

解释一下,在那几个种类中,大家在pc中设置的Linux作为nfs
互联网文件系统的客户端。开发板上面包车型地铁linux才是当真的劳动器端。所以要求在服务器端举办文件系统的挂载。

/etc/init.d/iptables stop 、 chkconfig iptables off 、 service iptables
start

3)、A揽胜M linux中挂载nfs系统(必须干掉防火墙)

mount -t nfs –o nolock 192.168.1.107:/CBT-SupperIOT /mnt/nfs    
表示挂载nfs 选项是-o IP+共享的文书夹 + arm下边包车型大巴挂载点。

清除挂载:umount /mnt/nfs

四 、编写代码

1)日常嵌入式开发有两种,挂载或然下载。以后相像是挂载,因为arm当中存款和储蓄财富有限。(直接挂载二进制代码)

2)创设实验目录,编写源代码,编写Makefile

小心:Makefile 不可能有别的错误,不然将无法编写翻译。

澳门金沙国际 5

CC=arm-linux-gcc 指明编译器

EXEC=hello 表示编写翻译后生成的履行文件名称

OBJS=hello.o 目的文件列表

CFLAGS+= 编写翻译参数

LDFLAGS+=-static 连接参数

all: $(EXEC) 编译主入口

$(EXEC) : $(OBJS)

$(CC) $(LDFLAGS) -o $@ $(OBJS)

clean: 清除编译结果

-rm –f $(EXEC) *.elf *.gdb *.o

小知识点:怎么着切换来根目录 cd / 即可。

3)编写翻译程序

在指令行长 ,键入 make即可。借使急需修改 make clean 然后再修改。

在意:编写翻译修改都以在宿主机上举办,不能够再arm中展开。

补偿二个小知识点:安装arm-linux-gcc

1)加载光盘文件 mount -t iso9660 /dev/cdrom /mnt/cdrom

2) 拷贝文件并解压 cp 与 tar 命令。

3)拷贝文件并钦命路线 cp 与 vi 命令。

4)使写入文件生效并证实 source 与 arm-linux-gcc 验证。

小心:原来arm-linux-gcc 与 ffmpeg一样,都以可执行文件。Redhat
中的软件安装 rpm yum 等。

参考资料: arm-linux-gcc-4.5.1的安装方式

5、在arm中验证

1) 利用串口终端进入到NFS共享使用目录

cd /mnt/nfs

澳门金沙国际 6

2) 执行顺序

./hello

澳门金沙国际 7

就会扭转可实施代码。

当本机的nfs服务开展后,你还索要配备开发板的ip地址,由于各类开发板ip地址配置格局区别,所以,要是开发板的ip地址为192.168.2.100.

      #service nfs restart

② 、将转变的可执行文件(led_test.o)拷至tf卡的根目录中。

搭建立外交关系叉编译环境的步子:

      #service nfs status

③ 、将tf卡插入开发板中,运维开发板。在win7系统下要求下载使用HyperTerminal超级终端来调节开发板

壹 、一般在安装linux时候,自动安装c编译环境,因而不须要再重新安装gcc编写翻译器。

  
<2>重新配置Linux虚拟机的IP地址.那种挂载基于AWranglerM开发板、Linux主机和Windows网卡在同一网段上,有时相互之间ping通但却无力回天挂载.

④ 、运维成功后第3进入root权限,之后须求首先进入开发板的根文件系统

② 、安装交叉编写翻译器

   <3>在Linux主机内输入指令来查阅Linux主机是或不是能挂载自身.

# cd /
# ls
bin      etc      lib32    mnt      root     sys      var
boot     init     linuxrc  opt      run      tmp
dev      lib      media    proc     sbin     usr

从ftp://ftp.arm.linux.org.uk/pub/armlinux/toolchain/下载交叉编写翻译器cross-3.2.tar.bz2,
存放在/usr/local目录下。

      #ifconfig eth0 192.168.0.50

⑤ 、之后必要挂载tf卡至mnt目录,mnt目录下首先必要新建二个文件夹,那里本身给她起名叫做tfcard

切换致该目录:

      #mount -o nolock 192.168.0.50:/home/lishuai /mnt

# mount /dev/mmcblk0p1 /mnt/tfcard 

# cd /usr/local

      //将Linux主机的/home/lishuai目录挂载到本机的/mnt目录下

有关何以必要挂载,咋样挂载参考的那篇小说,写的很好

# mkdir arm

陆 、 挂载之后就足以由此/mnt/tfcard访问tf卡中的财富和内容。

然后解压cross-3.2.tar.bz2:

在那边自身蒙受了1个要命严重的题材,正是在断电从前并未对挂载的tf卡实行反挂载,导致了产出了之类难题

# tar jxvf cross-3.2.tar.bz2 –C /usr/local/arm

Volume was not properly unmounted. Some data may be corrupt. Please run fsck. 

解压后把/usr/local/arm/usr/local/arm中最终3个arm拷贝到/usr/local,相当于用命令cd
/usr/local/arm/usr/local中,用cp -a arm
/usr/local把arm拷贝到/usr/local中去。

意思乃是tf卡有有些数据已经损坏,请运营fsck,所以那边先证实一下,挂载tf卡使用到位以后自然要运维反挂载语句,相当于Windows系统下的“弹出u盘”

三 、把交叉编写翻译器的门径参预到PATH。(二种方法a,b)

# umount /mnt/tfcard

a、# export PATH=$PATH:/usr/local/arm/bin

比方现身上述难点,化解措施是选拔读卡器插入另2个linux主机,使用fsck实行修复。具体步骤如下

注:(那只可以在当下的极端下才是立见成效的,)

1. 安装dosfstools(apt-get install dosfstools)
2. 使用fdisk -l命令来确定是哪个分区,也就是确定tf卡的路径。
3. 执行修复命令fsck.vfat -v /刚刚查到的路径
4. 执行修复命令fsck.vfat -a /刚刚查到的路径

b、修改/etc/profile 文件:

7、最终就能够动用cp命令将编写翻译好的可执行文件复制到根目录的/usr/bin下运作了。

# vim /etc/profile

 

充实路径设置,在最后添加如下:

export PATH=$PATH:/usr/local/arm/bin

四 、使新的环境变量生效。

# source /etc/profile

五 、检查是还是不是将路径参加PATH的主意。

# echo $PATH

一经展现的始末中有/usr/local/arm/bin,表达已经将陆续编写翻译器的门路参预PATH。自此,交叉编译环境设置完结。

6、测试。

下边我们就来测试1个简易的例子。

/*Hello.c*/

#include

int main()

{

printf(“hello word! ”);

return 0;

}

次第输好今后肯定无误,保存。进入程序文件所在目录

# arm-linux-gcc hello.c –o hello

(-o
能够知道为“目的为转移”)arm-linux-gcc是首先次面世,有人也许会问这些哪个地方来的,不要紧打开刚才安装的交叉编写翻译工具目录/usr/local/arm-linux/arm-linux/bin/能够窥见里头有1个arm-linux-gcc文件,这些便是本着arm的CPU的gcc编写翻译器了。现在用其它编写翻译工具链式也足以因此那种形式看看其编写翻译器是何等了。编写翻译好了今后就能够下载到指标机进行测试了。当然也得以先在PC机上测试正误。用gcc
hello.c –o hello就能够生成PC机上先后了,在运转./hello
就足以窥见终点展现hello!字样。用arm-linux-gcc编写翻译的顺序在PC机上是不可能运作的,运行后交给错误报告:无法实施二进制文件。表达经过交叉编写翻译环境编写翻译出的文件是硬件可进行的二进制代码文件.

柒 、交叉编写翻译环境搭建成功。

要经行gdbserver远程调节和测试,还必须安装gdb远程调节和测试工具:

gdb的源代码包能够从http:
//ftp.cs.pu.edu.tw/Linux/sourceware/gdb/releases/下载,最新版本为gdb-6.4。下载到有些目录,笔者下载到自身的用户目录:/home/vicky。

下载完后,进入/home/vicky目录,配置编译步骤如下:

#tar jxvf gdb-6.4-tar-bz2

#cd gdb-6.4

#./configure –target=arm-linux –prefix=/usr/local/arm-gdb -v

#make

(这一步的时候只怕会有标题,指示多个函数中(具体函数名不记得了)parse
error,正是unsigned前面多了多少个”}”,你用vi进入那一行把它删掉就行了。一般都不会出错的。)

#make install

#export PATH=$PATH:/usr/local/arm-gdb

进入gdbserver目录:

#./configure –target=arm-linux –host=arm-linux

#make CC=/usr/local/arm/bin/arm-linux-gcc

(这一步要内定arm-linux-gcc的岗位,大概跟你的不均等)

从未有过错误的话就在gdbserver目录下生成gdbserver可执行文书,把它烧写到flash的根文件系统一分配区,或通过nfs
mount的艺术都能够。只要保险gdbserver能在开发板上运维就行。

上边就能够用gdb+gdbserver调试我们开发板上的程序了。在指标板上运转gdbserver,其实正是在宿主机的minicom下,笔者的red
hat linux装在vmware下的。小编是在minicom下#mount 192.168.2.100:/
/tmp后做的(那里参数-o
nolock能够不加,不加这一步执行得反而更快些),hello和gdbserver都是身处linux根目录下,把主机根目录挂在到开发板的/tmp
目录下。

要实行gdb调节和测试,首先要在指标体系上运营gdbserver服务。在gdbserver所在目录下输入指令:

(minicom下)

#cd /tmp

#./gdbserver 192.168.2.100:2345 hello

192.168.2.100为宿主机IP,在对象体系的2345端口开启了二个调节和测试进度,hello为要调节的顺序。

并发提醒:

Process /tmp/hello created: pid=”80″

Listening on port 2345

(另2个终端下)

#cd /

#export PATH=$PATH:/usr/local/arm-gdb/bin

#arm-linux-gdb hello

(gdb) target remote 192.168.2.223:2345

(192.168.2.223为开发板IP)

出现提示:

Remote debugging using 192.168.2.223:2345

[New thread 80]

[Switching to thread 80]

0x40002a90 in ??()

同时在minicom下提示:

Remot

① 、进入/etc目录,vim exports这么些文件,在…

相关文章