开发者社区> 刘洪峰iot> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

嵌入式Linux编程--我的第一次艰难跋涉

简介: 其实从很早我就想深入学习Linux,但时间有限,并且Linux门槛挺高,不是很容易上手。最近由于隧道项目中用到嵌入式Linux(Arm CPU上的Linux),并且提供硬件的单位针对Linux的编程收费很高,并且时间很长,所以犹豫再三,决定开始深入学习Linux,并在学习过程中完成预定的任务。
+关注继续查看

其实从很早我就想深入学习Linux,但时间有限,并且Linux门槛挺高,不是很容易上手。最近由于隧道项目中用到嵌入式LinuxArm CPU上的Linux),并且提供硬件的单位针对Linux的编程收费很高,并且时间很长,所以犹豫再三,决定开始深入学习Linux,并在学习过程中完成预定的任务。

没有想到,在嵌入式Linux上运行一个最简单的“Hello Liunx”程序就费了很大的周折,不过功夫不负有心人,经过几天的艰难跋涉,总算成功了,下面我把我的历程说一下,给后来人有个参考。

要想在嵌入式Linux运行程序,需要有下面几个问题解决:

1、  需要一个基于Armgcc交叉编译器;

2、  需要WindowsVPC上的Linux进行交互,以便交换文件;

3、  嵌入式Linux系统需要和VPC上的Linux系统或Windows系统进行交互,以便交互文件;

 

第一个问题,相对比较容易解决,直接和中间厂商要来了cross-2.95.3.tar.bz2 安装包,这是一款基于Arm平台上的交叉编辑器。直接解压到任意目录即可。

第二个问题,有些棘手,查了若干资料,终于找到可行的办法。

1、  Windows XP建一个共享文件夹,如“share

2、  虚拟机运行起来后,在Linux命令行方式输入:smbmount //ip地址或计算机名/共享文件夹名 挂载点

3、  Ok,连接成功。

第三个问题,原想着很容易,却没有想到是最难的,中间厂商的办法如下:

采用目标板挂载NFS目录的方式进行开发

主机:NFS服务器

1、  修改配置文件etc/exports,如

/nfs/rootfs 192.168.0.X(rw,sync,no_root_squash)  //具体含义略

2、  配置其为所有用户可读,chmod 644 /etc/exports

3、  NFS服务器重新载入 etc/exports, /etc/init.d/nfs reload

4、  检查防火墙,不要屏蔽相应端口

    目标板:内核需要支持NFS

    1Enable:

     File Systems à

        Network File Systems à

          NFS file system support

          Provide NFSv3 client support

    配置完后,重新编译内核

2、目标板启动后,mount –t nfs 192.168.0.Y:/nfs/rootfs/mnt –o nolock

 

按上面一步步做了,目标板提示RPC什么错误之类,上网查资料,用Servers指令开启服务,很可惜,目标板不支持Servers指令。

最后发现目标板支持FTP服务器,总数找到一个救命稻草,不过很可惜,用户密码未知,问了中间厂商,用户和密码仍然错误,最后打了n次电话,告诉可以在目标板上添加新用户,然后再登录FTP

很恐怖的是,书本上教的useradd竟然没有,后来查看目标板bin上的文件,原来是adduser命令,添加上用户,果然可以登录了。不过linux上的FTP客户端不好使,Windows自带的也不行,只好下了个FlashFXP软件,还可以。

 

在虚拟机的Liunx系统编写如下程序:

#include <stdio.h>

int main(int argc,char **argv)

{

   printf("hello linux/n");

}

编写Makefile文件

all:tt

tt: test.c

       /usr/local/arm/2.95.3/bin/arm-linux-gcc -o  tt test.c

clean:

       -rm -rf tt

在命令行运行Make指令,生成tt文件

 

tt文件通过FTP客户端拷贝到目标板上。

开始直接输入[root@()]$tt 没有反应,查资料,发现原来要这样(如下),为什么?暂时不知道!

[root@()]$ ./tt  ,竟然有错误提示,提示内容如下:-sh./tt:Permission denied

上网查资料说是权限不够,需要运行如下指令:chmode 777 tt

运行后,竟然告诉我,没有这个命令,最后发现原来是 chmod(看来指令的名称都被中间厂商修改了)。

运行chmod 777 tt 后,在去运行 ./tt  ^^#$^#$@&# OK ---成功了!

后记:linux的使用习惯与windows有很大的区别,linux联网需要激活网卡才能工作,运行文件需要 ./XXX格式,并且有权限的用户才能执行,类似的小问题,对一个linux菜鸟来说,真是一个又一个的拦路虎,不过到现在总算接近门槛了,对我来说,后面的路还很长,困难才刚刚开始 … … :-(

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
shell编程和部分linux高级指令
shell编程和部分linux高级指令
0 0
介绍几种LINUX编程中非常实用的调试程序宏变量
介绍几种LINUX编程中非常实用的调试程序宏变量
0 0
关于Linux SHELL 的编程的几个练习(课本182页5-10题)
关于Linux SHELL 的编程的几个练习(课本182页5-10题)
0 0
【Linux】这些是用于编程的最佳Linux发行版
您是程序员、工程师还是系统管理员,希望最大限度地利用您的计算机?然后,您需要最好的Linux发行版进行编程。我们选择Fedora是因为它突破了Linux的限制,拥有最新的开源软件。
0 0
强推Linux高性能服务器编程, 真的是后端开发技术提升, 沉淀自身不容错过的一本经典书籍
强推Linux高性能服务器编程, 真的是后端开发技术提升, 沉淀自身不容错过的一本经典书籍
0 0
Linux网络原理及编程(8)——第十八节 数据链路层
在网卡出厂时就确定了, 不能修改. mac地址通常是唯一的(虚拟机中的mac地址不是真实的mac地址, 可能会冲突; 也有些网卡支持用户配置mac地址)
0 0
Linux网络原理及编程(7)——第十七节 网络层
子网内的主机需要和外网进行通信时, 路由器将IP首部中的IP地址进行替换(替换成WAN口IP), 这样逐级替换, 最终数据包中的IP地址成为一个公网IP. 这种技术称为NAT(Network Address Translation,网络地址转换)(上面说到过)。
0 0
Linux网络原理及编程(6)——第十六节 TCP可靠性保证的原理
你在应用层上想要发送一个信息,但是我在底层可能是通过发送多次、甚至有触发了超时重传等等。而站在用户的角度呢,你不用去管它,我传输层不管怎么发,反正最终把你的数据发出去就可以了。也就是说,应用层的传输和底层传输层的并不是一对一、一一对应的关系。
0 0
Linux网络原理及编程(5)——第十五节 TCP的连接(三次握手、四次挥手)
本节我们来介绍TCP连接的建立和断开。我们主要介绍两个过程、两个状态。
0 0
Linux网络原理与编程(4)——第十四节 传输层协议
客户端认为连接已经建立成功了,所以就正常发数据。但是这个时候服务器并未建立连接,在收到数据之后,会向客户端发送一个含有RST的报文(reset),即希望客户端重新建立连接。
0 0
+关注
刘洪峰iot
网名叶帆,叶帆科技创始人兼CEO,微软(中国)前.NET Micro Framework开发团队成员,阿里云MVP,8届微软MVP,CSDN十大MVB。深度参与了阿里飞凤物联网平台的合作开发。研发了物联网智能网关、物联网智能终端,YFIOs和YFHMI等物联网中间件软硬件平台。
文章
问答
文章排行榜
最热
最新
相关电子书
更多
Decian GNU/Linux安全合规之路
立即下载
从 Linux 系统内核层面来解决实际问题的实战经验
立即下载
冬季实战营第二期:Linux操作系统实战入门
立即下载