IMX文件是NXP定义的一种启动引导文件,其中包含了真正的bin代码,和启动引导头部,imx文件是烧写到SD卡或者EMMC、Flash中用来实现启动和运行代码的文件格式,其实就是Bin文件前面加一部分其他数据,告诉芯片中的loader代码如何读取代码并运行的,在IMX6的单片机上,启动时首先IMX6中内置的ROM中的代码会启动,然后这段代码会初始化emmc、flash、sd等然后检查这些设备中的imx文件,如果检查到有效的imx文件就会启动。而不同的设备的imx文件的存储位置不一样,所以imx文件并不是固定的,需要根据不同的烧写对象要进行修改,我做的这个imx文件合成器是更具NXP官方的手册及正点原子的资料自己制作的一份简单的imx启动结构数据生成工具,可以给bin文件添加启动引导数据让他变成有效的imx文件,本人已经在sd,emmc等介质上验证过,从主程序的左上角的工具烂可以启动这个工具,截图如下:
你可以打开一个imx文件,从中查看这些imx文件中包含的ivt表,dcd表等的内容,你也可以选择一个bin文件将他融合为一个imx文件。
生成imx文件时,要先搞清楚你的bin文件代码的连接地址,这个地址是连接脚本中定义的txt域地址,一般正点原子的裸奔代码的连接地址一般为0X87800000,这个地址一般为中断向量表的地址,但也不绝对是,你可以认为是bin文件复制到ddr中之后应该放到哪里的这个地址。除此之外还有一个文件偏移量,一般的bin文件是从0开始存储所有的代码的,而IAR生成的bin文件比较特殊,他的bin文件前面有0x34=52字节的不知道干撒用的数据,你必须要设置0x34的偏移量,否则代码复制到内存后就会出现0x34个字节的错位导致代码不能正常启动。这是特别要注意的。