首页 > 知识库 > 正文

如何在嵌入式linux操作系统环境下进行程序的开发?

在PC上直接编译的代码,在嵌入式板子里是不能跑的,要采用交叉编译的方式,安装编译工具,设置环境,然后编译代码,这样才可以烧入板子执行,不同体系结构不同板子,给的交叉编译工具不一样,51 还是 arm?更多追问追答追问ARM追答1,是的,需要修改,因为arm汇编是AT&T, 不同于intel汇编, 源码需要修改2, 在linux下编译嵌入式上的程序需要交叉编译, 就是说不能用系统自带的gcc as等工具,你需要去网上下载交叉编译工具。这个过程可能很痛苦哇。追问您能详细一点的介绍一下吗我是linux盲 完全不懂 所以特别急切的想深刻的了解这个东西我想,是用linux环境,进行一些不是linux的嵌入式程序。比如上边说的,把一般的ucos移植到ARM上的程序,在linux环境下编译连接,然后下载到板子里去运行追答编写代码时和在windwos下差不多, 就是编译时的,linux没有ads这样的IDE。你需要自己取网上下载 交叉工具链追问还是不太明白,比如我有了arm-linux-gcc 这个工具以后,我把我在windows上写的程序拿过来,用它编译就行了吗? 是不是对makefile文件也有些修改啊 还有 我用什么方式下载呢? 比如我以前在windows上是用J-LINX 来下载,那么我在linux环境下,是不是只能通过串口把程序烧到FLASH中去呢追答1,makefile当然需要修改, 起码得指定编译器。2, Jlink在linux下不好用哇!!! 可以通过串口下载烧写。也可选openJtag。如果已经移植了操作系统,那么可以通过网络来调试。本回答被网友采纳,在linux下没有ads相应的软件。如果只是移植ucos那么ads、iar等软件是最方便的。只有在移植内核时才在linux采用交叉编译工具进行编译,之后再烧写到开发板上。一般使用jlink,找一个开发板,一步步来www.shufadashi.com防采集。

因为LINUX的先天优势导致嵌入式开发大多采用LINUX系统:

关于这个方向,我认为大概分3个阶段: 1、嵌入式linux上层应用,包括QT的GUI开发 2、嵌入式linux系统开发 3、嵌入式linux驱动开发 嵌入式目前主要面向的几个操作系统是,LINUX,WINCE、VxWorks等等 Linux是开源免费的,而且其源代码是开放的,更

1.开源,代码开放,省去了自己编写的麻烦,节约成本而且不会涉及到专利和产权纠纷。

借 ockrider 的话说:嵌入式不仅仅是基于linux环境的平台,也可以基于wince,symbian,IOS等等。只是linux用得可能广泛一些而已,所以lz听得也多些。 所谓,linux提供开放源代码指的是你可以到网上下载linux Kernel 自己修改,配置,编译生成自

2.功能齐全,对于很多硬件设备都有丰富的驱动程序,只需要移植一下,不需要改动太多。

做一个嵌入式Linux系统究竟要做哪些工作 做一个嵌入式Linux系统究竟需要做哪些工作?也就是本文究竟要讲述哪些内容?我先介绍一个脉络,可以做为我们后面工作的一个总的提纲: 第一步、建立交叉编译环境 没有交叉开发经验的读者,可能一时很难接

3.稳定,linux确实比windows要稳定。

因为LINUX的先天优势导致嵌入式开发大多采用LINUX系统: 1.开源,代码开放,省去了自己编写的麻烦,节约成本而且不会涉及到专利和产权纠纷。 2.功能齐全,对于很多硬件设备都有丰富的驱动程序,只需要移植一下,不需要改动太多。 3.稳定,linux

4.对于大多数芯片,都有裁剪的配置文件,在Linux内核源代码下,arch/arm/configs中有许多芯片的配置文件。

嵌入式Linux开发流程 在一个嵌入式系统中使用Linux开发,根据应用需求的不同有不同的配置开发方法,但是一般都要经过如下的过程: 1.建立开发环境 操作系统一般使用RedHat-Linux,版本从7到9都可以,选择定制安装或全部安装,通过网络下载相应

5.Linux分而治之的思想,可以使得驱动和应用程序并行开发,加快开发速度。

  1 GECMlO开发板硬件构成  ARM处理器是一种支持16/32位双指令集的高性能、低成本、低功耗的R ISC微处理器,目前已经62616964757a686964616fe78988e69d8331333337616536占领了75%以I:的32位RISC嵌入式产品f仃场。本文所选用的ARM920T微处理器属于中端产品,应用也十分广泛。$3C2410是32位低功耗RISC宏单元,其工作频率为203 MHz,同时支持Thumbl6位精。简指令集,从而能以较小的存储空间需求,获得32位的系统性能。64M字节的SDRAM,由两片K4S561632组成,工作在32位模式下;64M字节NAND Flash,采用的是K9F1208,可以兼容16M,32M或128M字节;10M以太网接口,采用的是CS8900Q3,带传输和连接指示灯;2路UART串行口,波特率可高达115200bps,并具有RS232电乎转换电路Embedded·ICE(20脚标准JTAG)接口和并口式jTAG接口,支持ADS,SDT软件的卜.载和调试以及FLASH的烧写。  2 嵌入式Linux开发环境的搭建及开发工具的使用  2.1宿主机——目标机模式  进行项目开发前,先要做的是搭建一套基于Linux操作系统的应用开发环境,一般由目标板(GEC2410开发板)和宿主机(LiUUX虚拟机)所构成。如图1所示。嵌入式系统通常是一个资源受限的系统,因此直接在嵌入式系统的硬件平台上编写软件比较困难,有时候甚拿是不可能的.目前一般采用的解决办法是首先在通用计算机上编写程序,然后通过交叉编译生成目标平台七可以运行的二进制代码格式,最后再下载到目标平台上的特定位置.卜运行.用来编译这种程序的编译器就叫交叉编译器。为了不跟本地编译器混淆,交叉编泽器的名字一般都有前缀。例如:arm.1inux—gcc。交叉开发环境是指编译、链接和调试嵌入式应用软件的环境,它与运行嵌入式应用软件的环境有所不同,通常采用宿主机/目标机模式。      2.2 Linux服务器交叉编译环境的建立  Linux服务器是嵌入式Linux内核编译、应用程序开发、编译等的公共平台,在一个嵌入式系统的开发过程中,有许多工作需要通过它来完成。交叉编译工具用于编译在目标系统上运行的嵌入式Linux内核及应用程序,包括编译器、连接器、调试器以及代码转换J二具等实用程序,一般以瓜缩软件包的方式提供给我们,称为开发工具链(Toolchain).目前基于ARM架构的交叉编泽工具链为:allll-liuux.gcc-2.95.3。  1)GNU交叉工具链的下载  从ARM官方网站F载删.arm.tinux.org.ak,可以从该站点下载2.95.3工具链:  ftp://tip.arm.Iinux.org.uk/pub/armlinux/toolehain/cross-2.95.3.tar.bz2  2)cross-2.95.3.tar.bz2包的安装步骤  a.#mkdir/mr/local/arm;  b.#cp CROSS一2.95.3.tar.bz2/usr/local/ann;  C.#tar jxvf crog$一2.95.3.tar.bz2;  d.添加环境变量:在文{牛/ete/bashrc文件最后添加:  export PATH=/usr/local/arm/2.95.3/bin:$PATH:  e.工具链安装完成。  2.3配置NFS服务的步骤  NFS服务就是将宿主机的一个目录通过网络可以被挂载到其他计算机上。并且作为其他计算机的一个目录,其目的就是让不同的机器、不同的操作系统之间可以彼此共享文件。  NFS的使用分服务器端和客户端,其中服务器端提供要共享的文件,客户端通过挂载“mount”这一动作实现对共享文件的访问操作。下面主要介绍GEC24 10开发板的Linux系统与虚拟机的LintLx通过NFS实现文件共享的方法与步骤:  1)在虚拟机linux配置nfs服务,编辑nfs配置文件/etdexports,设置共享目录如:vi/etc/exports,添加:/root/nfs—share·(rw,sync,no—root—squash)。rW表示允许下位机读写该目录,no_root_squash允许下位机以主机root用户身份挂载根文件系统。  2)在虚拟机linux启动NFS服务:(修改配置文件后就需要蕈新启动施服务)#/etc/init.d/nfs reSTart或者用命令:#service nfs restarto.  3)防火墙的关闭。选择系统设置一》安全级别,将安全级别改为“无防火墙”。  4)用交叉网线连接PC机(虚拟机)与开发板,目的让两个linux处在同一个网络内。  开发板的ip地址是:192.168.2.223,因此配置虚拟机ip为192.168.2开头的ip地址,如可用下列命令配置:#ifcONfigethO 192.168.2.23。  5)在开发板linux系统中挂载虚拟机linux的NFS共享目录,执行下列命令:#mkdir/tmp/nfs#mount—t nfs一0 nolock192.168.2.23:/root/nfs—share/trap/nfs。  2.4交叉调试器的制作  2.4.1交叉调试器的结构  程序的调试足检杏程序正确性、可靠性、稳定性的重要手段,也是应用程序开发必不可少的组成部分。嵌入式软件开发过程中的交叉调试与本地软件开发过程中的调试方式有所差别。本地软件开发调试器与被调试的程序往往运行在同一台计算机}:。而嵌入式软件开发过程中,调试时采用的是在宿主机和目标机之间进行的交叉调试。调试器运行在宿主机,但被调试的进程却是运行在目标板。调试器和被调试进程通过串口或者网络进行通信,调试器可以控制、访问被调试进程,读取被调试进程的当前状态,并能够改变被调试进程的运行状态。  2.4.2制作交叉调试器的方法  1)解压源码包:tar zxf gdb一6.0.tar.gz  2)配置:cd gdb一6.0  mkdir build..arm..1inux  cd build..arm..1inux  ../configure--target=arm·linux一一prefix=/usr/local/arm/2.95.3/  3)编译:make  4)安装:make install  在/usr/locaL/arm/2.95.3/bin/目录下生成alTfl-linuxgdb工具  5)编译生成针对f1.Eln处理器的gdbserver  a.进入sdb源代码包中的gdb$erver目录  cd sdb-6.0  cd gdb/gdbserver  b.配置生成gdbserver  chmod U+X configure  CC=arnl—linux—gcc./configure一一host=arm-linux  c.Make,生成gdbserver、gdbreplay  6)通过凼,将gdbserver/gdbreplay到目标板中  7)启动目标板上的gdbserversabserver 192.168.1.88:2345 cross-teat其中192.168.1.88是目标板的IP地址。2345是任意指定的端口,也可以是其他端口。  8)启动宿主机端arm.1inux-gdb调试器在宿主机的工作目录中有对应的程序和源文件  #arm·hnux-柚CI‘OS8一teat  (gdb)target remote 192.168.1.88:2345  连接远程gdbserver  (sab)b main  设置断点  (Sdb)C运行,这个问题相当专业了,之前我去周立功那边了解过的。e69da5e887aa3231313335323631343130323136353331333335343330按照以下步骤进行安装:1) 安装32位的兼容库和libncurses5-dev库在安装交叉编译工具之前需要先安装32位的兼容库和libncurses5-dev库,安装32兼容库需要从ubuntu的源库中下载,所以需要在Linux主机系统联网的条件下,通过终端使用如下命令安装:vmuser@Linux-host ~$sudo apt-get install ia32-libs若Linux主机系统没有安装32位兼容库,在使用交叉编译工具的时候可能会出现错误:-bash: ./arm-fsl-linux-gnueabi-gcc: 没有那个文件或目录在终端中使用如下命令则可以安装libncurses5-dev库。vmuser@Linux-host ~$sudo apt-get install libncurses5-dev如果没有安装此库,在使用make menucofig时出现如下所示的错误:*** Unableto find the ncurses libraries or the*** required headerfiles.*** 'makemenuconfig' requires the ncurses libraries.***Installncurses (ncurses-devel) and try again.***make[1]: *** [scripts/kconfig/dochecklxdialog] 错误 1make: *** [menuconfig] 错误 22) 安装交叉编译工具链 将交叉编译工具“gcc-4.4.4-glibc-2.11.1-multilib-1.0_EasyARM-iMX283.tar.bz2”文件通过U盘的方式拷贝到Linux主机的“/tmp”目录下,然后执行如下命令进行解压安装交叉编译工具链:vmuser@Linux-host ~$ cd /tmpvmuser@Linux-host ~$ sudo tar -jxvfgcc-4.4.4-glibc-2.11.1-multilib-1.0_EasyARM-iMX283.tar.bz2 -C /opt/vmuser@Linux-host /tmp$ # 输入vmuser用户的密码“vmuser”执行完解压命令后,交叉编译工具链将被安装到“/opt/gcc-4.4.4-glibc-2.11.1-multilib-1.0”目录下。交叉编译器的具体目录是“/opt/gcc-4.4.4-glibc-2.11.1-multilib-1.0/arm-fsl-linux-gnueabi/bin”,为了方便使用,还需将该路径添加到PATH环境变量中,其方法为:修改“/etc/profile”文件,具体操作方法如下:在终端中输入如下指令vmuser@Linux-host ~$ sudo vi /etc/profile # 若提示输入密码,则输入“vmuser”用vi编辑器打开“/etc/profile”文件后,在文件末尾增加如下一行内容:export PATH=$PATH:/opt/gcc-4.4.4-glibc-2.11.1-multilib-1.0/arm-fsl-linux-gnueabi/bin文件修改并保存后,再在终端中输入如下指令,更新环境变量,使设置生效。vmuser@Linux-host ~$source /etc/profile在终端输入arm-fsl-linux-gnueabi-并按TAB键,如果能够看到很多arm-fsl-linux-gnueabi-前缀的命令,则基本可以确定交叉编译器安装正确,如下图所示。本回答被网友采纳内容来自www.shufadashi.com请勿采集。

声明:本网内容旨在传播知识仅供参考,不代表本网赞同其观点,文字及图片版权归原网站所有。

你可能还关注
热门推荐
今日推荐 更多