Changes from v2.7.7 to v2.7.8:
[feat]:upgrade patch tool to v3.8 [opt]:opt code generate process display [opt]:opt login logic [opt]:opt ghs support [opt]:add MC03 ghs support我尝试为 openocd 添加 pflash 写入功能,根据手册和 demo 的描述,pflash 单次写入要 32 字节,目前每32字节都要根据这个流程处理一遍,使用 jlink 测试下载的速度大概在 1KB/s,
> flash write_image Hello_World.hex Padding image section 0 at 0x020000a0 with 1888 bytes Padding image section 1 at 0x02000bd4 with 44 bytes Padding image section 2 at 0x02004e68 with 24 bytes (bank write end alignment) wrote 20096 bytes from file Hello_World.hex in 13.192564s (1.488 KiB/s)请问有没有提高速度的方向或者思路?
1. 问题背景
软件:MD1 SDK 1_4_0 I2c_Master_Demo
硬件:MD14 EVB or 客户板子
问题表述:
客户对 I2C 波形进行测试,反馈低电平时间和保持时间不满足最低时间规格,需要调高 I2C 低电平时间和保持时间
2. 修改方案
2.1 文本说明
da0b8935-84b7-448b-ad01-c0161e3206a0-image.png MCLKCFG 和 HSCLK 寄存器
fe39f34e-8939-4733-b385-2436462d82c6-image.png
5db03dcc-0588-400d-bfba-56d176958fdc-image.png
7f4a92c1-8456-457c-a09a-407c475c1cdc-image.png 2.2 代码说明 I2C_DRV_MasterSetBaudRate 函数里
2b8a24d5-c2f2-4374-9a12-75260b55d193-image.png
d7c24a4a-272a-4629-a74f-44e3f63ff409-image.png
cb43c6fd-48ee-4007-8f80-6c646f74fce7-image.png 3. 修改前后对比 STHD 位修改前后对比 STHD 为 0x13,保持周期为 2.48us STHD 为 0x19,保持周期为 3.20us
4952c0e2-cb9a-4546-bc73-5577b64c51fb-image.png
根据需求修改 MCLKCFG 或 HSCLK 寄存器即可
938e4db2-62e6-41be-bc42-f295ef408043-image.png
MDATA 寄存器
HS 为 1:调整 HSCLK 寄存器 HS 为 0:调整 MCLKCFG 寄存器da0b8935-84b7-448b-ad01-c0161e3206a0-image.png MCLKCFG 和 HSCLK 寄存器
fe39f34e-8939-4733-b385-2436462d82c6-image.png
5db03dcc-0588-400d-bfba-56d176958fdc-image.png
7f4a92c1-8456-457c-a09a-407c475c1cdc-image.png 2.2 代码说明 I2C_DRV_MasterSetBaudRate 函数里
MCLKCFG
I2C_Set_MasterDataValidDelay:MCLKCFG 寄存器 VALID 位 I2C_Set_MasterSetupHoldDelay:MCLKCFG 寄存器 STHD 位 I2C_Set_MasterClockHighPeriod:MCLKCFG 寄存器 HIGH 位 I2C_Set_MasterSetupHoldDelay:MCLKCFG 寄存器 LOW 位2b8a24d5-c2f2-4374-9a12-75260b55d193-image.png
HSCLK
I2C_Set_MasterDataValidDelayHS:HSCLK 寄存器 VALID 位 I2C_Set_MasterSetupHoldDelayHS:HSCLK 寄存器 STHD 位 I2C_Set_MasterClockHighPeriodHS:HSCLK 寄存器 HIGH 位 I2C_Set_MasterClockLowPeriodHS:HSCLK 寄存器 LOW 位d7c24a4a-272a-4629-a74f-44e3f63ff409-image.png
cb43c6fd-48ee-4007-8f80-6c646f74fce7-image.png 3. 修改前后对比 STHD 位修改前后对比 STHD 为 0x13,保持周期为 2.48us STHD 为 0x19,保持周期为 3.20us
4952c0e2-cb9a-4546-bc73-5577b64c51fb-image.png
在使用 LE0 SDK 1_4_0 HOTFIX_001 的 FLASH_DRV_Program 接口时发现一个问题。请问除了使用断言,是否有其他方式预防客户,调用时出现HardFault?因为客户基本没开断言
问题现象:
列表当传入的 pData 地址非 4 字节对齐时,程序会触发 HardFault (Unaligned Access)。原因分析:
列表该接口原型定义为 const void * pData,但在内部实现中,直接将其强转为 uint32_t * 使用(源码中带有 /* PRQA S 0316 */ 注释)。由于 void * 允许任意地址,当应用层传入非对齐地址时,这种强转会导致在访问时,HardFault。 status_t FLASH_DRV_Program(..., const void * pData) { // 强转发生处,PRQA 警告被屏蔽 state->cmdParam.pdata = (const uint32_t *) pData; /* PRQA S 0316 */ // ... } static status_t FLASH_LaunchCommandSequence(uint32_t instance) { // ... // 在此处触发 Unaligned Access HardFault for (uint32_t i = 0; i < state->cmdParam.word_size; i++) { state->cmdParam.dest[i] = state->cmdParam.pdata[i]; } // ... }
-
Announcements
Announcements regarding our community
-
Discussion & Question
A place to talk about whatever you want or ask a question
-
Blogs
Blog posts from individual members
快速上手云途开发生态
发帖前请查看
帮助改进和优化YT CONFIG TOOL,有机会抽取YTM32B1ME0 EVB哦...