KDocs 研发资料库
  • 屏融合应用方案入口汇总
  • JL701N穿戴客述问题FAQ
  • JL701N穿戴类补丁list
  • 手表软件调试
  • JL701手表硬件设计注意事项 总结
  • 手表烧录_升级工具说明
  • 手表量产相关
  • 生产烧录KEY及代码和升级代码
  • AC695N系列手表SDK开发指南
  • JL7012A手表-SDK入门指南V1.0
  • 穿戴手表JL701N-入门到进阶开发指导
  • 彩屏充电仓JL701N LVGL入门到进阶指导文档
  • AC695N手表软硬件问题整理
  • JL701N手表软硬件问题整理
  • 701n手表SDK共性问题汇总
  • UI效果参考demo文档
  • 屏幕触摸驱动相关参考
  • 穿戴类支付宝支付流程
  • AC701N_PMU_介绍
  • 经典蓝牙相关接口说明
  • music应用详细设计说明书
  • music_player接口设计说明文档
  • PO声测试以及处理方法
  • DAC性能测试指南
  • 杰理串口升级规范
  • AC696N串口升级说明
  • AC695N系列手表UI开发指南
  • AC695N添加升级UI说明文档.
  • UI布局工具使用说明
  • UI接口设计说明书
  • UI工具快速使用说明
  • 701N_UI编辑工具用户手册
  • UI工程源文件升级工具使用说明
  • 701N屏幕驱动配置说明
  • JL701N 2D图形硬件加速接口使用说明
  • JL701_watch常用例子参考
  • JL_WATCH_SDK UI相关工具使用文档
  • 智能手表音频 设计调试手册 V1.2
  • AC695X_AC696X_AD697X 常见通话问题处理参考资料
  • 701手表 PCBA产测工具使用说明书 V1.0
  • 杰理定频问题排查2021.1.26
  • BQB5.4 20231007
  • 各类概率性死机调试解决指南
  • 不开机问题处理汇总(仅供参考)
  • 蓝牙搜索不到问题处理汇总(仅供参考)
  • 样机发烫(仅供参考)
  • 蓝牙音乐卡顿问题处理汇总(仅供参考)
  • 充电问题处理汇总(仅供参考)
  • 触摸问题处理汇总(仅供参考)
  • 功耗调试指导
  • JL701N穿戴客述问题FAQ
  • 701N 开发板新屏幕驱动修改
  • AC701 nandflash A8图片显示问题
  • 支付宝乘车码接入资料
  • 多国语言及字库使用指南
  • 查看C程序Flash 和RAM 资源占用说明文档
  • 701N_SDK3.0.1_OPUS_OGG 编解码
  • 蓝牙在线调eq说明
  • BR EDR BLE 蓝牙性能测试配置方法_
  • BLE-HID
  • BLE-HID 调试文档
  • 【问题】701v301外置flash播放wts提示音
  • 本地录音开启及调试
  • 死机分析
  • 表盘传输APP层的压缩算法
  • 功能模版:JL701_V301_UI资源使用FAT文件系统demo
  • JL7013+4G CAT1 参考设计原理图
  • 吾爱4G模组+JL701接口说明
  • (电脑一拖多)手表升级dongle工具使用补充说明
  • 蓝牙接口使用说明
  • ble 开发流程
  • 彩屏仓功耗优化
  • 彩屏仓补丁list
  • 更新字库步骤
  • 支付宝硬件接入资料

Flash分区操作demo

📎 原始文档:https://www.kdocs.cn/l/cq45VWvqjiUk

Flash分区操作demo

1、内置flash不使用文件系统挂载操作demo

1.1配置挂载分区信息

C app_common.c
NORFLASH_SFC_DEV_PLATFORM_DATA_BEGIN(norflash_norfs_unenc_dev_data)657.5fc_spi_pdata658.start_addr=g_res_nor_unencry_start_addr,659=CONFIG_EXTERN_FLASH_SIZE-g_res_nor_unencry_start_addr,660NORFLASH_SFC_DEV_PLATFORM_DATA_END()661662#if TCFG_NOR_VM
NORFLASH_SFC_DEV_PLATFORM_DATA_BEGIN(norflash_norfs_vm_dev_data)664.sfc_spi_pdata665.start_addr=CONFIG_EXTERN_FLASH_SIZE-CONFIG_EXTERN_USER_VM_FLASH_SIZE,666=CONFIG_EXTERN_USER_VM_FLASH_SIZE,667NORFLASH_SFC_DEV_PLATFORM_DATA_END()668669#endif//TCFG_NOR_VM
image 1.2添加挂载分区
image 1.3配置下载分区信息:

bard_701n_democ ×C app_c0m
monc
C devicch
C isd conig rulec
C app.conigh
C isd conig rulec ×
667
668
669
678
671
672
673
674
675
676
677
678
679
689
NORFLASH_5FC_DEV_PLATFORM_D
norflash nors jnside dev...Aa桓
1of3
←→E×
469
470
#if TCFG_NOR_VM
471
UIVN_ADR-CONFIG_RULE_INSERT_UI_VL_BASE;
472
UIVN_LEN -CONFIG_RULE_INSERT_UI_VNL_SIZE;
473
UIVN_OPT-1;
474
#endif
475
#endif
#endif
FLAS
#define FATFS_IN_FLASH_N
#define SDFILE_INSIDE_FAT_
NORFLASH_5FC_DEV_P
.path
.start_addr
.size
H_SFC_DEV_ENABLE*/
这个名字要对应前面的首字母
ATFSI”
文什配五
RODT_PATH
SDFILE_MOUNT_PATH7app
ATE⁵TN FLASHN
_dev_data)
E FAT ROOT PATH
ATEST
Bx179000,
47
308*1024,
8
FATFSI_ADR =Bx170000;
479
FATFSI LEN-0x4b880;
NORFLASH_SFC_DEV_PLATFORMDATA_END()
起始地址和大小对应上
ATFSI_OPT
481

1.4生成一个镜像文件,大小跟实际配置一样
image 1.5读写操作
image

2、内置flash文件系统操作,虚拟文件系统只有一个,所以只能挂载一个分区使用

2.1添加挂载分区

extern const struct device_operations mass_storage_ops;白REGISTER_DEVICES(device_table)={​白#if TCFG_VIRFAT_FLASH_ENABLE
/虚拟文件系统对接il sdfile fat文件系统设备入口,往下对接文件系统,往上对接物理设备中//{​"virfat_flash",&virfat_flash_dev_ops,(void*)"res_nor"​},{​"virfat_flash",&virfat_flash_dev_ops,(void*)"res_nor_car"​},7/res_nor是物理设备入白#if TCFG_NORFLASH_SFC_DEV_ENABLE//使用外flash跑ui
{​"res_nor_ex", &norflash_sfc_fs_dev_ops,(void*)&norflash_sfc_dev_data​},
{​"update_noenc",&norflash_sfc_fs_dev_ops,(void*)&norflash_norfs_unenc_dev_data​},//“u#endif /TCFG_NORFLASH_SFC_DEV_ENABLE/白#if TCFG_VIRFAT_INSERT_FLASH_ENABLE1使用内YLashui
//{​"res_nor",&inside_norflash_fs_dev_ops,(void*)&norflash_norfs_inside_dev_data​},{​"res_nor_car",&inside_norflash_fs_dev_ops,(void*)&norflash_norfs_inside_dev_car_data]#endi//TCFG_VIRFAT_INSERT_FLASH_EABLE#endif //TCFG_VIRFAT_FLASH_ENABLE白#if TCEG Sna FNARLF
image

2.2添加分区配置信息

#if TCFG_VIRFAT_INSERT_FLASH_ENABLE#define FATFS_IN_FLASH_NAME"FATFSI"//isd_config_rule文件配置#define SDFILE_INSIDE_FAT_ROOT_PATHSDFILE_MOUNT_PATH"/app/"FATFS_IN_FLASH_NAME /1分区NORFLASH_SFC_DEV_PLATFORM_DATA_BEGIN(norflash_norfs_inside_dev_data).path=SDFILE_INSIDE_FAT_ROOT_PATH,.start_addr=TCFG_VIRFAT_INSERT_FLASH_BASE,.size=TCFG_VIRFAT_INSERT_FLASH_SIZE,NORFLASH_SFC_DEV_PLATFORM_DATA_END()#define FATFS_IN_FLASH_CAR_NAME "FATFS_CAR"//isd_config_rule文件配置#define SDFILE_INSIDE_FAT_ROOT_CAR_PATHSDFILE_MOUNT_PATH"/app/"FATFS_IN_FLASH_CAR_NAME //分区NORFLASH_SFC_DEV_PLATFORM_DATA_BEGIN(norflash_norfs_inside_dev_car_data).path=SDFILE_INSIDE_FAT_ROOT_CAR_PATH,7/地址计算.start_addr=TCFG_VIRFAT_CAR_FLASH_BASE,.size=TCFG_VIRFAT_CAR_FLASH_SIZE,配置其实地址和空间大小NORFLASH_SFC_DEV_PLATFORM_DATA_END()#if TCFG_NOR_VM

2.3直接可以使用文件系统的接口访问,fopen/fread/fwrite等

3、外挂flash分区操作

3.1配置外挂flash分区信息

C boord 701n democ 725726727728#if TCFG_NORFLASH_SFC_DEV_ENABLE729SFC_SPI_PLATFORM_DATA_BEGIN(sfc_spi_data)730.spi_hw_index -1,731.sfc_data_width -SFC_DATA_MIDTH_4,732.sfc_read_mode -SFC_RD_OUTPUT,733.sfc_encry-TCFG_5FC_ENCRY_ENABLE,//是否加密734.sfc_clk_div0,//时钟分频:sfc_fre-sys_clk /div;735.unencry_start_adr -CONFI6_EXTERN_FLASH_SIZE -CONFI6_EXTERN_USER_VM_FLASH_SIZE,//不加密区域736.unencry_size -CONFIG_EXTERN_USER_VW_FLASH_SIZE,737SFC_SPI_PLATFORN_DATA_END()738739NORFLASH_SFC_DEV_PLATFORH_DATA_BEGIN(norflash_sfc_dev_data)748.sfc_spi_pdata=8sfc_spi_data,741.start_addr=θ,742.size=CONFIG_EXTERN_FLASH_SIZE-CONFIG_EXTERN_USER_VW_FLASH_SIZE-410241824,743NORFLASH_SFC_DEV_PLATFORN_DATA_END()744745RFLASH_SFC_DEV_PLATFORH_DATA_BEGIN(norflash_sfc_dev_data_update)746fc_spi_pdata=8sfc_spi_data,747.start_addr=Bxc⁸0988,74.size=418241824-CCNFIG_EXTERN_USER_VW_FLASH_SIZE,749NORFLASH_SFC_DEV_PLATFORN_DATA_END()注意分区不能配置在加密区域内,否则不能正750751确读写75#if TCFG_NOR_VN753NORFLASH_SFC_DEV_PLATFORN_DATA_BEGIN(norflash_norfs_vm_dev_data)754.sfc_spi_pdata=&sfc_spi_data,755.start_addr-exceee+41824*1824-CONFIG EXTERN_USER_W_FLASHLSIZE,//CONFIGEXTERN_FLASH_STZE -CONFIG_EXTERN_USER_W FLASH SIZE,756-51zeCONFIG_EXTERN_USER_VM_FLASH_SIZE,757NORFLASH_SFC_DEV_PLATFORN_DATA_END()758#endif759769

3.2挂载分区信息操作接口

15#if TCFG_NORFLASH_SFC_DEV_ENABLE16#if TCFG_NOR_FS1718"res_nor_update",&norflash_sfc_fs_dev&norflash_sfc_dev_data_update​},19#endif20#endif /TCFG_NORFLASH_SFC_DEV_ENABLE/

3.3对flash的分区进行配置,分出对应的空间

downloadbat
norlash sic dev data up-A阻.str -n res -0 JL45bar.res sidebar.str sidebar.tab -n res-o sidebar46res watch.str watch.view watch.json -n res -o watch471.res watch1.str watch1.view watch1.json -n res-o watch¹482.res watch2.str watch2.view watch2.json -n res-o watch2493.res watch3.str watch3.view watch3.json -n res-o watch³584.res watch4.str watch4.vieu watch4.json -n res -o watch4515.res watch5.str watchs.view watchs.json -n res -o atchs522312.PIX F_G⁸2312.TAB ascii.res -n res-o font53545557分出实际的大小区5859cif.res -n res-o font间68out neu res.bin-1nage-s1ze8-F11e¹ist L stdebar watchs watchs font remove-empty -re@ove-bpb-nark-bad-after ex⁷e⁰80-key CHTPKEX-adress6162t neu res.bin -image-size 16-f¹elist n sldebar vatch uatcht watch²watch³watcha watchs font -renove-eapty -remove-bpb -ark-bad-afterfaxcse6364
image

3.4分区操作,方法同1内置flash没有文件系统的操作方式:dev_open

image 4、外挂flash挂fat分区,这里要特别注意,fat单位是512对齐的,跟前面三种方式是不一样的,前面三种方式都是1对齐的。

4.1设置挂载分区信息

C board_701n_demo.c × C board_701n_demo_cfghC app_common.cC app_main.cC isd_config_rule.cC app_config.h641.sfc_data_width =SFC_DATA_WIDTH_4,
642.sfc_read_mode =SFC_RD_OUTPUT,norflash norfs fat de643.sfc_encry=TCFG_SFC_ENCRY_ENABLE,//是否加密644.sfc_clk_div 0,//时钟分频:sfc_fre =sys_clk /div;645.unencry_start_addr -g_res_nor_unencry_start_addr,//不加密区域646.unencry_size =CONFIG_EXTERN_USER_VM_FLASH_SIZE,647SFC_SPI_PLATFORM_DATA_END()648649NORFLASH_SFC_DEV_PLATFORM_DATA_BEGIN(norflash_sfc_dev_data)658.sfc_spi_pdata=&sfc_spi_data,651.start_addr=θ,652.size=θxbeee⁰0,//CONFIG_EXTERN_FLASH_SIZE-CONFIG_EXTERN_USER_VM_FLASH_SIZE-410241024,653NORFLASH_SFC_DEV_PLATFORM_DATA_END()654655//非机密区域,用于升级多个文件时,对于非加密区域的统一处理656NORFLASH_SFC_DEV_PLATFORM_DATA_BEGIN(norflash_norfs_unenc_dev_data)657.sfc_spi_pdata=&sfc_spi_data,658.start_addr=θxbeeeee,//g_res_nor_unencry_start_addr-410241024,659.size=CONFIG_EXTERN_FLASH_SIZE-0xbeeeee,//CONFIG_EXTERN_FLASH_SIZE -g_res_nor_unencry_start_660NORFLASH_SFC_DEV_PLATFORM_DATA_END()
NORFLASH_SFC_DEV_PLATFORM_DATA_BEGIN(norflash_norfs_fat_dev_data).sfc_spi_pdata=&sfc_spi_data,.start_addr=θxbeee00,.size=1024,起始地址和空间大小,切记NORFLASH_SFC_DEV_PLATFORM_DATA_END()
6666
不能跟其他分区重叠,也不668#if TCFG_NOR_VM669NORFLASH_SFC_DEV_PLATFORM_DATA_BEGIN(norflash_norfs_vm_dev_data)能放在加密区670.5fc_spi_pdata=&sfc_spi_data,671.start_addr=CONFIG_EXTERN_FLASH_SIZE-CONFIG_EXTERN_USER_VN_FLASH_SIZE,672.size=CONFIG_EXTERN_USER_VM_FLASH_SIZE,673NORFLASH_SFC_DEV_PLATFORM_DATA_END()674
675 #endif//TCFG_NOR_VM
676 #endif /#if TCFG_NORFLASH_SFC_DEV_ENABLE/677

4.2添加挂载设备

272829//norflash_sfc_dev_ops句柄操作是512对齐,写带刷38//外挂一个普通fat文件系统入口31//需求开启TCFG_NORFLASH_SFC_DEV_ENABLE32{​"fat_nor",&norflash_sfc_dev_ops,(void*)&norflash_norfs_fat_dev_data​},33#endif34
#if TCFG_NOR_FAT

4.3 fat分区操作

可以使用devicejiekou来操作,但是需要注意其分区是单位512对齐的。
bool dev_online(const charname);
void
dev_open(const charname,voidarg);int dev_read(void device,voidbuf,u32 len);int devv_write(voiddevice,voidbuf,u32 len);int dev_seek(voiddevice,u32 offset,int orig);int dev_ioctl(voiddevice,int cmd,u32 arg);int dev_close(void device);
int dev_bulk_read(void
_device,voidbuf,u32 offset,u32 len);int dev_bulk_write(void_device,void*buf,u32 offset,u32 len);
image 也可以通过文件系统接口来访问:fopen/fread/fwrite等文件系统接口访问。