第7章 嵌入式uClinux及其应用开发(2)(8)

2019-05-18 21:41

中加入类似下面的语句块:

CONFIG_USER_ MYAPP_LEDNXY This program is an example.

注意第二行文本信息必须要空两格开始。每行的字符要小于70个。添加完毕后,保存退出。

不过,用户也可不必修改该文件,因为它仅仅是提供一个在线文本信息显示的功能,对于添加用户程序到uCllinux影响不大。 接下来需要修改uClinux系统中对编译器来讲比较重要的一个文件config.in。

仍然是在config目录下,打开该文件,在最后增加类似下面的语句:

#################################################################

mainmenu_option next_comment comment ? My Application ?

bool ?lednxy? CONFIG_USER_MYAPP_LEDNXY

comment ? My Application? endmenu

#################################################################

现在我们已经把要做的修改的相关工作完成了,接下来需要进行内核的编译工作,按照在7.3.3 中谈到的编译uClinux内核的步骤进行就可以了。 值得注意的一点是在第一步make menuconfig 进行内核配置的时候,在Target Platform Selection ,要选中Customize Vendor/User Settings (NEW) 如图7.10所示,选中了该选项后,与最初我们配置内核过程不同的是,它还会在 make menuconfig的最后出现如图7.11所示对话框,让你进

行用户应用程序的配置,在对话框里出现的文字是在config.in文件中添加的文字,选中要编译的应用程序所在路径,就会出现如图7.12所示的对话框,显示所选中目录下的,在config.in中所设定的应用程序文件名,选中要编译的文件名,保存好内核配置后退出。用这种方法生成的可执行文件在romfs/bin下。

图7.10 添加用户应用程序配置

图7.11 选择要配置的用户应用程序

图7.12 选择要编译的源文件

当用户应用程序做了修改后,需要重新编译内核,但是此时只要进行内核编译的后四步,即从make user_only开始即可,不必再从内核配置开始了。

以上介绍的是一种基本的添加用户应用程序的方法,如果读者觉得比较麻烦,还可以使用下面一种较为简单的方法,这种方式是将用户的应用程序作为uClinux自身的应用程序对待,在内核编译时一起完成。

在uClinux-Samsung/romfs/usr下面编写用户应用程序源代码以及它对应的makefile文件,就在该目录下编译这个makefile文件,将生成的可执行文件拷贝到uClinux-Samsung/romfs/bin下。

进行内核的部分编译工作,用这种方法只需要做编译内核的最后三步工作,即:

make romfs make iamge make

最后都把在uClinux-Samsung/images下生成的image.rom文件烧写到系统的FLASH存储器中,uClinux启动后,用户的应用程序在/bin目录下,此时可运行用户程序。

在Windows环境中,可以使用超级终端建立串口与目标硬件连接。超级终端的一些端口属性需要设置,该内核默认的端口设置为:COM1,波特率为19200,数据位为8,无校验,停止位为1,无流控。通过超级终端可以看到整个uClinux的启动过程。

对于本例,在uClinux启动后,从超级终端中键入cd bin,进入到bin目录下,运行lednxy程序,可以看到该程序对两个LED显示器的控制效果。 上面介绍的方法中,在将用户应用程序添加到uClinux内核运行时,都需要对内核进行部分或全部的编译,每次对内核编译完成后,都要先将FLASH存储器中的内容擦除,然后重新烧写新编译好的内核到FLASH存储器中去,这对于程序开发来说,是非常不方便的。下面介绍一种通过网络来传输可执行文件,避免每次测试程序运行效果时都要编译一次内核。 7.4.4 通过网络添加应用程序到目标系统

作为一款优秀的网路控制器,基于S3C4510B的系统一般都提供以太网接口,通过以太网接口从网络添加用户程序到目标系统运行,显然比前面所介绍的方法方便得多,特别是在用户应用程序的调试过程中,若每做一点修改都要求重新编译内核并烧写入FLASH存储器运行,其工作量是可想而知的。

事实上,鉴于uClinux操作系统本身强大的网络功能,同时基于

S3C4510B的系统提供以太网接口,通过局域网可方便的在运行uClinux目标系统和运行Linux宿主机上进行文件传输。运行目标系统的uClinux内核在编译的过程中,已默认选择了FTP和其他一些网络服务,同时,宿主机上的Linux在默认时,也会安装运行FTP 服务,因此,当目标系统的uClinux启动运行以后,可将目标系统作为FTP客户端,而运行Linux宿主机作为FTP服务器,进行双向的文件传输。

但由于目前所使用的uClinux操作系统内核采用ROMFS作为其根文件系统,当目标系统的uClinux启动运行以后,其目录大多数是建在FLASH存储器中,因而是不可写的,只有/var、/tmp等少数几个目录是建立在SDRAM,是可读写的,但若目标系统掉电,内容就丢失了,因此只能作为应用程序调试之用,当应用程序调试完成后,还应将其写入FLASH存储器。当然,若能在目标系统中使用JFFS/JFFS2,用以代替ROMFS作为其根文件系统,则整个目标系统就像有磁盘一样方便,用户应用程序的加载再也不用像前面介绍的方式进行了。关于JFFS/JFFS2文件系统的建立,请读者参考相关技术资料,在此仅描述如何将用户程序通过局域网,从FTP服务器(运行Linux宿主机)上,传输到运行uClinux的目标系统(FTP客户机)并执行的过程: 将目标系统与Linux宿主机连接在同一网段中,在宿主机的任意目录下编写应用程序,并用交叉编译工具生成flat格式的文件。

启动目标系统的uClinux,通过超级终端,输入下面的命令: ifconfig eth0 192.168.100.50

ifconfig命令用于显示及设置目标系统的网卡配置,例如,IP地址,子网掩码,IRQ及IO Port等。在上述命令中,参数eth0代表目标系统的网络设备,IP地址192.168.100.50为目标系统的IP地址,注意应与宿主机在同一网段内(此时宿主机的IP地址为:192.1681.100.21)。

执行命令: ifconfig –all

可以看到目标系统的IP地址已被正确配置,显示信息如下:

/var/tmp> ifconfig -all

eth0 Link encap:Ethernet HWaddr 00:40:95:36:35:34

inet addr:192.168.100.52 Bcast:192.168.100.255 Mask:255.255.255.0 UP BROADCAST RUNNING MTU:1500 Metric:1 RX packets:30533 errors:10 dropped:0 overruns:0 frame:0 TX packets:21090 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100 Interrupt:17

lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0

UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:19 errors:0 dropped:0 overruns:0 frame:0 TX packets:19 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0


第7章 嵌入式uClinux及其应用开发(2)(8).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:分子克隆实验标准步骤

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: