rt-thread AP6212 wifi驱动框架
2021-07-19 09:34:09 0 举报
AI智能生成
登录查看完整内容
rt-thread ap6212 wifi框架
作者其他创作
大纲/内容
1.__rt_init_lwip_system_init
2.__rt_init_rt_wlan_lwip_init
3.__rt_init_rt_wlan_init
4.__rt_init_rt_wlan_workqueue_init
5.__rt_init_rt_mmcsd_core_init
6.__rt_init_rt_hw_sdio_init
7.__rt_init_ap6212_init
8.__rt_init_wifi_hw_init(ap6212库初始化)
9.__rt_init_rt_hw_wlan_init
rt-thread sdio wifi AP6212 总线 设备 驱动模型
WLAN 管理层wlan_mgnt.cwlan_mgnt.h
数据结构
structrt_wlan_mgnt_deswlan管理结构体
structrt_wlan_scan_result扫描的wifi信息
函数
intrt_wlan_init(void)管理层初始化函数
staticvoidrt_wlan_cyclic_check(void*parameter)定时处理回调函数
WLAN config层wlan_cfg.cwlan_cfg.h
structrt_wlan_cfg_infowlan配置信息
structrt_wlan_infoinfo;WIFI的信息
structrt_wlan_keykey;WIFI密码的信息
voidrt_wlan_cfg_set_ops(conststructrt_wlan_cfg_ops*ops);向WLAN配置管理层提供访问Flash的接口函数
WLNA 协议层与Lwip协议适配wlan_lwip.c
structlwip_prot_des
structrt_wlan_protprotwlan层的设备
structeth_deviceeth;网卡设备
structrt_timertimer定时器
structrt_workwork;
intrt_wlan_lwip_init(void)
rt_err_trt_wlan_prot_regisetr(structrt_wlan_prot*prot)像wlan协议层注册port
rt_err_trt_wlan_prot_regisetr(structrt_wlan_prot*prot)像wlan协议层注册事件处理函数
WLAN协议层wlan_prot.cwlan_prot.h
structrt_wlan_prot
charname[RT_WLAN_PROT_NAME_LEN];协议名
rt_uint32_tid;协议id
conststructrt_wlan_prot_ops*ops;操作函数
WLAN DEVICE 层wlan_dev.cwlan_dev.h
rt_wlan_devicewifi 设备
conststructrt_wlan_dev_ops*opswifi操作函数
staticrt_err_t_rt_wlan_dev_init(rt_device_tdev)wlan 设备初始化
bcm_wlan_init() 博通提供的wifi库里的函数
WLAN 固件层(黑盒)drv_wlan.c
线程
staticvoidwifi_init_thread_entry(void*parameter)wifi 初始化线程
wifi_hw_init();调用库的wifi初始化函数
intwiced_platform_resource_size(intresource)获取wifi 固件的大小
wlan 与 sdio 层的连接关系是黑盒子 使用固件库
SDIO BUS 协议层mm_csd_core.c SDIO BUSmm_csd_core.h SDIO BUSsd.c //sd卡协议sdio.c //sdio卡协议mmc.c //mmc卡协议
rt_mmcsd_req (SDIO 请求)一个完整的SDIO请求一般包含1.启动命令 2.数据 3.结束命令
1.struct rt_mmcsd_data *data(数据)
2.struct rt_mmcsd_cmd *cmd(启始命令)
3.struct rt_mmcsd_cmd *stop(结束命令)
void mmcsd_detect(void *param)SDIO 设备探测线程(循环探测)
1.SDIO Card 插入
1.static void mmcsd_power_up(struct rt_mmcsd_host *host)上电
2.rt_int32_t mmcsd_go_idle(struct rt_mmcsd_host *host)卡识别模式 发送cmd0
4.是什么卡
SDIO 卡
3.rt_int32_t mmcsd_select_card(struct rt_mmcsd_card *card)发送cmd7
4.static rt_int32_t sdio_read_cccr(struct rt_mmcsd_card *card)发送cmd52 读取sdio卡cccr寄存器信息
5.static rt_int32_t sdio_read_cis(struct rt_sdio_function *func)发送cmd52 读取sdio卡的cis寄存器信息
6.static rt_int32_t sdio_set_highspeed(struct rt_mmcsd_card *card)发送cmd52命令设置sdio卡的工作速度
7.static rt_int32_t sdio_set_bus_wide(struct rt_mmcsd_card *card)发送cmd52命令设置sdio数据线位宽
9.static rt_int32_t sdio_register_card(struct rt_mmcsd_card *card)注册SDIO卡
SD卡
MMC卡
2.SDIO Card 移除
对外接口
int rt_mmcsd_core_init(void)创建mmcsd_detect_thread 线程来探测是否有SDIO外设存在
底层 SDIO硬件接口drv_sdio.cdrv_sdio.h
底层数据结构(实际传输使用)
sdio_pkg(SDIO数据包结构)
1.rt_mmcsd_cmd *cmd(SDIO命令和响应)
2.void *buff(发送或接收的数据)
stm32_sdio_des
1.struct stm32_sdio *hw_sdio(stm32 sdio 相关寄存器)
2.SD_HandleTypeDef hsd(stm32 sdio 句柄)
对外数据结构
stm32_sdio_class
1.stm32_sdio_des *des
2.stm32_sdio_config *cfg
3.rt_mmcsd_host host
rthw_sdio
1.rt_mmcsd_host *host
2.stm32_sdio_des sdio_des(硬件相关信息)
3.sdio_pkg *pkg(SDIO 数据包)
实际传输函数
static void rthw_sdio_wait_completed(struct rthw_sdio *sdio)等待sdio cmd完成
对实际传输函数的进一步封装
对外的接口
struct rt_mmcsd_host *sdio_host_create(struct stm32_sdio_des *sdio_des)创建 rt_mmcsd_host *host和 rthw_sdio *sdio 在此函数将封装好的传输函数注册进去给上一层用并且在这里通知上层有SDIO设备存在
int rt_hw_sdio_init(void)sdio接口硬件初始化(自动初始化)
0 条评论
回复 删除
下一页