OpenEdv-开源电子网

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

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

    [复制链接]

13

主题

116

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
372
金钱
372
注册时间
2018-1-22
在线时间
118 小时
发表于 2018-1-28 11:50:53 | 显示全部楼层
年华七堇 发表于 2017-9-19 10:34
用超级终端发送的问题,因为原子的板子有一键下载,所以把代码改成直接在死循环里面等待接收文件,屏幕会 ...

没法送bin文件前 只打印CC吗,我secure显示都是空白怎么回事?能解答一下吗
正点原子逻辑分析仪DL16劲爆上市
回复 支持 反对

使用道具 举报

14

主题

54

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
205
金钱
205
注册时间
2017-12-4
在线时间
64 小时
发表于 2018-3-11 14:20:59 | 显示全部楼层
为什么我的超级终端收不到开发板从串口发来的信息,换其他串口调试助手收发正常
回复 支持 反对

使用道具 举报

0

主题

9

帖子

0

精华

高级会员

Rank: 4

积分
577
金钱
577
注册时间
2015-11-5
在线时间
47 小时
发表于 2018-3-12 14:05:09 | 显示全部楼层
除了感谢还是感谢
回复 支持 反对

使用道具 举报

14

主题

54

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
205
金钱
205
注册时间
2017-12-4
在线时间
64 小时
发表于 2018-3-12 15:17:21 | 显示全部楼层
229382777@qq.co 发表于 2017-7-28 16:37
写在APP里面,如果你在bootloader里面找的话肯定只能找到判断0xAAAA这个这段代码,所以请去APP里面看下, ...

更新APP后,板子重新上电从bootloader开始执行,该判断永远成立updata_byte = STMFLASH_ReadHalfWord(0x8004A38);//读取指定地址的值
                if(updata_byte == 0xAAAA)//判断此地址的值是否为0xAAAA,如果是则升级
                {
                        Main_Menu();
                }
执行Main_Menu();必要要按下1键,那岂不是更新后的APP从新上电后不能自动执行了??
回复 支持 反对

使用道具 举报

9

主题

83

帖子

0

精华

高级会员

Rank: 4

积分
647
金钱
647
注册时间
2013-3-28
在线时间
64 小时
发表于 2018-3-12 23:13:36 | 显示全部楼层
感谢啊,正在搞远程更新的事,IAP原理简单,实现起来就有点烦了
回复 支持 反对

使用道具 举报

6

主题

315

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1665
金钱
1665
注册时间
2018-1-29
在线时间
159 小时
发表于 2018-3-13 06:45:24 | 显示全部楼层

赶紧来膜拜一下大神的神贴! 大神辛苦了,感谢分享!
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
16
金钱
16
注册时间
2018-3-13
在线时间
1 小时
发表于 2018-3-13 21:07:38 | 显示全部楼层
想问下为什么我用超级终端连接好后,stm32的IAP上传上来的提示信息是乱码啊啊啊,求助
回复 支持 反对

使用道具 举报

8

主题

569

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2363
金钱
2363
注册时间
2015-5-8
在线时间
320 小时
发表于 2018-3-13 21:21:43 | 显示全部楼层
很详细啊,厉害厉害
回复 支持 反对

使用道具 举报

89

主题

171

帖子

0

精华

高级会员

Rank: 4

积分
600
金钱
600
注册时间
2015-9-7
在线时间
140 小时
发表于 2018-3-28 14:50:43 | 显示全部楼层
楼主你好,我用aes+YMODEM发现解密YMODEM发到单片机的包,只有第一个包解密后完全正确,第一个包后的包,都是每个包前16个byte解密错误?我这是AES256 BLOCKSIZE=16这是什么原因啊?
回复 支持 反对

使用道具 举报

9

主题

39

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
273
金钱
273
注册时间
2013-3-11
在线时间
72 小时
发表于 2018-4-14 09:51:52 | 显示全部楼层
//////////////////////////////////////////////////////////////////////////////////////////////////////
//用户根据自己的需要设置
#define STM32_FLASH_SIZE 64                          //所选STM32的FLASH容量大小(单位为K)
#define STM32_FLASH_WREN 1              //使能FLASH写入(0,不是能;1,使能)
//////////////////////////////////////////////////////////////////////////////////////////////////////

//FLASH起始地址
#define STM32_FLASH_BASE 0x08000000         //STM32 FLASH的起始地址
#define USER_FLASH_LAST_PAGE_ADDRESS  0x0800F800
#define USER_FLASH_END_ADDRESS        0x0800FFFF /* 64 KBytes */
#define FLASH_PAGE_SIZE               0x400      /* 1 Kbytes */

/* define the address from where user application will be loaded,
   the application address should be a start sector address */
#define APPLICATION_ADDRESS     0x08008000

/* Get the number of Sector from where the user program will be loaded */
#define  FLASH_PAGE_NUMBER      (uint32_t)((APPLICATION_ADDRESS - 0x08000000) >> 12)

/* Compute the mask to test if the Flash memory, where the user program will be
   loaded, is write protected */
#define  FLASH_PROTECTED_PAGES   ((uint32_t)~((1 << FLASH_PAGE_NUMBER) - 1))

/* define the user application size */
#define USER_FLASH_SIZE   0x08000
//FLASH解锁键值

楼主还在吗,这几个地址这么设置哪里不对了?我的是103C8  64K flash 20K RAM的,终端助手烧录进去一直提示栈顶地址不对跳转不了,我把APP用烧录器烧录进去是可以正常jump的,所以估计是上面的地址哪里不对了
回复 支持 反对

使用道具 举报

5

主题

26

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
304
金钱
304
注册时间
2014-4-2
在线时间
84 小时
发表于 2018-4-18 15:14:05 | 显示全部楼层
mark!!!
回复 支持 反对

使用道具 举报

3

主题

144

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
498
金钱
498
注册时间
2018-3-5
在线时间
59 小时
发表于 2018-4-18 15:34:28 | 显示全部楼层
229382777@qq.co 发表于 2016-9-19 08:29
我是在跳回bootloader的时候把APP全都删了,如果别人想要通过跳回bootloader烧入破解程序的话之前那段APP ...

关于这个,相比AES256,别人会直接去破解单片机来的方便,那么你的密钥都是不安全了
回复 支持 反对

使用道具 举报

1

主题

39

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
337
金钱
337
注册时间
2018-4-20
在线时间
80 小时
发表于 2018-4-20 10:58:23 | 显示全部楼层
谢谢分享,MARK。
回复 支持 反对

使用道具 举报

1

主题

4

帖子

0

精华

新手上路

积分
22
金钱
22
注册时间
2018-4-2
在线时间
2 小时
发表于 2018-5-20 22:00:33 | 显示全部楼层
感谢分析, 有一部分实在无法理解
就是APP里面,为啥一定要把中断向量移到SRAM里面去?  直接定位到0x08005000 不更好吗? 就不用重新设置了

void IAP_Set()
{
   uint32_t i = 0;

/* Relocate by software the vector table to the internal SRAM at 0x20000000 ***/  

  /* Copy the vector table from the Flash (mapped at the base of the application
     load address 0x08005000) to the base address of the SRAM at 0x20000000. */
       
  for(i = 0; i < 48; i++)//&#207;è&#189;&#171;&#161;±ó|ó&#195;3ìDò&#161;°μ&#196;&#214;D&#182;&#207;&#207;òá&#191;±í&#191;&#189;±′&#214;áSRAM&#214;D
  {
    *((uint32_t*)(0x20000000 + (i << 2)))=*(__IO uint32_t*)(APPLICATION_ADDRESS + (i<<2));
        }
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

初级会员

Rank: 2

积分
178
金钱
178
注册时间
2017-9-15
在线时间
28 小时
发表于 2018-10-22 15:02:07 | 显示全部楼层
谢谢楼主分享
回复 支持 反对

使用道具 举报

12

主题

76

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
231
金钱
231
注册时间
2018-6-15
在线时间
33 小时
发表于 2018-10-30 16:56:31 | 显示全部楼层
感谢 楼主的无私分享
回复 支持 反对

使用道具 举报

50

主题

385

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1126
金钱
1126
注册时间
2014-8-24
在线时间
146 小时
发表于 2018-11-2 11:17:52 | 显示全部楼层
干货满满,很多东西都有共鸣,支持
找一份喜欢的工作,这样每天工作的8个小时是快乐的。 找一个喜欢的人,这样每天工作之外的16个小时也是快乐的。
回复 支持 反对

使用道具 举报

2

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
134
金钱
134
注册时间
2017-11-10
在线时间
35 小时
发表于 2018-11-5 20:14:30 | 显示全部楼层
下载不了啊
回复 支持 反对

使用道具 举报

0

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
62
金钱
62
注册时间
2018-11-8
在线时间
10 小时
发表于 2018-11-10 16:59:26 | 显示全部楼层
感谢感谢!
回复 支持 反对

使用道具 举报

36

主题

150

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
349
金钱
349
注册时间
2012-1-21
在线时间
12 小时
发表于 2018-11-21 17:16:39 | 显示全部楼层
LZ,  我用你的附件里的hex2bin的工具。

仍然是像你文章里截图一样,会弹错误。

能上传一个你修改后,可以使用的工具吗?@229382777@qq.co
回复 支持 反对

使用道具 举报

0

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
99
金钱
99
注册时间
2018-7-16
在线时间
32 小时
发表于 2018-12-7 10:27:51 | 显示全部楼层
必须给你点赞,收集资料不容易
回复 支持 反对

使用道具 举报

0

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
99
金钱
99
注册时间
2018-7-16
在线时间
32 小时
发表于 2018-12-7 10:28:27 | 显示全部楼层
必须给你点赞,收集资料不容易
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手上路

积分
25
金钱
25
注册时间
2019-3-2
在线时间
3 小时
发表于 2019-3-2 14:51:16 | 显示全部楼层
下载包能再给个链接吗? 下载不了,非常想学习IAP
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
6
金钱
6
注册时间
2019-3-19
在线时间
4 小时
发表于 2019-3-19 10:41:19 | 显示全部楼层
好详细  经验分享,非常感谢楼主的无私奉献
回复 支持 反对

使用道具 举报

42

主题

297

帖子

0

精华

高级会员

Rank: 4

积分
994
金钱
994
注册时间
2016-7-22
在线时间
318 小时
发表于 2019-3-28 11:47:05 | 显示全部楼层
请教楼主 我将加密前的bin和解密之后的写入flash的bin做了对比,数据都正确,但就是跳转app之后代码死机,跳转之前的验证通过了。
写入未加密的app是可以正常运行的。。。找问题中。。。
回复 支持 反对

使用道具 举报

42

主题

297

帖子

0

精华

高级会员

Rank: 4

积分
994
金钱
994
注册时间
2016-7-22
在线时间
318 小时
发表于 2019-3-28 12:25:03 | 显示全部楼层
仔细对比发现了问题 我每包传输512字节 每一包的前16字节 都解码错误。。。其他正确。 找问题中、、、
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
17
金钱
17
注册时间
2019-5-13
在线时间
3 小时
发表于 2019-5-13 15:32:30 | 显示全部楼层
楼主有心,谢谢分享
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
3
金钱
3
注册时间
2019-5-21
在线时间
1 小时
发表于 2019-5-22 17:39:15 | 显示全部楼层
很不錯的內容分享
回复 支持 反对

使用道具 举报

2

主题

11

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
374
金钱
374
注册时间
2019-5-28
在线时间
90 小时
发表于 2019-5-28 11:08:54 | 显示全部楼层
我能说a_m_o_bbs那个贴子是我发的么?主要是a_m_o_bbs我的帐号登不进去了,无语啊,现在我已经在之前的基础上,做了Android的App,可以通过蓝牙透传模块,直接用手机升级STM32的APP部分固件。
回复 支持 反对

使用道具 举报

0

主题

6

帖子

0

精华

初级会员

Rank: 2

积分
90
金钱
90
注册时间
2016-12-15
在线时间
20 小时
发表于 2019-6-3 22:53:01 | 显示全部楼层
好帖,mark
回复 支持 反对

使用道具 举报

2

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
159
金钱
159
注册时间
2017-5-23
在线时间
35 小时
发表于 2019-6-10 15:10:07 | 显示全部楼层
谢谢楼主
回复 支持 反对

使用道具 举报

2

主题

50

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
322
金钱
322
注册时间
2017-7-21
在线时间
96 小时
发表于 2019-7-16 00:20:10 | 显示全部楼层
感谢楼主!
回复 支持 反对

使用道具 举报

0

主题

5

帖子

0

精华

新手上路

积分
20
金钱
20
注册时间
2019-7-25
在线时间
8 小时
发表于 2019-8-2 15:31:41 | 显示全部楼层
年华七堇 发表于 2017-9-21 19:46
IAP 超级终端用ymodem发送成功了 原子的MINI板 主要是地址的设置不正确  谢谢你的分享

你好,我想请教一下怎么发送成功的啊?我的发送超级终端显示“超过了错误的极限值”F:\
回复 支持 反对

使用道具 举报

0

主题

5

帖子

0

精华

新手上路

积分
20
金钱
20
注册时间
2019-7-25
在线时间
8 小时
发表于 2019-8-2 16:33:42 | 显示全部楼层
您好,请问一下用超级终端下载APP的bin文件时出现“超出了错误的极限值”是怎么回事啊?
回复 支持 反对

使用道具 举报

0

主题

5

帖子

0

精华

新手上路

积分
20
金钱
20
注册时间
2019-7-25
在线时间
8 小时
发表于 2019-8-2 16:36:47 | 显示全部楼层
您好,请问一下用超级终端下载APP的bin文件时出现“超出了错误的极限值”是怎么回事啊?F:\1564730966(1)
回复 支持 反对

使用道具 举报

0

主题

5

帖子

0

精华

新手上路

积分
20
金钱
20
注册时间
2019-7-25
在线时间
8 小时
发表于 2019-8-2 16:40:22 | 显示全部楼层
您好,请问一下用超级终端下载APP的bin文件时出现“超出了错误的极限值”是怎么回事啊?我用的是直接通过keil编译生成的bin格式的APP程序,没有通过您上面的加密方式,直接通过超级终端下发的无加密的bin格式app文件。F:\1564730966(1).jpg
回复 支持 反对

使用道具 举报

4

主题

59

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
367
金钱
367
注册时间
2016-8-29
在线时间
128 小时
发表于 2019-8-13 14:51:30 | 显示全部楼层
mark。
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
8
金钱
8
注册时间
2019-8-17
在线时间
2 小时
发表于 2019-8-17 16:06:38 | 显示全部楼层
辛苦辛苦,这是造福码农的帖子
回复 支持 反对

使用道具 举报

2

主题

33

帖子

0

精华

初级会员

Rank: 2

积分
143
金钱
143
注册时间
2013-1-12
在线时间
27 小时
发表于 2019-9-9 16:11:01 | 显示全部楼层
谢谢楼主,学习了。
回复 支持 反对

使用道具 举报

0

主题

5

帖子

0

精华

新手上路

积分
44
金钱
44
注册时间
2019-8-28
在线时间
10 小时
发表于 2019-9-9 23:25:45 | 显示全部楼层
请教楼主:这个AES加密和解密好像不行。 改下就可以。是不是我理解错了  这么改采仿真才是对的 void aesDecrypt( unsigned char * buffer, unsigned char * chainBlock )//解密 { //        aesDecInit(); //  CopyBytes( tempbuf, buffer, BLOCKSIZE ); //  InvCipher( buffer, expandedKey ); //  XORBytes( buffer, chainBlock, BLOCKSIZE ); //  CopyBytes( chainBlock, tempbuf, BLOCKSIZE );                 aesDecInit();   CopyBytes( buffer, chainBlock, BLOCKSIZE );   InvCipher( buffer, expandedKey );  // XORBytes( buffer, chainBlock, BLOCKSIZE );   CopyBytes( chainBlock, buffer, BLOCKSIZE ); }   //buffer 加密缓存, chainblock要加密的块 void aesEncrypt( unsigned char * buffer, unsigned char * chainBlock )//加密 { //        aesEncInit(); //  XORBytes( buffer, chainBlock, BLOCKSIZE ); //  Cipher( buffer, expandedKey ); //  CopyBytes( chainBlock, buffer, BLOCKSIZE );         aesEncInit();   CopyBytes( buffer, chainBlock, BLOCKSIZE );   Cipher( buffer, expandedKey );   CopyBytes( chainBlock, buffer, BLOCKSIZE );         }
回复 支持 反对

使用道具 举报

0

主题

5

帖子

0

精华

新手上路

积分
44
金钱
44
注册时间
2019-8-28
在线时间
10 小时
发表于 2019-9-9 23:26:26 | 显示全部楼层
请教楼主:这个AES加密和解密好像不行。
改下就可以。是不是我理解错了

这么改采仿真才是对的
void aesDecrypt( unsigned char * buffer, unsigned char * chainBlock )//解密
{
//        aesDecInit();
//  CopyBytes( tempbuf, buffer, BLOCKSIZE );
//  InvCipher( buffer, expandedKey );
//  XORBytes( buffer, chainBlock, BLOCKSIZE );
//  CopyBytes( chainBlock, tempbuf, BLOCKSIZE );
                aesDecInit();
  CopyBytes( buffer, chainBlock, BLOCKSIZE );
  InvCipher( buffer, expandedKey );
// XORBytes( buffer, chainBlock, BLOCKSIZE );
  CopyBytes( chainBlock, buffer, BLOCKSIZE );
}


//buffer 加密缓存, chainblock要加密的块
void aesEncrypt( unsigned char * buffer, unsigned char * chainBlock )//加密
{
//        aesEncInit();
//  XORBytes( buffer, chainBlock, BLOCKSIZE );
//  Cipher( buffer, expandedKey );
//  CopyBytes( chainBlock, buffer, BLOCKSIZE );
        aesEncInit();
  CopyBytes( buffer, chainBlock, BLOCKSIZE );
  Cipher( buffer, expandedKey );
  CopyBytes( chainBlock, buffer, BLOCKSIZE );       
}
回复 支持 反对

使用道具 举报

0

主题

5

帖子

0

精华

新手上路

积分
44
金钱
44
注册时间
2019-8-28
在线时间
10 小时
发表于 2019-9-9 23:27:20 | 显示全部楼层
请教楼主:这个AES加密和解密好像不行。 改下就可以。是不是我理解错了  这么改采仿真才是对的 void aesDecrypt( unsigned char * buffer, unsigned char * chainBlock )//解密 { //        aesDecInit(); //  CopyBytes( tempbuf, buffer, BLOCKSIZE ); //  InvCipher( buffer, expandedKey ); //  XORBytes( buffer, chainBlock, BLOCKSIZE ); //  CopyBytes( chainBlock, tempbuf, BLOCKSIZE );                 aesDecInit();   CopyBytes( buffer, chainBlock, BLOCKSIZE );   InvCipher( buffer, expandedKey );  // XORBytes( buffer, chainBlock, BLOCKSIZE );   CopyBytes( chainBlock, buffer, BLOCKSIZE ); }   //buffer 加密缓存, chainblock要加密的块 void aesEncrypt( unsigned char * buffer, unsigned char * chainBlock )//加密 { //        aesEncInit(); //  XORBytes( buffer, chainBlock, BLOCKSIZE ); //  Cipher( buffer, expandedKey ); //  CopyBytes( chainBlock, buffer, BLOCKSIZE );         aesEncInit();   CopyBytes( buffer, chainBlock, BLOCKSIZE );   Cipher( buffer, expandedKey );   CopyBytes( chainBlock, buffer, BLOCKSIZE );         }
回复 支持 反对

使用道具 举报

0

主题

37

帖子

0

精华

高级会员

Rank: 4

积分
734
金钱
734
注册时间
2019-9-26
在线时间
90 小时
发表于 2019-10-18 00:20:45 | 显示全部楼层
多谢分享,谢谢
回复 支持 反对

使用道具 举报

1

主题

39

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
214
金钱
214
注册时间
2019-10-19
在线时间
16 小时
发表于 2019-10-20 15:44:21 | 显示全部楼层
回复 支持 反对

使用道具 举报

1

主题

39

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
214
金钱
214
注册时间
2019-10-19
在线时间
16 小时
发表于 2019-10-20 15:46:03 | 显示全部楼层
回复 支持 反对

使用道具 举报

8

主题

55

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
314
金钱
314
注册时间
2017-1-14
在线时间
48 小时
发表于 2019-10-20 17:59:07 | 显示全部楼层
再顶顶顶!!
回复 支持 反对

使用道具 举报

3

主题

8

帖子

0

精华

初级会员

Rank: 2

积分
52
金钱
52
注册时间
2019-2-21
在线时间
13 小时
发表于 2019-11-8 18:18:49 | 显示全部楼层
感谢楼主!非常的帖子
回复 支持 反对

使用道具 举报

0

主题

70

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
206
金钱
206
注册时间
2019-12-3
在线时间
27 小时
发表于 2019-12-4 17:35:18 | 显示全部楼层
下载学习一下
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
7
金钱
7
注册时间
2020-1-3
在线时间
1 小时
发表于 2020-1-4 23:53:27 | 显示全部楼层
这个好! 多谢分享~
回复 支持 反对

使用道具 举报

1

主题

11

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2019-5-18
在线时间
3 小时
发表于 2020-2-2 19:24:00 | 显示全部楼层
不错啊,一般都参考原子的IAP程序
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

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

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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