我想在F103的开发板上试一下基于网络的IAP实验,初步想法很简单,就是将APP程序发送给开发板然后开发板在接受完APP程序后跳转执行程序。开发板带有网络通信实验的例程,我只需在通信例程的例程上再加入串口IAP例程的iap和stmflash等程序文件,主要是利用iap.c里的读写flash和跳转执行APP的函数。 我把网络编程中接收数据长度上限增大(比如初步试验我采用小规模的APP,将tcp server或者client的最大数据接收长度定为10000字节。其实我也试了一下,由于网络编程的例程这里采用了动态内存管理,接收到的数据其实都是先存储到ram中的,最大接收长度太大编译就会出错)。我用的是tcp server test,最后是在tcp_server_test函数加入iap.c中的iap_write_appbin和iap_load_app函数,如附图所示。tcp_server_recvbuf存储着接收到的程序文件,其最大为10000字节,事实上我测试用程序只有5kb左右。我没有改动tcp_server_recv函数,这里就不贴出tcp_server_recvbuf是如何接收tcp server test传送过来的文件的了。由于网络编程的原始程序大小有210kb左右,我目前只是简单测试没有裁剪程序,所以就将FLASH_APP1_ADDR定为0x08040000,这样就是给带网络编程的Bootloader程序留了256kb,给APP程序也留了256kb。实际程序运行时能够跑到在LCD上显示出“RUNNING FLASH APP”,但是之后程序就没有反应了,不能真正执行我发送过去的APP程序。此外,我发送时是用原点附赠的网络调试助手直接发送的bin文件。本人也是前不久刚上手学习stm32,希望各位大神指点迷津,能告诉我问题可能在哪里或者可以往哪个方向去找问题,谢谢!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>