嵌入式Linux内核编译求解!!!!!
本人菜鸟,学习到Linux内核编译的时候,有些问题不解,还请指教,谢谢!cross-3.3.2.tar.bz23.3.2版本的armgcc交叉编译工具,一般我们使用它编译...
本人菜鸟,学习到Linux内核编译的时候,有些问题不解,还请指教,谢谢!
cross-3.3.2.tar.bz2 3.3.2版本的arm gcc交叉编译工具,一般我们使用它编译linux2.6.x版本的内核源码,假设现在使用cross-3.3.2编译linux2.6.28的内核。Linux内核编译经过内核配置,建立依赖关系,创建内核映像这几个步骤后,用make zImage会生成一个zImage的可执行内核映像文件,
这个文件可以直接下载到开发板上运行是吗?
既然是内核映像,那么开发板如果运行这个文件,是不是说开发板的操作系统内核随即也改变了,也就是变成编译过的linux2.6.28的内核?
zImage文件用来做什么的?下载到开发板里面有什么作用了?
还请详解,谢谢!!!! 展开
cross-3.3.2.tar.bz2 3.3.2版本的arm gcc交叉编译工具,一般我们使用它编译linux2.6.x版本的内核源码,假设现在使用cross-3.3.2编译linux2.6.28的内核。Linux内核编译经过内核配置,建立依赖关系,创建内核映像这几个步骤后,用make zImage会生成一个zImage的可执行内核映像文件,
这个文件可以直接下载到开发板上运行是吗?
既然是内核映像,那么开发板如果运行这个文件,是不是说开发板的操作系统内核随即也改变了,也就是变成编译过的linux2.6.28的内核?
zImage文件用来做什么的?下载到开发板里面有什么作用了?
还请详解,谢谢!!!! 展开
2012-08-04
展开全部
本人也是试验中的菜鸟一枚,有些经验还有理解大家分享。
你说的这些步骤,是开发板移植或者产品移植过程中的一环,移植,就是把PC上编写好的,已经可以完成功能的程序编程开发板芯片,你用的是arm的芯片,那就是用arm的指令系统可以辨认执行的文件。
zimage是内核映像的image文件的压缩版,主要减少映像大小。如果是用pc机的编译系统编译出来,就是能在PC机上运行的linux内核,OS,放在开发板上,也是一样的功用。
至于开发板内核会不会变,应该说你每一次烧入一个内核的时候,效果都相当于对PC机进行了一次系统重装,系统肯定是会变的,变成了你烧录进去的编译好的linux2.6.28.这一点可以肯定。但是是不是变得和以前不一样就不一定了,也许内核的文件从头到尾都是一个,更有可能的是你手上就没有出厂时烧入的内核程序,人家没给你,那么你除非不烧,掠过内核的部分永远不变,只改变文件系统,那么内核肯定是会变的。另外对内核改变不需要太犹豫,没有那块开发板上的文件从头到尾没变过的,内核文件也一样,会有这种情况的只有出厂产品。开发板就是大胆折腾,才能把开发板玩好。
系统内核用zimage这样的形式,是深层的原因是因为节省固化flash空间,还是有利于cpu内部结构运行,没有研究过。
zimage不是直接下到板子里就能运行的,配置的问题先不说,启动不是直接从zimage启动的,因为这个是压缩文件,至少要解压之后才能使用。
但是实际上用的也不是zimage映像文件。而是uimage文件。zimage和uimage差不多。
uimage文件是用于被uboot引导的文件,是一个64K的文件头和一个zimage文件组成的。
从编译角度来说,现在手上的内核的创建映像的makefile文件中的目标似乎是一口气把这几个映像文件都生成了。单独使用make uimage也能生成uimage映像文件。但既然uimage是从zimage转化而来,那么应该是必须先要编译出了zimage才能有uimage文件生成。
有了uimage文件后,就要有uboot文件,有的板子因为搬运和运行的操作流程,还会有一级bootstrap,这是因为内部ram大小决定的。uboot是为了必要的硬件初始化和引导内核和文件系统而存在的,uboot将内核需要的软件和硬件环境都配置好了之后,将内核复制解压到内存中,并跳转到内存里内核的入口,将操作权交给内核。内核正是启动,配置无误后挂载文件系统。
如果这些程序都完成,那么开发板就可以运行起来了。
很不幸,我现在还没有搞定。
但是如果你不需要移植,只是要运用一个配置好的开发板,那么你想了解的可能是这个,下载到flash中文件的名称和顺序和地址。
名称没有确定的,但是大概是这样的形式:bootloader.bin(其中包括uboot和其它形式boot,可能最初还会有bootstrap)+zimage+root.(jffs*/yaffs*/etx*)等。
烧入的地址也是要严格对应程序,或者手册说明建议中的,如果出现相互覆盖或者该有的文件不在应该的位置,那么也是不会启动成功的。
linux和嵌入式linux都不是很简单的,任重道远,共同进步吧。
你说的这些步骤,是开发板移植或者产品移植过程中的一环,移植,就是把PC上编写好的,已经可以完成功能的程序编程开发板芯片,你用的是arm的芯片,那就是用arm的指令系统可以辨认执行的文件。
zimage是内核映像的image文件的压缩版,主要减少映像大小。如果是用pc机的编译系统编译出来,就是能在PC机上运行的linux内核,OS,放在开发板上,也是一样的功用。
至于开发板内核会不会变,应该说你每一次烧入一个内核的时候,效果都相当于对PC机进行了一次系统重装,系统肯定是会变的,变成了你烧录进去的编译好的linux2.6.28.这一点可以肯定。但是是不是变得和以前不一样就不一定了,也许内核的文件从头到尾都是一个,更有可能的是你手上就没有出厂时烧入的内核程序,人家没给你,那么你除非不烧,掠过内核的部分永远不变,只改变文件系统,那么内核肯定是会变的。另外对内核改变不需要太犹豫,没有那块开发板上的文件从头到尾没变过的,内核文件也一样,会有这种情况的只有出厂产品。开发板就是大胆折腾,才能把开发板玩好。
系统内核用zimage这样的形式,是深层的原因是因为节省固化flash空间,还是有利于cpu内部结构运行,没有研究过。
zimage不是直接下到板子里就能运行的,配置的问题先不说,启动不是直接从zimage启动的,因为这个是压缩文件,至少要解压之后才能使用。
但是实际上用的也不是zimage映像文件。而是uimage文件。zimage和uimage差不多。
uimage文件是用于被uboot引导的文件,是一个64K的文件头和一个zimage文件组成的。
从编译角度来说,现在手上的内核的创建映像的makefile文件中的目标似乎是一口气把这几个映像文件都生成了。单独使用make uimage也能生成uimage映像文件。但既然uimage是从zimage转化而来,那么应该是必须先要编译出了zimage才能有uimage文件生成。
有了uimage文件后,就要有uboot文件,有的板子因为搬运和运行的操作流程,还会有一级bootstrap,这是因为内部ram大小决定的。uboot是为了必要的硬件初始化和引导内核和文件系统而存在的,uboot将内核需要的软件和硬件环境都配置好了之后,将内核复制解压到内存中,并跳转到内存里内核的入口,将操作权交给内核。内核正是启动,配置无误后挂载文件系统。
如果这些程序都完成,那么开发板就可以运行起来了。
很不幸,我现在还没有搞定。
但是如果你不需要移植,只是要运用一个配置好的开发板,那么你想了解的可能是这个,下载到flash中文件的名称和顺序和地址。
名称没有确定的,但是大概是这样的形式:bootloader.bin(其中包括uboot和其它形式boot,可能最初还会有bootstrap)+zimage+root.(jffs*/yaffs*/etx*)等。
烧入的地址也是要严格对应程序,或者手册说明建议中的,如果出现相互覆盖或者该有的文件不在应该的位置,那么也是不会启动成功的。
linux和嵌入式linux都不是很简单的,任重道远,共同进步吧。
力控科技
2024-08-19 广告
2024-08-19 广告
ForceSCADA是力控科技信创产品的重要组成部分,具备完全自主知识产权,支持部署在Linux桌面版、服务器版、嵌入式等系统架构下。使用ForceSCADA可以搭建创新性高、扩展性佳、融合度强的SCADA平台,进而构建高效、智能化的监控中...
点击进入详情页
本回答由力控科技提供
展开全部
zImage 可以下载到板上,但是没办法运行.这个东西就是内核本身来的.
要想让zImage跑起来只可以通过u-boot的引导.
zImage就是内核.
要想让zImage跑起来只可以通过u-boot的引导.
zImage就是内核.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
zimage就是linux内核。下载内核是通过boot程序下载的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询