FreeRTOS+Lwip+STM32F407移植笔记

发布者:masphia最新更新时间:2019-07-23 来源: eefocus关键字:FreeRTOS  Lwip  STM32F407  移植 手机看文章 扫描二维码
随时随地手机看文章

移植步骤:

1 - 先移植FreeRTOS的Demo;

2 - 再移植Lwip的文件(源码&sys_arch&lwip_comm);

3 - 单个实现TCPIP协议栈任务:TCP客户端、TCP服务器和UDP; 

模块:

    - 内存管理:需要给"以太网驱动"、"FreeRTOS"、"Lwip"三个部分分配内存;

        - 以太网DMA描述符&以太网DMA Buffer

        - Lwip的RAM部分:ram_heap&内存池部分:memp;

        - FreeRTOS占用RAM由配置文件定义大小,用于操作系统中动态操作的分配;

        - 另外原子实现的内存管理方式中的内存管理表也会占用很大内存,与内存块大小密切相关;

        - stm32F4的RAM分为普通内存128k和CCM内存64k,两个不能当作一块内存用!;

    - 定时器:操作系统下不需要单独实现Lwip的周期任务函数的调用;

    - LAN8720驱动:F407需要添加ST的官网以太网库,然后实现驱动;

    - FreeRTOS:接口调用需要注意任务级和中断级接口的区分;

    - sys_arch:解决操作系统和lwip的关系,主要是信号量和邮箱;

    - liwp_comm:解决lwip和以太网之间的关系:以太网驱动;

注意事项:

    - 以太网中断要调节到操作系统可屏蔽的范围内(进入临界区可屏蔽以太网中断);

    - TCP服务器、TCP客户端、UDP服务任务堆栈需要大一点;

    - 测试需要在DHCP完成之后开始;

    - 测试的PC防火墙需要关闭;

    - 测试的上位机要多个测试,某个上位机不一定能实现"全部"通信!;    

优化:

    - 网线热插拔(目前没有网线初始化不成功,插拔后应该可再次触发DHCP,怎么检测

       网线插拔事件的发生);

    - lwip任务的时基调到由操作系统提供(任务调度器挂起会不会影响获取到的TICK值?)

疑问:

    - MII,RMII......

    - 硬件帧校验(low_level_init()、)

    - 网络相关的调试工具

    - pbuf、netif结构

    - ethernetif.c文件被完全替换,看看源文件;

    - 滴答定时器中断在哪配置;

    - sys_arch中的信号量相关函数实现是否正确还不能保证,需要再看,尤其是创建函数的传参感觉有问题。

关键字:FreeRTOS  Lwip  STM32F407  移植 引用地址:FreeRTOS+Lwip+STM32F407移植笔记

上一篇:STM32G0开发笔记-1-开发环境搭建之STM32CubeMX
下一篇:[stm32]Cube配置usart1发送数据

小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved