# 进阶体验 完成快速体验后,再体验设备的注册和相关操作。以SPIFlash为例进行说明。 ![](../_static/sch.png) ## 补充MCU资源初始化 在快速体验工程的基础上,增加了硬件SPI,和F_CS引脚。增加SPI的初始化以及GPIO的初始化。 代码省略.... ## 添加驱动文件 添加 `bos/drivers/b_drv_spiflash.c` BabyOS里面SPIFLASH的驱动是基于sfud代码编写。因此也要添加sfud部分的代码。 添加 `bos/drivers/sfud/`路径的代码。 ## 添加硬件接口 在b_hal_if.h里面修改硬件接口。 ## 记录开机次数 在SPIFLASH的地址0x00000000记录开机次数,增加如下代码 ```C int fd = -1; uint32_t boot_count = 0; fd = bOpen(bSPIFLASH, BCORE_FLAG_RW); bLseek(fd, 0); bRead(fd, (uint8_t *)&boot_count, sizeof(boot_count)); b_log("boot:%d\r\n", boot_count); boot_count += 1; bFlashErase_t bFlashErase; bFlashErase.addr = 0; bFlashErase.num = 1; bCtl(fd, bCMD_ERASE_SECTOR, &bFlashErase); bLseek(fd, 0); bWrite(fd, (uint8_t *)&boot_count, sizeof(boot_count)); bClose(fd); ``` ![微信截图_20220319190734](../_static/uresult.png)