[STM32F1] STM32+FreeRTOS+LwIP的iap+app的问题

[复制链接]
4357|1
 楼主| a32425262 发表于 2016-4-5 00:04 | 显示全部楼层 |阅读模式
本帖最后由 a32425262 于 2016-4-22 15:11 编辑

硬件环境:stm32F107+DM9161软件环境:freertos+LwIP
编译环境:MDK 4.72

已解决:ping一段时间后由不到1ms增加到几千毫秒,需要修改中断部分代码,我是看别人的做法修改的

  1. void ethernetif_input( void * pvParameters )
  2. #if 0
  3. {
  4.         struct pbuf *p;
  5.   
  6.         for( ;; )
  7.         {
  8.                 if (xSemaphoreTake( s_xSemaphore, emacBLOCK_TIME_WAITING_FOR_INPUT)==pdTRUE)
  9.                 {
  10.                         p = low_level_input( s_pxNetIf );
  11.                         if (ERR_OK != s_pxNetIf->input( p, s_pxNetIf))
  12.                         {
  13.                                 pbuf_free(p);
  14.                                 p=NULL;
  15.                         }
  16.                 }
  17.         }
  18. }  
  19. #else
  20. {
  21.         struct pbuf *p;
  22.   
  23.         for( ;; )
  24.         {
  25.                 if (xSemaphoreTake( s_xSemaphore, emacBLOCK_TIME_WAITING_FOR_INPUT)==pdTRUE)
  26.                 {
  27.                         TRY_GET_NEXT_FRAME:
  28.                         p = low_level_input( s_pxNetIf );
  29.                         if   (p != NULL)
  30.                         {
  31.                                 if (ERR_OK != s_pxNetIf->input( p, s_pxNetIf))
  32.                                 {
  33.                                         pbuf_free(p);
  34.                                 }
  35.                                 else
  36.                                 {
  37.                                         goto TRY_GET_NEXT_FRAME;
  38.                                 }
  39.                         }
  40.                 }
  41.         }
  42. }  
  43. #endif

未解决:现在直接运行(0x8000 0000)是可以的,但是我想分为IAP(0x8000 0000)和APP(0x8000 4000)两部分就不行了
QQ截图20160404235639.png
IAP已经关闭了全部中断,使用ucos是可以正常的
main主函数第一句添加 NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x4000);中断部分也添加该语句

  1. void ETH_NVIC_Config(void)
  2. {
  3.         NVIC_InitTypeDef   NVIC_InitStructure;

  4.         NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x4000);
  5.         /* 2 bit for pre-emption priority, 2 bits for subpriority */
  6.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);

  7.         /* Enable the Ethernet global Interrupt */
  8.         NVIC_InitStructure.NVIC_IRQChannel = ETH_IRQn;
  9.         NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
  10.         NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
  11.         NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  12.         NVIC_Init(&NVIC_InitStructure);     
  13. }



但是在运行到NVIC_Init(&NVIC_InitStructure); 就死机了。
谁有过类似的经历吗,或者如何解决。



jacycle 发表于 2017-9-1 17:25 | 显示全部楼层
linker 菜单下的 sct文件看看对不对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

14

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部