找回密码
 立即注册
楼主: xupota

如何减小hex文件的大小

[复制链接]
  • 打卡等级:偶尔看看III
  • 打卡总天数:34
  • 最近打卡:2025-04-22 20:25:08

6

主题

46

回帖

296

积分

中级会员

积分
296
发表于 2024-11-14 21:46:33 | 显示全部楼层
做个总结:

之所以有这个贴子,是因为编程时遇到问题了,可能是问题没有描述清楚,参考大家的回复,问题还是没有解决。不好意思,让大家白忙一场。

申请到了一个试验箱,自己接上OLED12864,用I2C点亮了,T0更新时间,T1更新显示,CDC_ISP调试也非常爽。

可这一天,想做18B20。因为之前有用1602显示温度,移植了程序,没想到出了意外,“USB无法识别的端口”。

取消18B20,能恢复正常,加入18B20后,“USB无法识别的端口”。检查了18B20子程序,没发现什么问题。

想了几天都没有想到问题出在哪,最后从结构、系统上找原因,会不会是CDC代码的位置不对?会不会是lib文件的位置不对?会不会程序文件太大,CDC指令丢失了?

原谅我对系统的一无所知,我的想法可能跟很多大侠不在一个维度上,谁让我是菜鸟呢。

论坛里也有很多朋友遇到了跟我一样的问题,也有大侠指点方向,告诉方法,能试的我也试了,但问题还是没有解决。而且提出问题的朋友也不知道最后有没有解决问题。是如何解决的,我也不知道。甚至一度让我想到,STC如此不稳定,大家是不是转投STM阵营了?我要不要也转移?

想到即便转投STM,也许会遇到同样的问题,还能再转投第三方,第四方吗?先把这个问题解决了再看看。

也许是遇到自己的知识盲区了,把规格书再看一遍,规格书跟冲哥讲的不一样。也许按规格书来,问题就解决了。结果还是一样的。

再看视频,第22集 CDC通信。开始冲哥也遇到问题了,跟规格书要求的一样,
    USBCLK = 0x00;                //使能USB功能
    USBCON = 0x90;
    usb_init();          //调用USB CDC初始化函数,USB CDC 接口配置
    EUSB        =1;                //使能 USB 中断
    EA = 1;                        //打开总的中断开关       
    while(DeviceState !=DEVSTATE_CONFIGURED);        //等待USB完成配置
是的,这几行代码,已经可以跟电脑通信了。规格书也会,冲哥的视频也好,都是这样的,没问题。

现实是,我是这么做的,冲哥也是这么做的,可CDC_ISP都出问题了。

第22集的最后,冲哥从ppt中复制了三行代码,

        USBCON = 0x00;
        USBCLK = 0x00;       
        IRC48MCR = 0x00;
        delay_ms(800);  

也许是时间的原因,冲哥没有仔细讲为什么要复制这几行代码,只知道复制这几行代码后,问题解决了。

如是,我也照做了。

居然还会出错!再看视频查资料,这几行代码的作用是释放USB端口,断开USB连结。恍惚间想明白了一个问题,

CDC连结后,单片机进入死循环。当电脑要与单片机通时,单片机宕机,端口又没有释放,当然就“USB无法识别的端口”。

怎么解决呢?看门狗啊,解决单片机死机的利器。

于是看门狗+释放端口+连结端口,CDC_ISP正常了,当单片机宕机时,计算机不断的连结,断开,连结,断开,CDC_ISP正常了,

感谢,终于搞定了。

至于看门狗的详细用法,冲哥的视频中有,规格书中也有,就不详细解释了。

再次感谢各位大佬的跟贴,谢谢!希望对于遇到同样问题的朋友有所帮助。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:199
  • 最近打卡:2025-05-02 00:28:39
已绑定手机

24

主题

345

回帖

1633

积分

金牌会员

积分
1633
发表于 2024-11-15 09:15:16 | 显示全部楼层
我记得之前也有人问过这问题
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:122
  • 最近打卡:2025-05-01 08:43:07
已绑定手机

2

主题

106

回帖

262

积分

中级会员

积分
262
发表于 2024-12-17 12:54:24 | 显示全部楼层

mark

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:520
  • 最近打卡:2025-05-01 08:06:21

109

主题

1897

回帖

5204

积分

论坛元老

积分
5204
发表于 2024-12-17 14:01:40 | 显示全部楼层

好像一些不必要的c文件可以不用参加编译,况且看hex大小不能断定bin的实际大小

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:191
  • 最近打卡:2025-05-01 21:18:39
已绑定手机

0

主题

4

回帖

134

积分

注册会员

积分
134
发表于 2024-12-17 18:25:17 | 显示全部楼层

汇编可以最小

回复 支持 反对

使用道具 举报 送花

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

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-2 02:05 , Processed in 0.221937 second(s), 81 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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