打印
[STM32F1]

STM32+FreeRTOS+LwIP的iap+app的问题

[复制链接]
3918|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 a32425262 于 2016-4-22 15:11 编辑

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

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

void ethernetif_input( void * pvParameters )
#if 0
{
        struct pbuf *p;
  
        for( ;; )
        {
                if (xSemaphoreTake( s_xSemaphore, emacBLOCK_TIME_WAITING_FOR_INPUT)==pdTRUE)
                {
                        p = low_level_input( s_pxNetIf );
                        if (ERR_OK != s_pxNetIf->input( p, s_pxNetIf))
                        {
                                pbuf_free(p);
                                p=NULL;
                        }
                }
        }
}  
#else
{
        struct pbuf *p;
  
        for( ;; )
        {
                if (xSemaphoreTake( s_xSemaphore, emacBLOCK_TIME_WAITING_FOR_INPUT)==pdTRUE)
                {
                        TRY_GET_NEXT_FRAME:
                        p = low_level_input( s_pxNetIf );
                        if   (p != NULL)
                        {
                                if (ERR_OK != s_pxNetIf->input( p, s_pxNetIf))
                                {
                                        pbuf_free(p);
                                }
                                else
                                {
                                        goto TRY_GET_NEXT_FRAME;
                                }
                        }
                }
        }
}  
#endif

未解决:现在直接运行(0x8000 0000)是可以的,但是我想分为IAP(0x8000 0000)和APP(0x8000 4000)两部分就不行了

IAP已经关闭了全部中断,使用ucos是可以正常的
main主函数第一句添加 NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x4000);中断部分也添加该语句

void ETH_NVIC_Config(void)
{
        NVIC_InitTypeDef   NVIC_InitStructure;

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

        /* Enable the Ethernet global Interrupt */
        NVIC_InitStructure.NVIC_IRQChannel = ETH_IRQn;
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
        NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
        NVIC_Init(&NVIC_InitStructure);     
}



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



沙发
jacycle| | 2017-9-1 17:25 | 只看该作者
linker 菜单下的 sct文件看看对不对

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

14

帖子

0

粉丝