开发平台:win10
开发环境:IAR 9.30
OS版本:5.0.0
问题描述:
imxrt1170支持SD卡启动,在sd充当启动器时,如何在系统中挂载sd卡文件系统?
解决办法:
1、使用外部工具(如SD卡读取器)将SD卡分区,最少分两个区,一般两个区也够了,第一个区格不格式化都行,因为只是用来存储二进制文件流,为了保证应用镜像不被破坏以及最大限度容纳应用镜像,第一个区预留32M以上,但也不要分配太大,以免浪费过多;第二个区直接格式化成FAT32文件系统即可;
2、参考NXP官方SDK,确定SD卡基本配置(引脚,时钟),将此与系统现有drv_sdio.c对照,调整合理参数;
3、在mnt.c中加入SD卡挂载逻辑,此时要注意,因为SD卡的检测和SD卡挂载是异步进行的,并且有优先级调度问题,因此在挂载时,需要循环检测SD卡是否已被系统识别(使用find_device接口,查找名为sd0的设备);
4、发现系统存在设备后,即可调用dfs_mount接口挂载SD卡;
以上4步是挂载的一般流程,其中1、2部只需要执行一次。
调试模式下,使用1-4步即可完成SD卡的挂载,但是要注意,当SD卡本身当作启动设备时,它的初始化已经在bootloader或者bootROM中完成,此时RT-thread的SD驱动不能再对SD卡进行初始化了,否则系统将会卡住,此时需要修改drv_sdio.c文件,同时配合板级配置选项(CODE_RUN_ON_SDCARD),确定当前系统处于调试模式还是正常运行模式,来决定是否需要初始化SD卡。
整个实现已整合到主分支中。
原作者:linuxer
|