嵌入式开发,如何将应用程序烧入文件系统的Flash中。

时间:2022-08-20 20:12:08
小弟刚刚涉及嵌入式开发,单位让我消化一下“EV533嵌入式DSP模块用户指南”,我看了半天在“第十章 用户如何进行二次开发”中遇到如下疑问,其中描述如下:
2.uClinux环境下开发
EV533模块随机光盘中包括GCC编译环境和文件系统,用户开发uClinux环境
下的应用程序应遵循以下步骤。
1)安装GCC编译环境
请参考第五章第1节安装编译环境。
2)开发应用程序
用户开发自己的应用程序,并使用安装好的bfin-uclinux-gcc编译器进行编
译。
3)下载应用程序
用户应用程序开发完毕后,可以使用tftp或者lrz/lsz工具将应用程序下载
到板子的/var/tmp/目录,然后直接执行该应用程序即可。注意板子上文件系统
是只写的,只有/var/tmp目录是可以写的。所以应用程序只能下载到/var/目录
下。Lrz/lsz是一种基于ZMODEM协议的通过串口传输数据的工具软件。使用方法
如下:首先在板子上运行“lrz”命令,然后在minocom或者超级终端选择发送文
件,传输协议选择“ZMODEM”即可。相反,在板子上使用“lsz file”命令则可
以将板子上的文件file传输到PC机上。
4)烧写应用程序
用户对应用程序调试完成后需要将程序烧写到板子flash中。
 

我有这些疑问:1:/var/tmp/目录到底是Flash上的还是SDRAM上的还是通过网络文件系统映射到PC上的,这个在“指南”中并没有提及,各位可否根据经验判断一下。
2:应用程序调试完成后需要将其烧写至板子Linux系统的文件系统下的FLASH某位置,是不是,那么如何操作?这个好像和Linux内核烧写不一样的吧,Linux内核的烧写和文件系统没有关系,而应用程序的烧写应该是和文件系统有关的。
3:/var/tmp/目录如果就是Falsh上的那么是否可以不用再烧写应用程序了,也就是断电也不用再重新下载了。

5 个解决方案

#1


1、/var/tmp是板子上的系统的目录,即Flash上的。参考你下面讲的那个串口传输工具就知道。可能在传输时需要指定目录,具体要看命令的说明。
2、是的,需要烧写到linux的文件系统中。至于如何操作,难道手册真的没有涉及?我以前的经验是这样的:做好文件系统(包括了必要的文件及你的程序),压缩成一个镜像文件,使用boot loader提供的命令来下载(烧写)到板子的flash中。其中boot loader及命令使用由开发商提供。
3、理论上是可以的。我没有试过。

我试过的文件系统是YAFFS2,是可读写的。

#2


感谢subfate的热心回复。
“做好文件系统(包括了必要的文件及你的程序),压缩成一个镜像文件,使用boot loader提供的命令来下载(烧写)到板子的flash中。其中boot loader及命令使用由开发商提供。”
这里的文件系统包括内核吗,还是内核和文件系统分别烧入flash。

#3


谢谢subfate。在您的提示在找到了这样一段文字:
“将应用程序拷贝到linux_image_533/romfs/目录下,用户也可以在romfs下面建立自己的目录。
执行命令./autoimg生成新的内核和文件系统映像,生成的文件名字为uImage。”

#4


autoimg命令是什么意思呀?Linux中有这个命令吗?

#5


回2楼问题:
文件系统(更确切的应该是“根文件系统”)跟内核是分开的,根文件系统需要内核的支持,开发商提供的内核默认配置应该已经支持了。两者是需要分开下载到板子上的(以我的实践经历)。方法手册应该会有说明。

回3、4楼问题:
执行命令./autoimg生成新的内核和文件系统映像
--我不知道是分别生成内核、根文件系统映像还是只生成一个叫uImage的文件。我暂时假设后者。
生成了uImage后,就可以下载到板子上了(具体操作看手册)。

用户也可以在romfs下面建立自己的目录
这句话是关键,就是说,你可以将你自己的程序放到“自己的目录”中了。不过,这个目录一般要遵循一定的约定(更专业的,请搜索“linux FHS”),就是建立些什么目录,每个目录是干什么的,这个开发商应该已经提供了,因此可以它的基础上添加你的程序,就很简单了。

autoimg应该是一个脚本,你可以使用cat命令或编辑器查看,里面就是一系列的命令而已。

祝好。

#1


1、/var/tmp是板子上的系统的目录,即Flash上的。参考你下面讲的那个串口传输工具就知道。可能在传输时需要指定目录,具体要看命令的说明。
2、是的,需要烧写到linux的文件系统中。至于如何操作,难道手册真的没有涉及?我以前的经验是这样的:做好文件系统(包括了必要的文件及你的程序),压缩成一个镜像文件,使用boot loader提供的命令来下载(烧写)到板子的flash中。其中boot loader及命令使用由开发商提供。
3、理论上是可以的。我没有试过。

我试过的文件系统是YAFFS2,是可读写的。

#2


感谢subfate的热心回复。
“做好文件系统(包括了必要的文件及你的程序),压缩成一个镜像文件,使用boot loader提供的命令来下载(烧写)到板子的flash中。其中boot loader及命令使用由开发商提供。”
这里的文件系统包括内核吗,还是内核和文件系统分别烧入flash。

#3


谢谢subfate。在您的提示在找到了这样一段文字:
“将应用程序拷贝到linux_image_533/romfs/目录下,用户也可以在romfs下面建立自己的目录。
执行命令./autoimg生成新的内核和文件系统映像,生成的文件名字为uImage。”

#4


autoimg命令是什么意思呀?Linux中有这个命令吗?

#5


回2楼问题:
文件系统(更确切的应该是“根文件系统”)跟内核是分开的,根文件系统需要内核的支持,开发商提供的内核默认配置应该已经支持了。两者是需要分开下载到板子上的(以我的实践经历)。方法手册应该会有说明。

回3、4楼问题:
执行命令./autoimg生成新的内核和文件系统映像
--我不知道是分别生成内核、根文件系统映像还是只生成一个叫uImage的文件。我暂时假设后者。
生成了uImage后,就可以下载到板子上了(具体操作看手册)。

用户也可以在romfs下面建立自己的目录
这句话是关键,就是说,你可以将你自己的程序放到“自己的目录”中了。不过,这个目录一般要遵循一定的约定(更专业的,请搜索“linux FHS”),就是建立些什么目录,每个目录是干什么的,这个开发商应该已经提供了,因此可以它的基础上添加你的程序,就很简单了。

autoimg应该是一个脚本,你可以使用cat命令或编辑器查看,里面就是一系列的命令而已。

祝好。