热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

armlinuxudp自发自收_如何搭建嵌入式linux开发环境?

对于初学者,只需要一台安装有Linux操作系统(比如Ubuntu)的PC即可,或者在windows下安装一个虚拟机软件(Vmware),虚

对于初学者,只需要一台安装有Linux操作系统(比如Ubuntu)的PC即可,或者在windows下安装一个虚拟机软件(Vmware),虚拟一个Linux系统的主机,但是我建议还是安装真机,这样会迫使你必须在Linux环境下做任何事情,能让你更快的熟悉Linux操作系统。

那么当我们进入进阶阶段的学习时,需要在硬件设备上跑程序的时候,那我们就需要继续搭建交叉开发环境了。交叉开发模式即编译和运行不在同一台主机上,在PC机上编辑、编译,在目标机(开发板或者产品)上运行程序。

e5b7f37f8a5c9f8f37453bdeceda268e.png

在主机上开发完程序,通常使用nfs网络挂载或者tftp将目标代码通过网线下载到目标板进行验证,但是,像我们当前项目的驱动开发,驱动都是集成在内核中的,所以每次都是在Ubuntu上将整个内核代码进行编译,然后通过usb将整个内核镜像产物进行烧写。

gcc(GNU C Compiler),大名鼎鼎的GNU的C/C++/Obj-C编译器

gcc一般Linux系统自带,不用自己安装,下面简单说下gcc编译的过程,GCC的编译流程分为四个步骤:

  1. 预处理(Pre-Processing):gcc -E hello.c -o hello.i
  2. 编译(Compiling):gcc -E hello.c -o hello.i
  3. 汇编(Assembling):gcc -c hello.s -o hello.o
  4. 链接(Linking):gcc hello.o -o hello

链接时有时候会加如下参数:

  • -I: 指定头文件的路径
  • -L: 指定库的路径
安装交叉编译工具链

当我们初学的时候仅仅在Linux主机下编译运行我们的程序,gcc就够了,但是如果交叉运行时,就必须安装交叉编译工具链,交叉编译工具链可以自己制作,但是我还是建议大家通过以下方式安装:

  • 在~目录下创建一个文件夹
0e39315c4b47621de96c3cfd13f87fc4.png
  • 下载交叉编译工具链gcc-4.6.4.tar.xz(根据你需要的版本下载)cp到toolchain目录下进行解压
c21302f3cc6df0884f12e0dcf237c4b5.png
  • 添加环境变量

修改配置文件/etc/bash.bashrc,在最后一行添加:

export PATH=$PATH:/home/linux/toolchain/gcc-4.6.4/bin/
  • 重启配置文件
source /etc/bash.bashrc
  • 工具链测试
arm-none-linux-gnueabi-gcc -v、

如果可以看到版本号,说明安装配置成功。

tftp服务器的安装及配置

tftp是用来下载远程文件的最简单网络协议,基于UDP来实现的,嵌入式linux的tftp开发环境包括两个方面:

一是linux服务器端的tftp-server支持,二是嵌入式目标系统的tftp-client支持。因为u-boot(bootloader的一种)本身内置支持tftp-client,所以嵌入式目标系统端就不用配置了。

  • 修改文件(/etc/default/tftpd-hapa),开启tftp服务
sudo vi /etc/default/tftpd-hpa

改为:

da04b81796946bd4b4dc6b9799706a76.png

-l:以standalone/listen 模式启动TFTP服务,而不是从inetd启动 ,standalone/listen模式是一次启动,运行期间一直驻留在内存中,优点是反应快,缺点是损耗了一定的系统资源,通常用于对实时性要求较高的地方,inetd启动方式相反,只在外部发出连接请求时才调用tftp进程,不占用系统资源。

-c:可创建新文件,默认情况下,TFTP只允许覆盖原有文件,不能创建新文件。

-s:改变TFTP启动的根目录,加了-s之后,客户端端在使用TFTP时,不再需要输入指定的目录。

  • 重启tftp服务器
sudo service tftpd-hpa restart
  • 创建/tftpboot目录(在根目录下创建),并修改权限
sudo mkdir tftpbootsudo chmod 777 tftpboot
  • 登录本机进行测试
tftp localhost //登录tftp > get xxx //xxx为你想要从服务器(/tftpboot目录)下载的文件tftp > put xxx //xxx为你想要往服务器(/tftpboot目录)发送的文件tftp > q //q表示退出

如果采用烧写整个Linux kernel镜像的方法,通常使用usb将主机和目标板连接,然后根据不同的芯片厂商提供的烧写工具进行烧写,比如高通芯片使用Qfile工具进行烧写。

以上是老韩关于嵌入式Linux开发环境搭建的知识分享,欢迎大家再下方留言讨论!



推荐阅读
author-avatar
ke天天_809
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有