[求助] 求助LwIP操作系统移植编译、链接的问题!

186874509   2010-11-15 19:53 楼主
编译没有问题,但是链接有好几个如下的问题:
.\Object\ucos_lwip.axf: Error: L6406E: No space in execution regions with .ANY selector matching rit128x96x4.o(.data).
.\Object\ucos_lwip.axf: Error: L6406E: No space in execution regions with .ANY selector matching udp.o(.data).
盼高手指点,不知道这个问题怎么解决?
还有LWIP移植的时候,出现了好多这个警告,不知道怎么避免?
lwIP\src\core\memp.c(313): warning:  #177-D: variable "old_level" was declared but never referenced
lwIP\src\core\mem.c(382): warning:  #177-D: variable "lev" was declared but never referenced
谢谢

回复评论 (3)

明显写着DATA不够用啦

后两个是声明了没用的变量不用管地;P
http://shop34182318.taobao.com/ https://shop436095304.taobao.com/?spm=a230r.7195193.1997079397.37.69fe60dfT705yr
点赞  2010-11-15 20:37

回复 楼主 186874509 的帖子

楼主,第一个问题有可能是你的flash太小了,或者你生成的网页数据等等太大了,或者是因为你现在使用的是Use memory layout from target dialog,这个配置是keil自己根据你所选的器件决定的,所以还有可能你所选的器件不对啊。
如果一般情况下,如果选对了器件那么flash的大小是不会错的。
当然你有可以Use memory layout from Scatter file。这样你可以比较准确的把相关的regions放到指定的selector里边,例如:
LR_IROM 0x00000000 0x00040000
{
    ;
    ; Specify the Execution Address of the code and the size.
    ;
    ER_IROM 0x00000000 0x00040000
    {
        *.o (RESET, +First)
        * (InRoot$$Sections, +RO)
    }

    ;
    ; Specify the Execution Address of the data area.
    ;
    RW_IRAM 0x20000000 0x00010000
    {
        ;
        ; Uncomment the following line in order to use IntRegister().
        ;
        ;* (vtable, +First)
        * (+RW, +ZI)
    }
}
点赞  2010-11-16 08:53

回复 楼主 186874509 的帖子

据我观察这个old_level出现在lwIP协议栈中的mem.c memp.c和pbuf.c中,其实质就是定义了的一个unsigned char型的变量,用来保存使用IntMasterDisable()关掉中断时的返回值,这个主要是为了使在进入到一些子函数里边的时候不影响原来的中断开启状态,在进入到某个函数的时候如果原来主中断本来就是关的,我们可以再关中断,但退出时请不要打开中断,如果原来中断没有关,我们关掉处理器对中断的响应,但是在退出的时候我们必须打开中断。
   old_level是出于协议栈内部的东西,难道你修改了协议栈或者用的不是Stellaris?
点赞  2010-11-16 09:19
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复