达芬奇平台编写hello world程序
来源:互联网 发布:淘宝pc海报尺寸 编辑:程序博客网 时间:2024/05/18 11:07
实验室的达芬奇平台早就搭建好了,自己机器通过以太网与服务器通信,服务器与板子使用串口进行程序调试,他们的文件系统也需要以太网来进行nfs服务。刚刚接触,学会了使用该平台进行简单的交叉编译,整理一下,供实验室以后的同学参考。一些细节的地方还需要高手指点一二。
安装SecureCRT 5.1 或其他远程登陆软件,该软件在服务器上可以下载(192.1.12.2)自己可以去网上下载。之后需要管理员给定一个帐号,使用软件登陆服务器。假设建立用户testkevin,密码自定。拥有该用户名和密码的人可以使用SecureCRT 5.1登陆服务器,但是要进行交叉编译还要进行其他设定。首先,该用户在服务器上的linux系统中的权限十分有限,只能操作自己目录下的文件,所以要将其的权限扩大,使得其在使用其他不属于他的权限是只要输入:sudo xx就可以了。使用root登陆(或其他被开放的用户),修改/etc/sudoers中部分代码。
在# User privilege specification
root ALL=(ALL) ALL
# Uncomment to allow people in group wheel to run all commands
加入 testadd ALL=(ALL) NOPASSWD:ALL
其中在root后面会发现其他用户名,就是以前拥有这样权限的用户。改完保存退出即可。
这样,该用户具有了root除了修改密码的所有权限,只是一些命令需要加上sudo而已。可以方便的使用服务器上的系统还不行,要到板子上跑程序,需要将服务器上的程序挂载到板子上,再通过minicom(与windows中的超级终端相类似)进行调试。挂载就需要打开nfs服务。使用root用户,或是testadd等其他用户sudo修改/etc/exports中的代码。
在最后增加 /home/testadd *(rw,no_root_squash)
表明在服务器上的该目录下的文件可以进行nfs挂载。改完保存退出。下面需要打开nfs服务。
在testadd用户下键入如下命令:
sudo /etc/init.d/portmap start 会得到:Starting portmapper: [ OK ]的提示
sudo /etc/init.d/nfs start 会得到:Starting NFS services: [ OK ]
Starting NFS quotas: [ OK ]
Starting NFS daemon: [ OK ]
Starting NFS mountd: [ OK ]的提示,此时nfs打开成功。
打开成功后,输入:sudo minicom便可打开串口调试。部分提示信息如下:
NET: Registered protocol family 2
IP: routing cache hash table of 512 buckets, 4Kbytes
TCP: Hash tables configured (established 2048 bind 4096)
NET: Registered protocol family 1
NET: Registered protocol family 17
IP-Config: Incomplete network configuration information.
RAMDISK: Compressed image found at block 0
EXT2-fs warning: checktime reached, running e2fsck is recommended
VFS: Mounted root (ext2 filesystem).
Freeing init memory: 108K
(注意:一些原因使得不进行,请重启开发板)。
刚进入板子是没有ip的需要对其进行ip设置,才能nfs挂载。
ifconfig eth0 192.1.12.123配置ip。再ping一下服务器:
ping -c 3 192.1.12.2(注意-c 3表示ping三次,否则就没完没了了),得到提示:
64 bytes from 192.1.12.2: icmp_seq=0 ttl=64 time=6.1 ms
64 bytes from 192.1.12.2: icmp_seq=1 ttl=64 time=0.5 ms
64 bytes from 192.1.12.2: icmp_seq=2 ttl=64 time=0.5 ms
--- 192.1.12.2 ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max = 0.5/2.3/6.1 ms
证明二者已经以太网连接了,可以进行nfs挂载了。
建立一个临时目录:mkdir testadd。然后挂载:mount 192.1.12.2:/home/testadd testadd 提示信息:
RPC: sendmsg returned error 101
portmap: RPC call returned error 101
RPC: failed to contact portmap (errno -101).
RPC: sendmsg returned error 101
portmap: RPC call returned error 101
RPC: failed to contact portmap (errno -101).
lockd_up: makesock failed, error=-101
RPC: sendmsg returned error 101
portmap: RPC call returned error 101
RPC: failed to contact portmap (errno -101).
再ls即可看到:/mnt # ls
testadd 也就是将位于服务器上的testadd挂载到板子上了。怎么证明是正确的呢?我们再打开一个窗口,使用testadd在服务器上建立一个hello world程序。
在testadd目录下:vi helloworld.c,输入程序:
#include <stdio.h>
int main()
{
printf("Hello World!/n");
return 0;
} 保存退出。再编译:arm-linux-gcc helloworld.c -o testhello,此时ls就会发现在服务器上的testadd中是这样的:
helloworld.c testhello
回到minicom中,也ls:
helloworld.c testhello也是一样的,并执行:./testhello,结果会出现:
Hello World!
编译成功。在切换窗口的过程中会切身感受到什么是交叉编译!
注意由于使用的是arm-linux-gcc ,在服务器上执行testhello是不会成功的,如果用gcc就可以了。
退出minicom后,需要关闭nfs:
sudo /etc/init.d/nfs stop 提示信息:
Shutting down NFS mountd: [ OK ]
Shutting down NFS daemon: [ OK ]
Shutting down NFS quotas: [ OK ]
Shutting down NFS services: [ OK ]
再输入:
sudo /etc/init.d/portmap stop 提示信息:
Stopping portmapper: [ OK ]
完成。
- 达芬奇平台编写hello world程序
- 用Python编写运行Hello World程序
- 用Eclipse编写Hello World程序
- 关于android hello world程序的编写
- 用Python编写运行 Hello World程序
- yaf框架下编写Hello World程序
- 用Python编写hello world程序
- Vi编辑器编写Hello World程序
- LINUX C编写一个hello world!程序
- C语言编写cgi程序hello world
- spring编写hello world
- hello world编写
- as编写hello,world
- c编写hello world
- 使用C#编写不同的"Hello World"程序(转)
- [转载] 使用C#编写17种Hello World程序
- 使用C#编写17种Hello World程序
- 39种语言编写的Hello World程序
- [PB]框架的问题
- MFC六大关键技术之(五)(六)——消息映射与命令传递
- MFC六大关键技术(第四部分)——永久保存(串行化)
- 让“动态创建”、“静态创建”、“动态内存分配”、“动态联编”真相大白
- 追根究底,MFC六大关键技术剖析(第三部分)
- 达芬奇平台编写hello world程序
- 追根究底,MFC六大关键技术之剖析(第二部分)
- Jawin –Java/Win32互动项目:可调用DLL及COM的调用项目
- 追根究底,剖析MFC六大关键技术(第一部分)
- 什么是web 2.0
- java AOP实现以及java.lang.reflect对AOP的支持
- WOJ刷不动了,改刷POJ吧
- HTML
- 一个简单示例:利用jawin完成调用window中dll的调用