二进制文件合并工具软件 PackagingTool
一、功能介绍:
- 该软件可进行多个二进制文件的合并,可以打包合并多个bin档、字库dot档、jpg、avi、mp3等;
- 可作为Bootloader和App的合并工具,可以预设任意偏移值;
- 同时保存列表,后续可重复导入使用,搭配瑞佑RA8889液晶控制芯片一起使用用于打包图片档十分方便!
二、可以保存各个文件的绝地地址和大小
可以选择是否在文件头保存各个文件的绝对地址和大小,每个文件各占4Bytes,写入的数据格式为LSB->MSB,方便由MCU进行索引调用。
当要在文件头添加文件信息时,需要先预留空间,下方为例,预留空间设定为4096字节。
FLASH的存放信息如下方图示:
应用举例:结合瑞佑的RA8889液晶控制芯片使用
首先,将打包好的bin档烧录到与RA8889连接的FLASH芯片;再通过MCU控制RA8889进行读取。
//获取图片的地址或者大小信息,共4个字节,再合并成一个数值返回
unsigned long Get_Picture_Address_Size(unsigned long flash_addr)
{
unsigned long temp;
unsigned short i;
unsigned int data_buffer[4]; //存放从FLASH读取出的数据
Enable_SFlash_SPI();
if(FLASH_BUS==0) SPIM_Select_Bus_0(); //总线BUS0
else SPIM_Select_Bus_1(); //总线BUS1
#ifdef OVER_128Mb
Select_nSS_drive_on_xnsfcs3(); //使用CS3位置的FLASH
#else
Select_nSS_drive_on_xnsfcs2(); //使用CS2位置的FLASH
#endif
RA8889_SPI_Flash_WREN(); //写入使能
nSS_Active();
delay_us(1);
SPI_Master_FIFO_Data_Put(0x03);
delay_us(1);
#ifdef OVER_128Mb //32bit 寻址
SPI_Master_FIFO_Data_Put(flash_addr>>24);
SPI_Master_FIFO_Data_Put(flash_addr>>16);
SPI_Master_FIFO_Data_Put(flash_addr>>8);
SPI_Master_FIFO_Data_Put(flash_addr);
#else //24bit 寻址
SPI_Master_FIFO_Data_Put(flash_addr>>16);
SPI_Master_FIFO_Data_Put(flash_addr>>8);
SPI_Master_FIFO_Data_Put(flash_addr);
#endif
for(i=0;i<4;i++)
{
data_buffer[i] = SPI_Master_FIFO_Data_Put(0xff);
}
temp = data_buffer[3]<<24;
temp += data_buffer[2]<<16;
temp += data_buffer[1]<<8;
temp += data_buffer[0];
nSS_Inactive();
while(RA8889_SPI_Flash_RDSR()& 0x01);
RA8889_SPI_Flash_WRDI();
Disable_SFlash_SPI();
return(temp);
}
MCU将获取到的jpg图片地址和文件大小传递给RA8889进行显示:
//从FLASH读取第n张图片出来显示
int Show_Picture(unsigned int pic_num)
{
unsigned long pic_addr, pic_size;
pic_addr = Get_Picture_Address_Size(0x0000+pic_num*8); //读取到第n个图片地址的值
pic_size = Get_Picture_Address_Size(0x0004+pic_num*8); //读取到第n个图片大小的值
//读取不到图片信息标志
if(pic_addr==0xFFFFFFFF)
{
return 0;
}
else
{
SPI_NOR_initial_JPG_AVI (1,0,FLASH_BUS,FLASH_CS,1);
#ifdef OVER_128Mb
switch_24bits_to_32bits(FLASH_BUS,FLASH_CS);
IDEC_Select_SFI_32bit_Address();
#endif
//RA8889显示JPG图片:
JPG_NOR (pic_addr,pic_size,canvas_image_width,0,0);
return 1;
}
}
三、保存列表清单
该软件会除了生成新的bin档之外,还会将用户设定好的列表信息保存为.h文件,这是一个很有用的功能!
其一,该文件已构建枚举函数,MCU可以包含头文件进行调用,非常便捷!当结合瑞佑的RA8889使用时,就很容易进行图片文件的调用。
其二,可以重复导入保存的列表信息,令开发和生产更为高效,可以重复删改编辑,就不需要每次都得编排了,相当实用!这个功能也是目前所有其它合并软件所没有做的。