IMX6ULL移植篇-FAT 格式文件系统操作命令一

一.   FAT 格式文件系统 

FAT/FAT32 曾经是 windows下主流文件格式,虽然FAT已经这么多年了,也见识到一些缺点,但熟悉FAT,还是对文件系统认识有很大帮助。

我所使用的 是正点原子的 阿尔法 开发板,核心板上是 Nand-Flash,而非 EMMC存储芯片。

这里通过对 SD卡进行文件操作命令来使用。

一般来说,需要具备一些认识:

1. 文件存在 flash或硬盘里,还是一个个字节进行存储的,存储介子本身不负责具体内容。如果要对硬盘的数据进行识别,必须需要一定格式,还需要一个驱动程序进行识别。

2. 文件格式最主要作用:格式化管理,快速查找文件。

二.  FAT格式文件操作命令

1.   IMX6ULL的 EMMC 或SD卡分区

IMX6ULL 烧写系统时,是把EMMC或SD卡做了三个分区:

第一个分区: uboot (这个是无法识别的)

第二个分区:存放系统镜像,即Linux zImage+设备树文件(.dtb)。是FAT格式的

第三个分区:存放根文件系统的,EXT4格式的。

2.  FAT 格式文件操作命令

FAT格式文件操作命令,即针对 FAT格式的文件系统的操作。

支持 FAT 格式的文件系统的文件操作命令有 fatinfo、 fatlsfstype fatload fatwrite

(1)  fatinfo 命令

fatinfo 命令令用于查询指定 MMC 设备分区的文件系统信息,格式如下:

fatinfo <interface> [<dev[:part]>]
interface 表示接口,例如 mmc dev 是查询的设备号, part 是要查询的分区。

例如,我们要查SD卡的 分区 0 的文件系统信息,命令如下:

=> fatinfo mmc 0:0

** Unable to use mmc 0:0 for fatinfo **

可以看出,分区0 是查看失败。因为之前说过,SD的第一个分区存放 uboot的,是裸机程序,没有文件系统格式。

SD卡的 分区 1 的文件系统信息,命令如下:

=> fatinfo mmc 0:1
Interface:  MMC
  Device 0: Vendor: Man 000003 Snr 9193d501 Rev: 15.13 Prod: SD32G 
            Type: Removable Hard Disk
            Capacity: 30448.0 MB = 29.7 GB (62357504 x 512)
Filesystem: FAT32 "NO NAME    "
=> 

可以看出,SD卡的分区1即第二个分区,存放的是 FAT格式系统文件。

(2)  fatls 命令

fatls 命令用于查询 FAT 格式设备的目录和文件信息,命令格式如下:
fatls <interface> [<dev[:part]>] [directory]
interface 是要查询的接口,比如 mmc dev 是要查询的设备号, part 是要查询的分区, directory
是要查询的目录。

例如,查询 SD卡的 分区 1 中的所有的目录和文件,可以看出,SD卡没有 FAT格式的文件,只有一个目录。
操作如下:
=> fatls mmc 0:1
            system volume information/

0 file(s), 1 dir(s)

(3)  fstype 命令

fstype 用于查看 MMC 设备某个分区的文件系统格式,命令格式如下:
fstype <interface> <dev>:<part>

例如,查看 SD卡的第 1 个分区。因为分区 0 存放的 uboot,并且分区 0 没有格式化,所以,文件系统格式未知。如下:

=> fstype mmc 0:0
Failed to mount ext2 filesystem...
** Unrecognized filesystem type **

查看 SD卡的第 2 个分区,以下可以看出SD的第 2 个分区的格式是FAT。

结果如下:

=> fstype mmc 0:1
fat

### IMX6ULL 平台 RT-Thread 操作系统移植 #### 移植概述 RT-Thread 是个实时嵌入式操作系统,其在 i.MX6ULL 平台上运行需要完成硬件驱动适配以及 BSP(Board Support Package)的构建。通常情况下,BSP 文件夹包含了启动代码、外设驱动程序以及其他必要的组件。 为了实现 RT-Thread 在 i.MX6ULL 上的成功移植,可以参考已有的开发板配置并进行调整。以下是关于如何修改和适配的关键部分: --- #### 修改 `board.c` 驱动文件 在 RT-Thread 的 BSP 中,`board.c` 负责初始化硬件资源,例如时钟、GPIO 和其他外设。如果目标平台与现有支持的开发板存在差异,则需针对新开发板重新定义这些功能[^1]。 具体操作如下: 1. 找到对应的路径:`D:\rtthread\rt-smart\kernel\bsp\imx6ull\drivers\board.c`。 2. 编辑该文件以匹配新的硬件特性,比如 GPIO 初始化函数或设备树节点更新。 --- #### 创建自定义开发板目录结构 基于已有模板创建个新的开发板目录是非常常见的做法。假设当前正在为名为 “lanjut”的开发板做准备,可以通过复制现有的 MX6ULLEVK 板子来快速搭建环境[^2]: ```bash cp -r board/freescale/mx6ullevk/ board/freescale/mx6ull_lanjut/ mv board/freescale/mx6ull_lanjut/mx6ullevk.c board/freescale/mx6ull_lanjut/mx6ull_lanjut.c ``` 上述命令完成了以下工作: - 将原始 EVK 板的相关资料拷贝至新位置; - 对核心 C 文件重命名以便区分不同型号间的逻辑实现。 --- #### 设置 CPU 及外围模块频率参数 i.MX6ULL 默认引导过程中会自动设定系列重要总线与时钟速率。例如,在某些模式下 BootROM 设定核频达到 396 MHz (System PLL = 528 MHz),而 AHB 总线则维持于较低水平——即大约 132 MHz 左右[^3]。因此,在实际项目里可能还需要进步确认是否有必要手动干预此类默认行为。 --- #### 复制 U-Boot 或裸机工程中的必要片段作为补充材料 当涉及到更深层次定制化需求的时候,可以从厂商提供的文档或者开源社区获取灵感。例如从指定路径提取 UART 测试样例用于串口通信验证[^5]: ```c // Example of initializing a simple UART communication on IMX6ULL. #include "fsl_common.h" #include "fsl_uart.h" void uart_init(void){ CLOCK_EnableClock(kCLOCK_Uart); uart_config_t config; UART_GetDefaultConfig(&config); config.baudRate_Bps = 115200; // Set baud rate to standard value UART_Init(UART_BASEADDR, &config, CLOCK_GetFreq(kCLOCK_CoreSysClk)); } ``` 此段伪代码展示了怎样通过 FSL 提供 API 接口去激活特定端口号下的数据收发能力。 --- #### 关键步骤总结 尽管每步单独看来并不复杂,但整体流程却涵盖了多个层面的知识点。主要包括但不限于以下几个方面[^4]: - **生成专属配置档案**: 借助既有样板迅速建立基础框架。 - **调试工具链兼容性问题**: 确认交叉编译器版本满足最新标准要求。 - **完善中断服务机制设计**: 结合应用场合合理规划优先级分配策略。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值