找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1993|回复: 2
收起左侧

二进制文件合并工具PackagingTool

[复制链接]
ID:65967 发表于 2023-11-6 16:18 | 显示全部楼层 |阅读模式
软件功能介绍:
该软件可进行多个二进制文件的合并,可以自由添加文件、删除、调整文件排列顺序,并且可以在前面插入偏移地址,满足各种FLASH烧录需求。
51hei.png


用户还可以选择是否将合并的文件地址和大小写入前置偏移地址,地址和大小各占4Bytes,写入的数据格式为LSB->MSB,用户可方便读取索引使用。


下面举例单片机如何读取jpg图片出来显示,打包好的bin档已烧录到RA8889下挂的FLASH芯片,单片机直接访问读取文件的地址和大小信息:
  1. //获取图片的地址或者大小信息,共4个字节,再合并成一个数值返回
  2. unsigned long Get_Picture_Address_Size(unsigned long flash_addr)
  3. {
  4. unsigned long temp;
  5. unsigned short i;
  6. unsigned int data_buffer[4];  //存放从FLASH读取出的数据   

  7. Enable_SFlash_SPI();

  8. if(FLASH_BUS==0) SPIM_Select_Bus_0(); //总线BUS0
  9. else  SPIM_Select_Bus_1(); //总线BUS1

  10. #ifdef OVER_128Mb
  11. Select_nSS_drive_on_xnsfcs3(); //使用CS3位置的FLASH
  12. #else
  13. Select_nSS_drive_on_xnsfcs2(); //使用CS2位置的FLASH
  14. #endif

  15. RA8889_SPI_Flash_WREN(); //写入使能
  16. nSS_Active();
  17. delay_us(1);
  18. SPI_Master_FIFO_Data_Put(0x03);
  19. delay_us(1);

  20. #ifdef OVER_128Mb   //32bit 寻址
  21. SPI_Master_FIFO_Data_Put(flash_addr>>24);
  22. SPI_Master_FIFO_Data_Put(flash_addr>>16);
  23. SPI_Master_FIFO_Data_Put(flash_addr>>8);
  24. SPI_Master_FIFO_Data_Put(flash_addr);
  25. #else    //24bit 寻址
  26. SPI_Master_FIFO_Data_Put(flash_addr>>16);
  27. SPI_Master_FIFO_Data_Put(flash_addr>>8);
  28. SPI_Master_FIFO_Data_Put(flash_addr);
  29. #endif

  30. for(i=0;i<4;i++)
  31. {
  32. data_buffer[i] = SPI_Master_FIFO_Data_Put(0xff);
  33. }

  34. temp = data_buffer[3]<<24;  
  35. temp += data_buffer[2]<<16;
  36. temp += data_buffer[1]<<8;
  37. temp += data_buffer[0];

  38. nSS_Inactive();   

  39. while(RA8889_SPI_Flash_RDSR()& 0x01);
  40. RA8889_SPI_Flash_WRDI();
  41. Disable_SFlash_SPI();

  42. return(temp);
  43. }
复制代码


单片机将获取到的jpg图片地址和文件大小传给RA8889,即可显示:
  1. //从FLASH读取第n张图片出来显示
  2. int Show_Picture(unsigned int pic_num)
  3. {
  4. unsigned long pic_addr, pic_size;

  5. pic_addr = Get_Picture_Address_Size(0x0000+pic_num*8); //读取到第n个图片地址的值
  6. pic_size = Get_Picture_Address_Size(0x0004+pic_num*8); //读取到第n个图片大小的值

  7. //读取不到图片信息标志
  8. if(pic_addr==0xFFFFFFFF)
  9. {
  10. return 0;
  11. }
  12. else
  13. {
  14. SPI_NOR_initial_JPG_AVI (1,0,FLASH_BUS,FLASH_CS,1);

  15. #ifdef OVER_128Mb   
  16. switch_24bits_to_32bits(FLASH_BUS,FLASH_CS);
  17. IDEC_Select_SFI_32bit_Address();
  18. #endif

  19. //RA8889显示JPG图片:
  20. JPG_NOR (pic_addr,pic_size,canvas_image_width,0,0);

  21. return 1;
  22. }
  23. }
复制代码



保存文件后除了会生成一份.bin文件之外,同时还会生成一份.h文件,方便用户查阅与调用,并且用户可以再次导入该文件的列表,省去频繁导入与调整文件顺序的麻烦。

该软件若与瑞佑的RA8889结合使用,可以用来打包jpg、avi等图资,由于此类文件大小不一,MCU若没有做FAT文件系统就只能做成固定调用,不好单独对图资变更了,除非MCU固件也一起变更。而使用该软件就可以在打包文件的同时将文件信息一同保存,MCU按固定地址去读取而不必在意文件的大小了,只需要更新图资即可。

原文链接及下载地址:lcdvision官网 资料下载:RAIO > 辅助开发软件

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:65967 发表于 2023-11-9 21:19 | 显示全部楼层

RE: 二进制文件合并工具PackagingTool

附件为绿色版程序,单文件约350KB,通用Window各平台,调试开发得力工具!
欢迎爱好者测试下载吧!

PackagingTool.zip (54.28 KB, 下载次数: 7)
回复

使用道具 举报

ID:65967 发表于 2023-12-6 13:39 | 显示全部楼层
重要改版:

1.新增可对任何一个文件进行地址偏移设定,满足MCU的IAP Boot Loader Code和Application Code合并时需要固定偏移功能(比如0x00001000);

2.调整输出的.h格式,导出同时构建枚举函数,MCU可直接引用该头文件进行索引,该文件与Image Tool导出来的.h格式一致,可兼容;另外增加图片的宽度和高度信息,可搭配瑞佑的RA8889使用。
51hei.png

PackagingTool_1.3.0.2.zip

58.81 KB, 下载次数: 3, 下载积分: 黑币 -5

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表