当前位置: 技术问答>linux和unix
uClinux编译后的文件?
来源: 互联网 发布时间:2015-09-18
本文导语: 我编译uClinux后得到5个文件: image.bin linux linux.data linux.text romfs.img 他们分别是代表什么啊? | romfs.img:这个文件是通过tools/romfs-inst.sh脚本,生成romfs目录及其下面的文件,然后通过...
我编译uClinux后得到5个文件:
image.bin linux linux.data linux.text romfs.img
他们分别是代表什么啊?
image.bin linux linux.data linux.text romfs.img
他们分别是代表什么啊?
|
romfs.img:这个文件是通过tools/romfs-inst.sh脚本,生成romfs目录及其下面的文件,然后通过genromfs程序打包成一个文件romfs.img。romfs.img既可以放在Flash中,也可以放在RAM中,但需要在编译内核时在driver/block/blkmem.c里指定地址,以便内核找到。
linux.text:编译后的内核中text段,一般放在Flash中,只读。
linux.data:编译后的内核中data、init段,一般放在SDRAM中,读写。
image.rom:通常image.rom的文件大小要比image.ram小很多,这是因为image.rom是一个压缩过的内核,前面加上一个小的解压程序负责把内核解压后搬到指定位置。这个文件可以直接烧进Flash中,当然也可以在RAM中运行。这个文件实际上就是通常Linux生成的zImage文件。
image.ram:这个内核没有压缩过,而且必须在RAM里运行。所以需要通过板子上的Bootloader将它下载到指定位置后开始执行。相对image.rom而言,从RAM里启动内核,则代码段和数据段都在RAM里面。这个文件是编译生成的ELF格式的Linux内核,通过arm-elf-objcopy工具生成的二进制映像文件。可以这样形象的说:image.rom = gunzipprogram + gzipped(image.ram)。
boot.rom:其实就是uClinux编译完成后的文件images/romfs.img,可以看一下它就是一个连接。
image.bin:上面三个文件顺序连接而生成的,image.bin = linux.text + linux.data + romfs.img。
linux.text:编译后的内核中text段,一般放在Flash中,只读。
linux.data:编译后的内核中data、init段,一般放在SDRAM中,读写。
image.rom:通常image.rom的文件大小要比image.ram小很多,这是因为image.rom是一个压缩过的内核,前面加上一个小的解压程序负责把内核解压后搬到指定位置。这个文件可以直接烧进Flash中,当然也可以在RAM中运行。这个文件实际上就是通常Linux生成的zImage文件。
image.ram:这个内核没有压缩过,而且必须在RAM里运行。所以需要通过板子上的Bootloader将它下载到指定位置后开始执行。相对image.rom而言,从RAM里启动内核,则代码段和数据段都在RAM里面。这个文件是编译生成的ELF格式的Linux内核,通过arm-elf-objcopy工具生成的二进制映像文件。可以这样形象的说:image.rom = gunzipprogram + gzipped(image.ram)。
boot.rom:其实就是uClinux编译完成后的文件images/romfs.img,可以看一下它就是一个连接。
image.bin:上面三个文件顺序连接而生成的,image.bin = linux.text + linux.data + romfs.img。