2.1 准备工作
在第一课的基础上,还要做一些准备工作,
第一,需要在Windows上安装一个软件“SecureCRT”和一个驱动“绿联USB-RS232”,SecureCRT是一款用于连接运行Windows和Linux的理想工具,安装以及破解教程参照链接
“绿联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 总结
整个过程是纷繁复杂的,我也是一步步的进坑、出坑,进陷阱、爬陷进过来的,心态都搞崩,但当结果出来的时候,好像什么痛苦都没经历过似的心里狂喜。我把它写的比较详细,整个过程一步一步走下来,是没有什么问题的,以后再看,再做就简单许多。