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
WLAN 管理层
wlan_mgnt.c
wlan_mgnt.h
wlan_mgnt.c
wlan_mgnt.h
数据结构
structrt_wlan_mgnt_des
wlan管理结构体
wlan管理结构体
structrt_wlan_scan_result
扫描的wifi信息
扫描的wifi信息
函数
intrt_wlan_init(void)
管理层初始化函数
管理层初始化函数
staticvoidrt_wlan_cyclic_check(void*parameter)
定时处理回调函数
定时处理回调函数
staticvoidrt_wlan_auto_connect_run(structrt_work*work,void*parameter)
wifi自动重连函数
wifi自动重连函数
WLAN config层
wlan_cfg.c
wlan_cfg.h
wlan_cfg.c
wlan_cfg.h
数据结构
structrt_wlan_cfg_info
wlan配置信息
wlan配置信息
structrt_wlan_infoinfo;
WIFI的信息
WIFI的信息
structrt_wlan_keykey;
WIFI密码的信息
WIFI密码的信息
函数
voidrt_wlan_cfg_set_ops(conststructrt_wlan_cfg_ops*ops);
向WLAN配置管理层提供访问Flash的接口函数
向WLAN配置管理层提供访问Flash的接口函数
WLNA 协议层与Lwip协议适配
wlan_lwip.c
wlan_lwip.c
数据结构
structlwip_prot_des
structrt_wlan_protprot
wlan层的设备
wlan层的设备
structeth_deviceeth;
网卡设备
网卡设备
structrt_timertimer
定时器
定时器
structrt_workwork;
函数
intrt_wlan_lwip_init(void)
rt_err_trt_wlan_prot_regisetr(structrt_wlan_prot*prot)
像wlan协议层注册port
像wlan协议层注册port
rt_err_trt_wlan_prot_regisetr(structrt_wlan_prot*prot)
像wlan协议层注册事件处理函数
像wlan协议层注册事件处理函数
WLAN协议层
wlan_prot.c
wlan_prot.h
wlan_prot.c
wlan_prot.h
数据结构
structrt_wlan_prot
charname[RT_WLAN_PROT_NAME_LEN];
协议名
协议名
rt_uint32_tid;
协议id
协议id
conststructrt_wlan_prot_ops*ops;
操作函数
操作函数
函数
rt_err_trt_wlan_prot_attach(constchar*dev_name,constchar*prot_name)
找到wlan 设备 并绑定协议 wlan 设备事件注册
找到wlan 设备 并绑定协议 wlan 设备事件注册
staticvoidrt_wlan_prot_event_handle(structrt_wlan_device*wlan,rt_wlan_dev_event_tevent,structrt_wlan_buff*buff,void*parameter)
wlan设备层产生的事件处理函数
wlan设备层产生的事件处理函数
WLAN DEVICE 层
wlan_dev.c
wlan_dev.h
wlan_dev.c
wlan_dev.h
数据结构
rt_wlan_device
wifi 设备
wifi 设备
conststructrt_wlan_dev_ops*ops
wifi操作函数
wifi操作函数
函数
rt_err_trt_wlan_dev_register(structrt_wlan_device*wlan,constchar*name,conststructrt_wlan_dev_ops*ops,rt_uint32_tflag,void*user_data)
wlan 设备注册至设备管理层
wlan 设备注册至设备管理层
staticrt_err_t_rt_wlan_dev_init(rt_device_tdev)
wlan 设备初始化
wlan 设备初始化
staticrt_err_t_rt_wlan_dev_control(rt_device_tdev,intcmd,void*args)
wlan 操作函数
wlan 操作函数
bcm_wlan_init()
博通提供的wifi库里的函数
博通提供的wifi库里的函数
WLAN 固件层(黑盒)
drv_wlan.c
drv_wlan.c
线程
staticvoidwifi_init_thread_entry(void*parameter)
wifi 初始化线程
wifi 初始化线程
wifi_hw_init();
调用库的wifi初始化函数
调用库的wifi初始化函数
rt_wlan_set_mode(RT_WLAN_DEVICE_STA_NAME,RT_WLAN_STATION);
设置wifi工作模式为station模式
设置wifi工作模式为station模式
函数
intwiced_platform_resource_size(intresource)
获取wifi 固件的大小
获取wifi 固件的大小
intwiced_platform_resource_read(intresource,uint32_toffset,void*buffer,uint32_tbuffer_size)
读取wifi固件
读取wifi固件
wlan 与 sdio 层的连接关系是黑盒子 使用固件库
SDIO BUS 协议层
mm_csd_core.c SDIO BUS
mm_csd_core.h SDIO BUS
sd.c //sd卡协议
sdio.c //sdio卡协议
mmc.c //mmc卡协议
mm_csd_core.c SDIO BUS
mm_csd_core.h SDIO BUS
sd.c //sd卡协议
sdio.c //sdio卡协议
mmc.c //mmc卡协议
数据结构
rt_mmcsd_req (SDIO 请求)
一个完整的SDIO请求一般包含
1.启动命令 2.数据 3.结束命令
一个完整的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 设备探测线程(循环探测)
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
卡识别模式 发送cmd0
3.rt_err_t mmcsd_send_if_cond(struct rt_mmcsd_host *host, rt_uint32_t ocr)
卡识别模式 发送cmd8
卡识别模式 发送cmd8
4.是什么卡
SDIO 卡
1.rt_int32_t sdio_io_send_op_cond(struct rt_mmcsd_host *host,
rt_uint32_t ocr,
rt_uint32_t *cmd5_resp)
发送cmd5 查询IO card 信息
rt_uint32_t ocr,
rt_uint32_t *cmd5_resp)
发送cmd5 查询IO card 信息
2.rt_int32_t init_sdio(struct rt_mmcsd_host *host, rt_uint32_t ocr)
SDIO card 设备初始化
SDIO card 设备初始化
1.rt_uint32_t mmcsd_select_voltage(struct rt_mmcsd_host *host, rt_uint32_t ocr)
设置SDIO卡工作电压
设置SDIO卡工作电压
2.static rt_int32_t sdio_init_card(struct rt_mmcsd_host *host, rt_uint32_t ocr)
SDIO卡设备初始化
SDIO卡设备初始化
1.rt_int32_t sdio_io_send_op_cond(struct rt_mmcsd_host *host,
rt_uint32_t ocr,
rt_uint32_t *cmd5_resp)
发送cmd5
rt_uint32_t ocr,
rt_uint32_t *cmd5_resp)
发送cmd5
2.rt_err_t mmcsd_get_card_addr(struct rt_mmcsd_host *host, rt_uint32_t *rca)
发送cmd3 进入数据传输模式
发送cmd3 进入数据传输模式
3.rt_int32_t mmcsd_select_card(struct rt_mmcsd_card *card)
发送cmd7
发送cmd7
4.static rt_int32_t sdio_read_cccr(struct rt_mmcsd_card *card)
发送cmd52 读取sdio卡cccr寄存器信息
发送cmd52 读取sdio卡cccr寄存器信息
5.static rt_int32_t sdio_read_cis(struct rt_sdio_function *func)
发送cmd52 读取sdio卡的cis寄存器信息
发送cmd52 读取sdio卡的cis寄存器信息
6.static rt_int32_t sdio_set_highspeed(struct rt_mmcsd_card *card)
发送cmd52命令设置sdio卡的工作速度
发送cmd52命令设置sdio卡的工作速度
7.static rt_int32_t sdio_set_bus_wide(struct rt_mmcsd_card *card)
发送cmd52命令设置sdio数据线位宽
发送cmd52命令设置sdio数据线位宽
8.static rt_int32_t sdio_initialize_function(struct rt_mmcsd_card *card,
rt_uint32_t func_num)
发送cmd52命令获取sdio卡的FBR信息
rt_uint32_t func_num)
发送cmd52命令获取sdio卡的FBR信息
9.static rt_int32_t sdio_register_card(struct rt_mmcsd_card *card)
注册SDIO卡
注册SDIO卡
rt_inlinert_int32_tsdio_match_card(structrt_mmcsd_card*card,
conststructrt_sdio_device_id*id)
conststructrt_sdio_device_id*id)
SD卡
1.rt_err_t mmcsd_send_app_op_cond(struct rt_mmcsd_host *host,
rt_uint32_t ocr,
rt_uint32_t *rocr)
发送ACMD41 获取SD card 信息
rt_uint32_t ocr,
rt_uint32_t *rocr)
发送ACMD41 获取SD card 信息
2.rt_int32_t init_sd(struct rt_mmcsd_host *host, rt_uint32_t ocr)
SD card 初始化
SD card 初始化
MMC卡
1.rt_err_t mmc_send_op_cond(struct rt_mmcsd_host *host,
rt_uint32_t ocr, rt_uint32_t *rocr)
发送CMD1 识别MMC卡信息
rt_uint32_t ocr, rt_uint32_t *rocr)
发送CMD1 识别MMC卡信息
2.rt_int32_t init_mmc(struct rt_mmcsd_host *host, rt_uint32_t ocr)
MMC卡初始化
MMC卡初始化
2.SDIO Card 移除
对外接口
int rt_mmcsd_core_init(void)
创建mmcsd_detect_thread 线程来探测是否有SDIO外设存在
创建mmcsd_detect_thread 线程来探测是否有SDIO外设存在
底层 SDIO硬件接口
drv_sdio.c
drv_sdio.h
drv_sdio.c
drv_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_send_command(struct rthw_sdio *sdio, struct sdio_pkg *pkg)
发送命令
发送命令
static void rthw_sdio_wait_completed(struct rthw_sdio *sdio)
等待sdio cmd完成
等待sdio cmd完成
对实际传输函数的进一步封装
static void rthw_sdio_request(struct rt_mmcsd_host *host, struct rt_mmcsd_req *req)
sdio 命令和数据的封装 兼容上层接口
sdio 命令和数据的封装 兼容上层接口
static void rthw_sdio_iocfg(struct rt_mmcsd_host *host, struct rt_mmcsd_io_cfg *io_cfg)
对io 时钟的配置 兼容上层接口
对io 时钟的配置 兼容上层接口
对外的接口
struct rt_mmcsd_host *sdio_host_create(struct stm32_sdio_des *sdio_des)
创建 rt_mmcsd_host *host和 rthw_sdio *sdio 在此函数将封装好的传输函数注册进去给上一层用
并且在这里通知上层有SDIO设备存在
创建 rt_mmcsd_host *host和 rthw_sdio *sdio 在此函数将封装好的传输函数注册进去给上一层用
并且在这里通知上层有SDIO设备存在
int rt_hw_sdio_init(void)
sdio接口硬件初始化(自动初始化)
sdio接口硬件初始化(自动初始化)
0 条评论
下一页