mt7981cpuuboot下norflash读写代码走读
时间: 2023-12-13 21:05:48 浏览: 161
norflash读写操作
4星 · 用户满意度95%
MT7981 CPUUboot 是联发科技公司针对 MT7981 芯片开发的一个 bootloader,用于引导系统启动。该 bootloader 支持从 NOR Flash 中读取启动镜像。
在 MT7981 CPUUboot 中,NOR Flash 的读写操作主要通过 SPI 接口来实现。以下是大致的代码走读:
1. 首先,定义了 NOR Flash 的一些基本参数,如地址宽度、数据宽度、页大小等。
```c
#define NOR_FLASH_ADDR_WIDTH 24 /* 地址宽度为 24 位 */
#define NOR_FLASH_DATA_WIDTH 8 /* 数据宽度为 8 位 */
#define NOR_FLASH_PAGE_SIZE 256 /* 每页大小为 256 字节 */
```
2. 接着,定义了一些 SPI 操作函数,如 spi_init、spi_read、spi_write 等。这些函数用于初始化 SPI 接口和进行数据读写。
```c
void spi_init(void) {
/* 初始化 SPI 接口 */
/* ... */
}
void spi_read(uint32_t addr, uint8_t *data, uint32_t len) {
/* 从 addr 地址开始读取 len 字节的数据到 data 中 */
/* ... */
}
void spi_write(uint32_t addr, uint8_t *data, uint32_t len) {
/* 从 addr 地址开始写入 len 字节的数据,数据来源为 data */
/* ... */
}
```
3. 然后,定义了 NOR Flash 的一些操作函数,如 norflash_read、norflash_write 等。这些函数用于对 NOR Flash 进行读写操作。
```c
void norflash_read(uint32_t addr, uint8_t *data, uint32_t len) {
while (len > 0) {
uint32_t page_offset = addr % NOR_FLASH_PAGE_SIZE; /* 计算当前地址在页内的偏移量 */
uint32_t page_addr = addr - page_offset; /* 计算当前地址所在的页的起始地址 */
uint32_t read_len = MIN(len, NOR_FLASH_PAGE_SIZE - page_offset); /* 计算本次读取的字节数 */
spi_read(page_addr, data, read_len); /* 从 NOR Flash 中读取数据 */
addr += read_len;
data += read_len;
len -= read_len;
}
}
void norflash_write(uint32_t addr, uint8_t *data, uint32_t len) {
while (len > 0) {
uint32_t page_offset = addr % NOR_FLASH_PAGE_SIZE; /* 计算当前地址在页内的偏移量 */
uint32_t page_addr = addr - page_offset; /* 计算当前地址所在的页的起始地址 */
uint32_t write_len = MIN(len, NOR_FLASH_PAGE_SIZE - page_offset); /* 计算本次写入的字节数 */
spi_write(page_addr, data, write_len); /* 向 NOR Flash 中写入数据 */
addr += write_len;
data += write_len;
len -= write_len;
}
}
```
4. 最后,还定义了一些其他的辅助函数,如 norflash_erase、norflash_init 等。这些函数用于对 NOR Flash 进行擦除、初始化等操作。
```c
void norflash_erase(uint32_t addr, uint32_t len) {
/* 对从 addr 开始的 len 字节的数据进行擦除 */
/* ... */
}
void norflash_init(void) {
/* 初始化 NOR Flash */
/* ... */
}
```
以上是对 MT7981 CPUUboot 下 NOR Flash 读写代码的大致走读。在实际的使用中,还需要根据具体的硬件平台和 NOR Flash 型号进行适当的修改和调整。
阅读全文