OpenEdv-开源电子网

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

使用以太网进行IAP操作,和串口IAP有很大不同

[复制链接]

19

主题

85

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
202
金钱
202
注册时间
2014-9-16
在线时间
11 小时
发表于 2015-7-9 18:35:36 | 显示全部楼层 |阅读模式
5金钱
如题,原子哥的串口IAP已经试验通过,现想将其修改为以太网IAP操作,使用UDP进行传输。
但是有几个问题。
1)串口可以通过中断将大容量APP写进FLASH里面,非常顺利
u8 USART_RX_BUF[USART_REC_LEN] __attribute__ ((at(0X08050000)));
u32 FLASH_APPX_ADDR=0x08050000;

void USART1_IRQHandler(void)                 //?®??1????·??????ò
{
u8 Res;
#ifdef OS_CRITICAL_METHOD //????OS_CRITICAL_METHOD?¨????,???÷????ucosII??.
OSIntEnter();    
#endif
if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)  //????????(????????????±?????0x0d 0x0a?á??)
{
Res =USART_ReceiveData(USART1);//(USART1->DR); //????????????????

if(USART_RX_CNT<USART_REC_LEN)
  {

FLASH_Unlock(); //???? 
  FLASH_DataCacheCmd(DISABLE);//FLASH????????,±???????????????
FLASH_ProgramByte(FLASH_APPX_ADDR,Res);
FLASH_DataCacheCmd(ENABLE); //FLASH?????á??,????????????
FLASH_Lock();//????

FLASH_APPX_ADDR +=1;
USART_RX_CNT++;


/* {
USART_RX_BUF[USART_RX_CNT]=Res;
USART_RX_CNT++;     
}
*/
  } 
#ifdef OS_CRITICAL_METHOD //????OS_CRITICAL_METHOD?¨????,???÷????ucosII??.
OSIntExit();    
#endif

#endif

但在原子哥的UDP的接收程序里,没有中断操作,只有系统自带的接收函数,它是怎么接收数据的,
不知道怎么修改,在任务中执行,怎么将其接收进FLash里啊,
netconn_recv(udpconn,&recvbuf); 

谁有以太网UDP进行IAP的程序参考一下,谢谢

最佳答案

查看完整内容[请看2#楼]

回复【7楼】laoguren1122: --------------------------------- 做协议。 参考modbus。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165352
金钱
165352
注册时间
2010-12-1
在线时间
2108 小时
发表于 2015-7-9 18:35:37 | 显示全部楼层
回复【7楼】laoguren1122:
---------------------------------
做协议。
参考modbus。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165352
金钱
165352
注册时间
2010-12-1
在线时间
2108 小时
发表于 2015-7-9 18:35:37 | 显示全部楼层
回复【9楼】laoguren1122:
---------------------------------
还是协议的问题。
你真要是会用modbus,modbus采用的是发送+应答的机制,完全就不需要你有大缓存,你大可以写入一个字节,再写下一个字节,都是可以的,只要你不给主机应答,主机就不会发下一个数据给你。想怎么折腾都行。
你上面的所谓问题,自然就不存在了。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165352
金钱
165352
注册时间
2010-12-1
在线时间
2108 小时
发表于 2015-7-9 22:27:59 | 显示全部楼层
你用的哪款开发板?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

19

主题

85

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
202
金钱
202
注册时间
2014-9-16
在线时间
11 小时
 楼主| 发表于 2015-7-10 14:31:03 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
探索者,原子哥有在你的UDP基础上的IAP程序么,网上找了些程序,是根据官方程序改写的,风格和原子哥有比较大的差别,看不懂。
现在已经适应了原子哥风格
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165352
金钱
165352
注册时间
2010-12-1
在线时间
2108 小时
发表于 2015-7-10 23:40:31 | 显示全部楼层
回复【3楼】laoguren1122:
---------------------------------
额,IAP代码和APP代码,没有重叠吧?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

19

主题

85

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
202
金钱
202
注册时间
2014-9-16
在线时间
11 小时
 楼主| 发表于 2015-7-12 20:13:40 | 显示全部楼层
回复【4楼】正点原子:
---------------------------------
AIP和APP确定没有重叠, AIP总共120K多,放在800000开始的地址,APP是从8050000开始的地址。
原子哥的UDP接收区默认在内部ram中,内部ram中直接开了2000字节的空间,但IAP的话远远不够,起码得开100k多,如果把存储空间开在flash中,就不能直接存储,得用flash的写入程序,现在不知道在哪加这个程序,而且查询接收时不接收完没法向flash中写,只能中断接收时加在中断程序里,问题是怎么加,加在哪?看不太懂UDP的底层程序?谁在原子哥的例程基础上做过,请指点一下?
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165352
金钱
165352
注册时间
2010-12-1
在线时间
2108 小时
发表于 2015-7-12 23:03:19 | 显示全部楼层
回复【5楼】laoguren1122:
---------------------------------
可以先测试下收到的数据有没有错误或者遗漏。
比如你可以先设置一个小的工程,比如10KB,这样你全部存储在ram也够了,存储完,通过串口,输出,来看看是不是你发送的数据,有没有遗漏?
然后再考虑将10K的ram写入flash完成APP功能。

学会分析问题。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

19

主题

85

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
202
金钱
202
注册时间
2014-9-16
在线时间
11 小时
 楼主| 发表于 2015-7-13 10:23:42 | 显示全部楼层
回复【6楼】正点原子:
---------------------------------
原子哥,现在不是接受程序对不对的问题,而是怎么将大容量的APP直接储存到FLASH中,我再检验flash中程序的程序就可以了,在UDP的底层哪里修改呢?看了几天还是没有头绪
回复

使用道具 举报

19

主题

85

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
202
金钱
202
注册时间
2014-9-16
在线时间
11 小时
 楼主| 发表于 2015-7-14 08:55:00 | 显示全部楼层
回复【8楼】正点原子:
---------------------------------
现在不是宏观的协议问题,而是操作中遇到的具体细节问题没法解决,说白了就是怎样将接收的大的文件储存到FLASH中,对UDP的底层驱动函数看不太明白,默认存在ram中,不知道在哪改?
回复

使用道具 举报

19

主题

85

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
202
金钱
202
注册时间
2014-9-16
在线时间
11 小时
 楼主| 发表于 2015-7-15 09:52:20 | 显示全部楼层
回复【10楼】正点原子:
---------------------------------
哦,原来是这样,理解了谢谢原子哥指点
回复

使用道具 举报

1

主题

20

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2013-11-22
在线时间
0 小时
发表于 2015-7-16 09:34:24 | 显示全部楼层
tcp上也可以走Modbus协议吗?怎么实现的呢
回复

使用道具 举报

10

主题

49

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
281
金钱
281
注册时间
2017-8-10
在线时间
85 小时
发表于 2019-4-28 16:30:44 | 显示全部楼层
很抽象,能不能具体一点
回复

使用道具 举报

1

主题

2

帖子

0

精华

初级会员

Rank: 2

积分
50
金钱
50
注册时间
2019-8-24
在线时间
12 小时
发表于 2019-8-27 11:12:29 | 显示全部楼层
laoguren1122 发表于 2015-7-13 10:23
回复【6楼】正点原子:
---------------------------------
原子哥,现在不是接受程序对不对的问题,而是怎 ...

请问楼主问题解决了吗?我最近也在学以太网IAP,在这个将接收文件存储到Flash问题上死磕了很久,花了一个多星期没弄出来,求教,有程序参考一下吗?
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-24 16:32

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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