第2课 在开发板上运行程序

2.1 准备工作

在第一课的基础上,还要做一些准备工作,

第一,需要在Windows上安装一个软件“SecureCRT”和一个驱动“绿联USB-RS232”,SecureCRT是一款用于连接运行Windows和Linux的理想工具,安装以及破解教程参照链接https://www.cnblogs.com/qingtingzhe/articles/5008902.html

“绿联USB-RS232“是一款USB转RS232串口的驱动,在本次实验中,主要利用开发板的串口向计算机发送数据,达到显示的目的(因为开发板没有显示器)。

第二,需要在ubuntu上安装tftp服务。具体步骤如下:

1)安装tftp-hpa,tftpd-hpa

sudo apt-get install tftp-hpa tftpd-hpa

tftp-hpa是client,tftpd-hpa是server

2) 配置tftpd-hpa

sudo gedit /etc/default/tftpd-hpa

TFTP_USERNAME="tftp"

TFTP_DIRECTORY="/tftpboot"       此目录为tftp的工作目录,可以根据需要来设置。

TFTP_ADDRESS="0.0.0.0:69"

TFTP_OPTIONS=" -l -c -s“

其中,TFTP_DIRECTORY="/tftpboot",此目录为tftp的工作目录,可以根据需要来设置。

3)设置tftpboot文件夹的权限

sudo chmod 777 /tftpboot

4)重启tftpd-hpa服务

sudo service tftpd-hpa restart

 

表示重启成功。

ps -ef |grep tftp  能看到tftpd-hpa进程

 

5)测试

在tftpboot目录下建立a.txt,在其他目录下(注意是当前用户可以操作的目录,否则get是会提示permission denied)建立b.txt:

接下来在b.txt所在的目录下执行:

tftp localhost

tftp>get a.txt //下载tftproot中的文件

tftp>put b.txt //上传到tftproot中

tftp>quit //离开

执行完以上代码后,可以在b.txt所在的目录中看到a.txt文件;在·tftpboot下看到b.txt文件,那么tftp服务就安装完成了。

2.2 第一个uClinux程序

首先在/work/uClinux-dist/user/目录下建一个scu的文件夹。

 

修改user目录下的Makefile文件,

 

在该Makefile里增加dir_y+=scu,如下图

 

在scu目录下创建一个hello.c文件,

 

在文本编辑框里输入一个简单的C语言程序,比如打印输出一个Hello,uClinux!如下图,写完以后保存,退出。

 

在scu目录下创建一个Makefile文件,

 

在Makefile里编写如下的代码

 

其中注意命令要有一个TAB键的距离。完成以后保存退出。

然后,进入/work/uClinux-dist目录下,执行以下语句,仅编译应用程序。

 

其次安装文件到/work/uClinux-dist/romfs,执行下语句。

 

为应用程序创建一个镜像,

 

完成以上步骤以后,完成了第一个uClinux应用程序,接下来就需要和开发板联合起来测试了。

2.3 程序下载

硬件系统如下图,连接方式是将串口线和双绞线将电脑和开发板连接起来,双绞线应插在LAN口。

 

第一,设置Linux的网络,按照步骤以及相应的数据填写进去,保存就行了。

 

 

第二,更改Windows的网络设置,进入控制面板->网络和internet->网络连接,如下图。应该选择计算机网卡所在的以太网,下图红框标注的以太网,并打开该以太网的属性。

 

接下来的设置下图的步骤,按照下图进行,其中IP地址“192.168.0.x”,x代表你想设置的值,只要不冲突。设置完,确定。做完该实验以后,如果想要恢复internet网络连接,需要设为“自动获得IP地址(O)”,不然连不上网,也就是说要恢复现场。

 

第三,修改虚拟机的设置,虚拟机->设置,硬件选项卡下的网络适配器,选择桥接模式,如下图。做完该实验以后,将虚拟机的网络连接手动恢复成NAT模式。

以上步骤完成了以后,将目标版和计算机连接起来,此时打开计算机的设备管理器,查看端口号,如下图所示,是COM5,右键点开COM5的属性,设置成38400,8,无,1和无。点击确定,退出设备管理器。

 

打开SecureCRT软件,红框里面的设置要和上面的对应一致。点击“Connect”,

 

回到Ubuntu系统,重启tftp服务和关闭防火墙。

sudo service tftpd-hpa restart

sudo ufw disable

给开发板上电,并立刻按下任意键,鼠标指针停在rtlcboot>后,执行下面语句,用TFTP将应用程序的映像下载到开发板,

tftp 20000 zRomfs

如果成功了,会给出zRomfs的大小,比如会有“Bytes transferred = 199511(30b57 hex)”,如果失败了,会一直有“ARP broadcast 1,2,3……”;解决的办法,回到ubuntu系统,重启tftp服务,然后ping一下:ping 192.168.0.222是否通的,然后再进行开发板上电。

 

应用程序的映像下完以后,将程序映像写到开发板里,执行下面这条语句:

fburn 20000 fff70000 30b57

30b57是zRomfs的大小,每个人的都可能不一样,根据第一条语句末尾的给出的大小来改。

执行完以后,转到ffff0000地址里去:

go ffff0000

接下来执行 cd bin

用ls查看bin里面的文件,清楚的看到有hello这一个可执行的文件,运行hello,也就是:./hello

打印输出了“Hello,uClinux!“,正是我们在之前hello.c里面编写输出的内容。

 

至此,整个过程就圆满结束了。

2.4 总结

整个过程是纷繁复杂的,我也是一步步的进坑、出坑,进陷阱、爬陷进过来的,心态都搞崩,但当结果出来的时候,好像什么痛苦都没经历过似的心里狂喜。我把它写的比较详细,整个过程一步一步走下来,是没有什么问题的,以后再看,再做就简单许多。

posted on 2018-03-16 21:00  Liu_Farrell  阅读(2851)  评论(0编辑  收藏  举报

导航