OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
楼主: it_do_just

分享我的项目必需品:IAP+YMODEM+CRC16+AES256+PC端软件+hex合并

    [复制链接]

0

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
78
金钱
78
注册时间
2016-9-26
在线时间
22 小时
发表于 2016-12-7 21:03:04 | 显示全部楼层
正点原子逻辑分析仪DL16劲爆上市
回复 支持 反对

使用道具 举报

3

主题

55

帖子

0

精华

初级会员

Rank: 2

积分
174
金钱
174
注册时间
2016-8-13
在线时间
14 小时
发表于 2016-12-8 00:23:46 | 显示全部楼层
回复 支持 反对

使用道具 举报

15

主题

786

帖子

5

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3223
金钱
3223
注册时间
2015-7-26
在线时间
811 小时
 楼主| 发表于 2016-12-8 14:28:16 | 显示全部楼层
fuhongyu321 发表于 2016-12-7 17:49
谢谢分享   
同时 我想问一下 超级终端可以做tcp  server用吗  同时支持ymodem协议?

刚看了下,不支持tcp
我的博客:http://blog.csdn.net/itdo_just
回复 支持 反对

使用道具 举报

0

主题

48

帖子

0

精华

初级会员

Rank: 2

积分
161
金钱
161
注册时间
2016-11-25
在线时间
28 小时
发表于 2016-12-8 15:18:32 | 显示全部楼层
支持支持、、、
回复 支持 反对

使用道具 举报

13

主题

448

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1755
金钱
1755
注册时间
2015-2-7
在线时间
369 小时
发表于 2016-12-8 15:22:09 | 显示全部楼层
本帖最后由 电子之旅 于 2016-12-8 15:24 编辑

谢谢分享
回复 支持 反对

使用道具 举报

9

主题

1385

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
11467
金钱
11467
注册时间
2013-3-8
在线时间
1226 小时
发表于 2016-12-8 16:25:08 | 显示全部楼层
请问一下,我两个bin文件合并后,再AES加密,通过bootloader烧进去,那这个合并的bin文件中有一部份就是bootloader,这部分是烧到哪儿个地址啊?
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手上路

积分
40
金钱
40
注册时间
2016-11-19
在线时间
7 小时
发表于 2016-12-12 17:41:04 | 显示全部楼层
楼主,通过IAP解密后烧写,解密不对,所以升级后出错
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2016-12-12 18:09:23 | 显示全部楼层
cool
回复 支持 反对

使用道具 举报

15

主题

786

帖子

5

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3223
金钱
3223
注册时间
2015-7-26
在线时间
811 小时
 楼主| 发表于 2016-12-13 09:00:24 | 显示全部楼层
augustedward 发表于 2016-12-8 16:25
请问一下,我两个bin文件合并后,再AES加密,通过bootloader烧进去,那这个合并的bin文件中有一部份就是boo ...

这部分bootloader烧到了APP部分去了,你是想做bootloader替换还是想有两个bootloader?
我的博客:http://blog.csdn.net/itdo_just
回复 支持 反对

使用道具 举报

15

主题

786

帖子

5

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3223
金钱
3223
注册时间
2015-7-26
在线时间
811 小时
 楼主| 发表于 2016-12-13 09:03:01 | 显示全部楼层
drydiy 发表于 2016-12-12 17:41
楼主,通过IAP解密后烧写,解密不对,所以升级后出错

上面有提供VS的工程,上位机和下位机的加解密用的是同一段代码,你上位机用的是不是我提供的?如果不是根据VS工程里面的代码修改下加密,下位机的解密应该是没有问题的,可能你上位机加密那里出了问题
我的博客:http://blog.csdn.net/itdo_just
回复 支持 反对

使用道具 举报

9

主题

1385

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
11467
金钱
11467
注册时间
2013-3-8
在线时间
1226 小时
发表于 2016-12-13 09:15:33 | 显示全部楼层
229382777@qq.co 发表于 2016-12-13 09:00
这部分bootloader烧到了APP部分去了,你是想做bootloader替换还是想有两个bootloader?

替换bootloader。不知道有什么好方法?
回复 支持 反对

使用道具 举报

15

主题

786

帖子

5

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3223
金钱
3223
注册时间
2015-7-26
在线时间
811 小时
 楼主| 发表于 2016-12-13 09:35:22 | 显示全部楼层
augustedward 发表于 2016-12-13 09:15
替换bootloader。不知道有什么好方法?

方法应该是有的,但目前我没有思路
我的博客:http://blog.csdn.net/itdo_just
回复 支持 反对

使用道具 举报

9

主题

1385

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
11467
金钱
11467
注册时间
2013-3-8
在线时间
1226 小时
发表于 2016-12-13 12:27:50 | 显示全部楼层
229382777@qq.co 发表于 2016-12-13 09:35
方法应该是有的,但目前我没有思路

好的,谢谢,请问你有手机端蓝牙调试助手,带ymodem协议的吗?
回复 支持 反对

使用道具 举报

15

主题

786

帖子

5

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3223
金钱
3223
注册时间
2015-7-26
在线时间
811 小时
 楼主| 发表于 2016-12-13 14:28:23 | 显示全部楼层
augustedward 发表于 2016-12-13 12:27
好的,谢谢,请问你有手机端蓝牙调试助手,带ymodem协议的吗?

这个由于我们之前的产品改用了wifi升级,所以没有用蓝牙,你可以上网搜下,安卓的APP应该是有的,IOS的估计比较难找,如果你们那边有APP工程师可以让他在GitHub搜索下,各种语言的ymodem协议代码都有,https://github.com/
我的博客:http://blog.csdn.net/itdo_just
回复 支持 反对

使用道具 举报

83

主题

217

帖子

0

精华

初级会员

Rank: 2

积分
197
金钱
197
注册时间
2016-4-8
在线时间
116 小时
发表于 2016-12-13 14:58:07 | 显示全部楼层
好东西,感谢楼主共享,Mark一下
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
8
金钱
8
注册时间
2016-11-20
在线时间
0 小时
发表于 2016-12-13 23:49:00 | 显示全部楼层
好好学习下,精华啊
回复 支持 反对

使用道具 举报

0

主题

3

帖子

0

精华

初级会员

Rank: 2

积分
51
金钱
51
注册时间
2016-12-13
在线时间
20 小时
发表于 2016-12-15 13:17:54 | 显示全部楼层
学习了,谢谢楼主分享!
回复 支持 反对

使用道具 举报

0

主题

3

帖子

0

精华

初级会员

Rank: 2

积分
60
金钱
60
注册时间
2016-12-15
在线时间
14 小时
发表于 2016-12-15 14:22:45 | 显示全部楼层
先收藏,马上用得着。感谢
回复 支持 反对

使用道具 举报

2

主题

9

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2016-11-17
在线时间
5 小时
发表于 2016-12-16 16:46:57 | 显示全部楼层
感谢分享这么好的东西, 赞一个
回复 支持 反对

使用道具 举报

6

主题

64

帖子

3

精华

高级会员

Rank: 4

积分
768
金钱
768
注册时间
2014-3-11
在线时间
55 小时
发表于 2016-12-17 09:59:55 | 显示全部楼层
我打算用QT折腾一个串口助手+YModem和IAP的软件
回复 支持 反对

使用道具 举报

0

主题

38

帖子

0

精华

初级会员

Rank: 2

积分
150
金钱
150
注册时间
2012-12-8
在线时间
21 小时
发表于 2016-12-17 10:05:15 | 显示全部楼层
不错不错,学习学习
回复 支持 反对

使用道具 举报

8

主题

136

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
427
金钱
427
注册时间
2015-4-24
在线时间
85 小时
发表于 2016-12-22 14:24:15 | 显示全部楼层
本帖最后由 bruellyyang 于 2016-12-23 16:23 编辑

楼主的每个贴子都好棒,顶!!
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手上路

积分
24
金钱
24
注册时间
2016-12-28
在线时间
4 小时
发表于 2016-12-28 16:08:08 | 显示全部楼层
谢谢楼主分享
回复 支持 反对

使用道具 举报

7

主题

146

帖子

1

精华

高级会员

Rank: 4

积分
895
金钱
895
注册时间
2014-1-2
在线时间
156 小时
发表于 2016-12-28 16:56:13 | 显示全部楼层
感谢分享。。。
回复 支持 反对

使用道具 举报

3

主题

42

帖子

0

精华

高级会员

Rank: 4

积分
714
金钱
714
注册时间
2016-1-25
在线时间
79 小时
发表于 2016-12-28 16:57:39 | 显示全部楼层
谢谢楼主的分享
回复 支持 反对

使用道具 举报

8

主题

136

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
427
金钱
427
注册时间
2015-4-24
在线时间
85 小时
发表于 2016-12-29 11:06:06 | 显示全部楼层
楼主,你好,问下我用USB虚拟的串口已经调试通了,现在我想用这个虚拟串口做IAP,也是边接收边写入flash。官方的例程是串口接收判断的,如图片;我现在不知道怎么判断USB接收到的数据,网上没找到相关资料,不知道你有么有遇到过,谢谢
Image 1.png
回复 支持 反对

使用道具 举报

0

主题

6

帖子

0

精华

新手上路

积分
26
金钱
26
注册时间
2016-12-13
在线时间
5 小时
发表于 2016-12-29 16:30:15 | 显示全部楼层
bruellyyang 发表于 2016-12-29 11:06
楼主,你好,问下我用USB虚拟的串口已经调试通了,现在我想用这个虚拟串口做IAP,也是边接收边写入flash。 ...

你指的USB虚拟串口是用USB转串口芯片虚拟的串口还是用STM32的USB固件库中的CDC类虚拟的串口?如果是前者,在STM32上就当普通的串口用,就像你贴的官方例程一样,只不过串口号和波特率可能要改。如果是后者,你在STM32上就不能用串口的函数接收了,要用USB的接收函数
回复 支持 反对

使用道具 举报

15

主题

786

帖子

5

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3223
金钱
3223
注册时间
2015-7-26
在线时间
811 小时
 楼主| 发表于 2016-12-30 08:48:30 | 显示全部楼层
bruellyyang 发表于 2016-12-29 11:06
楼主,你好,问下我用USB虚拟的串口已经调试通了,现在我想用这个虚拟串口做IAP,也是边接收边写入flash。 ...

楼上已经说了,为什么要USB虚拟串口?你直接用USB做IAP不就好了嘛,如果是USB转串口芯片的话那跟官网的代码一样直接用串口收发就行,如果不是直接用USB做就行,USB调通收发函数,把你贴的代码改为USB收发就行了,其他一样
我的博客:http://blog.csdn.net/itdo_just
回复 支持 反对

使用道具 举报

8

主题

136

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
427
金钱
427
注册时间
2015-4-24
在线时间
85 小时
发表于 2016-12-30 09:24:43 | 显示全部楼层
本帖最后由 bruellyyang 于 2016-12-30 09:27 编辑
ldxy 发表于 2016-12-29 16:30
你指的USB虚拟串口是用USB转串口芯片虚拟的串口还是用STM32的USB固件库中的CDC类虚拟的串口?如果是前者 ...

谢谢,我用的是VCP,串口接收数据的时候会将数据保存在USART1->DR中,我现在就是没有找到USB中保存数据的寄存器
回复 支持 反对

使用道具 举报

0

主题

6

帖子

0

精华

新手上路

积分
26
金钱
26
注册时间
2016-12-13
在线时间
5 小时
发表于 2016-12-30 11:19:36 | 显示全部楼层
bruellyyang 发表于 2016-12-30 09:24
谢谢,我用的是VCP,串口接收数据的时候会将数据保存在USART1->DR中,我现在就是没有找到USB中保存数据的 ...

USB和串口不一样,串口是每次发送一个字节,这样直接读DR寄存器还是比较好处理的;USB每次收发多个自节,有自己的帧格式,你不精通USB协议就算找到了USB的数据寄存器也是不好处理的。既然用了VPC就直接调用官方的USB固件库VPC接收函数就好了,跟调用串口的接收函数基本一样的,不要自找麻烦去找USB的寄存器
回复 支持 反对

使用道具 举报

1

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
66
金钱
66
注册时间
2016-1-18
在线时间
14 小时
发表于 2017-1-5 19:31:55 | 显示全部楼层
膜拜大神。
回复 支持 反对

使用道具 举报

32

主题

190

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1183
金钱
1183
注册时间
2013-4-3
在线时间
221 小时
发表于 2017-1-6 12:55:03 | 显示全部楼层
aes加密指的是,固件在没有进mcu之前的阶段,在固件"运输阶段"被非法偷走使用?再配合bootloader解密。如果是这样在单片机内部被非法读取出来,aes加密还是没有用的。是这样吗?
回复 支持 反对

使用道具 举报

12

主题

432

帖子

0

精华

高级会员

Rank: 4

积分
729
金钱
729
注册时间
2012-6-21
在线时间
59 小时
发表于 2017-1-6 16:29:57 来自手机 | 显示全部楼层
谢谢分享
回复 支持 反对

使用道具 举报

15

主题

786

帖子

5

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3223
金钱
3223
注册时间
2015-7-26
在线时间
811 小时
 楼主| 发表于 2017-1-7 08:48:46 | 显示全部楼层
Xy201207 发表于 2017-1-6 12:55
aes加密指的是,固件在没有进mcu之前的阶段,在固件"运输阶段"被非法偷走使用?再配合bootloader解密。如果 ...

固件在没有进mcu之前就已经加了密,读出来后除非有密匙,否则读也没用。mcu解密放在bootloader里面进行,你是指别人从bootloader解密后再把代码读出来?我还不知道怎么做到这一步,但是可以保证的是他的解密成本肯定增加了不少
我的博客:http://blog.csdn.net/itdo_just
回复 支持 反对

使用道具 举报

32

主题

190

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1183
金钱
1183
注册时间
2013-4-3
在线时间
221 小时
发表于 2017-1-11 16:17:09 | 显示全部楼层
229382777@qq.co 发表于 2017-1-7 08:48
固件在没有进mcu之前就已经加了密,读出来后除非有密匙,否则读也没用。mcu解密放在bootloader里面进行, ...

固件不是经过BOOTLOADER解密后再写进FLSH里面的吗? 如果我在读出,应该就是没有加密的吧
回复 支持 反对

使用道具 举报

2

主题

37

帖子

0

精华

高级会员

Rank: 4

积分
561
金钱
561
注册时间
2014-11-6
在线时间
91 小时
发表于 2017-1-12 10:19:31 | 显示全部楼层
本帖最后由 一叶扁舟V5 于 2017-1-12 10:20 编辑

在程序中我使用的升级方式是通过串口发送字符‘1’(可自行修改),串口收到字符‘1’后,向指定的地址写入0xAAAA,然后使用软复位回到bootloader,bootloader中判断那个地址是不是0xAAAA,如果是则升级,升级完成后擦除这个地址的flash内容跳到APP,如果不是则跳直接回到APP执行,由于升级不可能频繁升,所以这里不用担心把falsh擦写坏。”  我遇到的问题是串口接受不到字符‘1’;直接跳转到APP程序;我用的是STM32F10X系列;

void USART1_IRQHandler(void)
{
        unsigned char buffer = 0;

        if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
        {
                buffer = USART_ReceiveData(USART1);
//                buffer =(uint8_t)USART1->DR;  
                if(buffer=='1')
                {
                        updata_pro = 1;
                }
        }               
}

uint32_t SerialKeyPressed(uint8_t *key) //Serial ′®¿ú
{
    if ( USART_GetFlagStatus(USART1, USART_FLAG_RXNE) != RESET) //1
    {
//        *key = (uint8_t)USART1->DR;  
                          *key = USART_ReceiveData(USART1);//++
        return 1;
    }
    else
    {
        return 0;
    }
}
多看美女有益健康!
回复 支持 反对

使用道具 举报

2

主题

37

帖子

0

精华

高级会员

Rank: 4

积分
561
金钱
561
注册时间
2014-11-6
在线时间
91 小时
发表于 2017-1-12 10:38:33 | 显示全部楼层
发现问题了  自己的配置的是串口1的
多看美女有益健康!
回复 支持 反对

使用道具 举报

15

主题

786

帖子

5

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3223
金钱
3223
注册时间
2015-7-26
在线时间
811 小时
 楼主| 发表于 2017-1-16 09:00:35 | 显示全部楼层
Xy201207 发表于 2017-1-11 16:17
固件不是经过BOOTLOADER解密后再写进FLSH里面的吗? 如果我在读出,应该就是没有加密的吧

是的,经过bootloader解密后写进FLASH的
我的博客:http://blog.csdn.net/itdo_just
回复 支持 反对

使用道具 举报

19

主题

176

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1105
金钱
1105
注册时间
2015-10-27
在线时间
206 小时
发表于 2017-1-16 09:43:37 | 显示全部楼层
66666666666666666666666666
回复 支持 反对

使用道具 举报

74

主题

334

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
436
金钱
436
注册时间
2015-5-28
在线时间
144 小时
发表于 2017-1-16 10:01:58 | 显示全部楼层
谢谢分享!
回复 支持 反对

使用道具 举报

29

主题

486

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3083
金钱
3083
注册时间
2014-7-19
在线时间
413 小时
发表于 2017-1-16 10:43:05 | 显示全部楼层
感谢分享!!
电子人生!
回复 支持 反对

使用道具 举报

1

主题

1

帖子

0

精华

新手入门

积分
25
金钱
25
注册时间
2013-2-14
在线时间
0 小时
发表于 2017-1-16 12:20:06 | 显示全部楼层
感谢楼主分享mark
回复 支持 反对

使用道具 举报

9

主题

125

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1183
金钱
1183
注册时间
2014-5-7
在线时间
325 小时
发表于 2017-1-16 12:45:59 | 显示全部楼层
赞,,楼主霸气
回复 支持 反对

使用道具 举报

2

主题

10

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2017-1-13
在线时间
10 小时
发表于 2017-1-16 22:41:27 | 显示全部楼层
augustedward 发表于 2016-12-13 09:15
替换bootloader。不知道有什么好方法?

替换bootload的方法:bootload-->tempbootload-->new bootload
回复 支持 反对

使用道具 举报

2

主题

10

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2017-1-13
在线时间
10 小时
发表于 2017-1-16 22:56:20 | 显示全部楼层
AES加密采用ECB模式,有漏洞。
回复 支持 反对

使用道具 举报

0

主题

3

帖子

0

精华

初级会员

Rank: 2

积分
51
金钱
51
注册时间
2016-12-13
在线时间
20 小时
发表于 2017-1-18 11:03:29 | 显示全部楼层
请教下楼主,之前Hex2Bin都弄好,并且可以使用,今天发现不能用了,并跳出对话框 “未找到任何可识别的数字“,这是什么原因造成的,谢谢。
回复 支持 反对

使用道具 举报

0

主题

8

帖子

0

精华

初级会员

Rank: 2

积分
67
金钱
67
注册时间
2017-1-3
在线时间
24 小时
发表于 2017-1-18 15:32:30 | 显示全部楼层
lvyer 发表于 2017-1-18 11:03
请教下楼主,之前Hex2Bin都弄好,并且可以使用,今天发现不能用了,并跳出对话框 “未找到任何可识别的数字 ...

空格是不是在中文模式下打的,要换在英文模式下打。
回复 支持 反对

使用道具 举报

0

主题

0

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2015-5-14
在线时间
12 小时
发表于 2017-2-5 10:38:05 | 显示全部楼层
感谢大神分享!
回复 支持 反对

使用道具 举报

0

主题

0

帖子

0

精华

新手入门

积分
6
金钱
6
注册时间
2018-4-26
在线时间
8 小时
发表于 2017-2-14 16:05:50 | 显示全部楼层
不知我这样理解对不对:因为APP的中断向量表偏移了,APP的中断要跳两次才能进入真正的中断执行程序,不知这样会不会影响中断的效率,延长响应时间呢……
回复 支持 反对

使用道具 举报

5

主题

36

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
208
金钱
208
注册时间
2015-3-14
在线时间
33 小时
发表于 2017-2-24 16:21:32 | 显示全部楼层
楼主我阅读了您的代码好像没有发现crc16的检错功能
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 04:21

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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