这里演示keil、IAR、Jlink等开发工具如何添加YTM32 MCU
首先需要下载云途提供的Patch工具包,如下附件:
patch_v3.5.zip
keil建议使用5.35及以上版本
方法1:目前Keil官方已支持云途MCU,可以在Keil官方下载YTM32 MCU的pack包
https://www.keil.arm.com/devices/
20d8959b-cde8-403e-a02b-68c9a44c12f3-image.png
8744ecf1-2470-4697-abd0-79b16788f1e4-image.png
打开云途提供的Patch zip,如下路径
27bdce47-5405-4e51-88d8-de53ea975136-image.png
下载好芯片pack包之后,双击安装
f03c0b1f-2b4c-408d-9fa5-d754a6b363cd-image.png
28bba8d2-f0e7-4c6e-bb74-6c2a60c1c40b-image.png
3d1a23a8-6122-4bcc-b8eb-e62c48d6127a-image.png
IAR建议使用8.40及以上版本
patch_tool工具需要以管理员身份打开
25553c37-9d89-472a-b83e-d1fd5e9cdfd8-image.png
f78890c9-5a44-4f10-b3a3-4d967f65120b-image.png
以下JLINK的Patch操作需要放在keil/IAR Patch操作之后
JLINK建议选择6.96及以上版本
下载网址:https://www.segger.com/downloads/jlink/
6a3b3beb-1a67-416b-98c8-23bc39a5e9fe-image.png
21ca29f8-fa5d-4cee-b10a-f7c16c8a9731-image.png
e72b5ca0-38c2-456a-8618-1a5f6e96c604-image.png
至此,keil、IAR、Jlink已成功添加YTM32 MCU,有其他问题可在论坛发帖或者咨询云途FAE✌
这样配置SCLK的时钟频率应该是40MHZ,但是测试只有20MHZ,94f22981-d349-497a-836d-4eefb485ca6f-image.png
关于HA01系列,数据手册表明只有一个QSPI,但是硬件设计表里面有两套QSPI的引脚,请问这两套是什么关系呢?用了QSPI-FA,另一个就不能配置成QSPI-FB了吗?
50727f21-94cc-40b4-a617-21dd251207ee-image.png
1ef32c9e-4d29-4739-9ac4-d6a3bd53ce64-732b627c851a135a7fc3578de55b025.png
请问下图是什么意思?对应什么关系呢?只有一个QSPI但是有两个FLASH可以用?
5b083819-bf01-44d2-8fd3-811ef20fce39-838b24a1441609472739f2b8d7de902.png
MCU: YTM32B1ME05G0MLLT
使用YCT生成的Flash_Demo,改成异步模式后操作pflash1失败
da339dfd-3d86-42f4-a458-c8cdf4f6567f-image.png
f3cc0042-dd65-4a63-b96f-aeac2df9e301-image.png
看手册应该是支持这种操作的,是我理解有误吗
46bf95a4-383f-4948-892a-1871c451c7fe-image.png
基于MD这类没有独立Dflash的MCU,且同时具有硬件AB swap需求和FEE历史数据保持的需求,优先建议客户选择外挂的eeprom,硬件方案实在无法外挂eeprom再参考该文档实现,本文档是基于MD14开发板设计的。
2.FLASH分区划分d3d3046e-3140-461d-8cc9-9ab07d7a1786-image.png
FLASH的分区主要分为两种:一种是将程序和fee各自存放在一个BANK上,另一种是将程序和fee存放在同一个BANK上。由于在同一个bank下flash在写一个区域的同时不能读取另外一个区域的特性,所以如果将程序与fee存放在同一个bank下,当对fee进行操作时就不能运行其他的进程,所以默认情况下是将程序与fee存放在不同的bank,这样就引出了fee的“数据同步”和“异步操步”。
在不同的物理 BLOCK 上的 FLASH 程序和数据可支持异步操作不产生阻塞;在相同的物理 BLOCK 上的 FLASH 程序和数据只支持同步操作会产生阻塞。所以我们一般将fee地址设置在另一个block上,勾选"Async Access"代表使能异步操作
555bf04b-7914-4356-ab76-8554074ab65b-image.png
在执行AB swap操作前PFLASH0的地址是0x00000 ~ 0x3FFFF,PFLASH1的地址是0x40000 ~ 0x7FFFF。在执行AB swap操作后,PFLASH0和PFLASH1的地址会进行交换,此时PFLASH0的地址是0x40000 ~ 0x7FFFF,PFLASH1的地址是0x00000 ~ 0x40000。但与此同时原先定义在另一个bank里的fee区域,由于执行了boot_swap命令,定义的fee地址发生了改变,这是就引出了fee的“数据同步”
fbf61dc9-5884-4fbc-a77b-99f8a756f1fa-image.png
在实际的应用中,我们存储在fee区域的数据是要经常调用使用的,如果不进行数据同步,在执行完swap命令后,我们再去调用fee数据就会导致读出的数据为空,所以数据同步是在执行boot swap命令前要将fee数据搬运到新的fee地址上去。
d5552a13-f9ee-441c-a411-c1eb90ac378a-image.png
通过内部闪存命令(0x30)执行swap操作。该命令由FLASH_DRV_BootSwap函数来调用。
56f41337-90fa-49be-ae8f-aae8d1daccbc-image.png
boot_swap是在pFlash0 和 pFlash1 之间进行翻转,通过查看EFM->STS的寄存器判断现在运行在哪个pFlash上
f2331418-b1ae-4251-a9ec-6a5bb295679d-image.png
读取swap标志位,从而判断代码运行在哪个PFLASH里
42c0a859-d355-4013-a917-1beb71532349-image.png
读取REGFILE->DR[0]的值,写入到fee并反读(REGFILE 位于始终处于供电状态的电源域中,可在掉电模式下保留某些关键信息的值。)
e6250638-b10a-4a63-a804-211aa8a62edd-image.png
验证写入和读取是否相同,如果不同则进入死循环
383102f6-45bf-48a2-9e1b-f3e796465b99-image.png
在进行swap操作前将fee数据搬移到新的fee地址里去
cf7f5a80-b4f4-4041-9428-d087e8e8dfab-image.png
2b97bb14-8d22-4380-980c-35b308f136df-image.png
5.2 擦除芯片,烧录程序(快捷键盘F4,F6),完成PFLASH0面烧录8983da7f-109c-4a9e-bec8-7d4f678dd226-image.png
47b8b895-437d-4891-9151-c49714c4f03c-image.png
36f6dccf-ad62-435d-b2d2-29d499d52fad-image.png
5.3.2 设置地址偏移74506f56-98ef-4176-902d-1f90b0649e69-image.png
792dc419-3535-4f90-a7f4-5c01f9a41b58-image.png
f02d0e99-8cb9-496d-a0e6-16fb6052b1b0-image.png
5.3.4 重新上电运行程序 PFLAH0里的程序会使绿灯亮红灯灭,PFLASH1里的程序会使绿灯灭红灯亮 程序会在红灯和绿灯之间来回切换(绿灯代表运行在PFLASH0里,红灯代表运行在PFLASH1里) 红灯和绿灯切换的频率800ms切换一次 串口会在打印程序运行在哪个位置508539c7-eec9-4a0a-9be4-59bfb1335afd.jpg fc41ac20-56c1-466b-8d65-7b36561ceadc.jpg
串口打印的数据
fbf6d032-520c-4d60-9e81-7d99d772bff1-image.png 4.4 压测10000次数据
fee_data.txt
5. 代码AB_SWAP_FEE.zip
f6474d58-4bd2-4538-9a3b-87fb251ab176-image.png
5757d757-0f24-44dc-b1e3-e5a22726ff6b-image.png
cf2d2d42-8c00-4eef-a3d8-ddf36dd6fc3b-image.png
53ce1b06-9152-4c34-9cb6-bc981e6af65a-image.png
ff187acc-e667-45fc-a463-68cde6846475-image.png
de2ee269-4420-45f8-b928-c70dc41a3a52-image.png
dca9dde2-a1b5-4b7f-96ae-9ebe2fb48fff-image.png
83e3bce9-c13c-4b0c-b339-f3bc7594f878-image.png
我从DTCM中划分了2个区域用作全局变量存储,但是发现全局变量的初始化值不对。
请问应该怎么解决,谢谢!
[main] 正在生成文件夹: c:/Users/gmdq/Desktop/YTM32/Gpio_Interrupt_Demo/build
[main] 缺少包含 CMake 缓存的文件夹。将重新生成缓存。
[main] 正在配置项目: Gpio_Interrupt_Demo
[proc] 执行命令: C:\Users\gmdq\AppData\Roaming\yt_config_tool\cmake-3.26.4-windows-x86_64\bin\cmake.EXE -DCMAKE_BUILD_TYPE:STRING=Debug -DCMAKE_EXPORT_COMPILE_COMMANDS:BOOL=TRUE -DCMAKE_TOOLCHAIN_FILE=c:/Users/gmdq/Desktop/YTM32/Gpio_Interrupt_Demo/cmake/gcc.cmake -DARM_CPU=cortex-m7 -DDEVICE_NAME=YTM32B1HA0 -DTOOLCHAIN=GCC --no-warn-unused-cli -SC:/Users/gmdq/Desktop/YTM32/Gpio_Interrupt_Demo -Bc:/Users/gmdq/Desktop/YTM32/Gpio_Interrupt_Demo/build -G Ninja
[cmake] Not searching for unused variables given on the command line.
[cmake] -- The C compiler identification is GNU 10.3.1
[cmake] -- The CXX compiler identification is GNU 10.3.1
[cmake] -- Detecting C compiler ABI info
[cmake] -- Detecting C compiler ABI info - done
[cmake] -- Check for working C compiler: C:/Users/gmdq/AppData/Roaming/yt_config_tool/gcc-arm-none-eabi-10.3-2021.10/bin/arm-none-eabi-gcc.exe - skipped
[cmake] -- Detecting C compile features
[cmake] -- Detecting C compile features - done
[cmake] -- Detecting CXX compiler ABI info
[cmake] -- Detecting CXX compiler ABI info - done
[cmake] -- Check for working CXX compiler: C:/Users/gmdq/AppData/Roaming/yt_config_tool/gcc-arm-none-eabi-10.3-2021.10/bin/arm-none-eabi-g++.exe - skipped
[cmake] -- Detecting CXX compile features
[cmake] -- Detecting CXX compile features - done
[cmake] -- The ASM compiler identification is GNU
[cmake] -- Found assembler: C:/Users/gmdq/AppData/Roaming/yt_config_tool/gcc-arm-none-eabi-10.3-2021.10/bin/arm-none-eabi-gcc.exe
[cmake] -- Configuring done (1.5s)
[cmake] -- Generating done (0.0s)
[cmake] -- Build files have been written to: C:/Users/gmdq/Desktop/YTM32/Gpio_Interrupt_Demo/build
[build] 正在启动生成
[proc] 执行命令: C:\Users\gmdq\AppData\Roaming\yt_config_tool\cmake-3.26.4-windows-x86_64\bin\cmake.EXE --build c:/Users/gmdq/Desktop/YTM32/Gpio_Interrupt_Demo/build --config Debug --target all --
[build] Access violation
[build] CMake Error: Generator: execution of make failed. Make command was: C:/Users/gmdq/AppData/Roaming/yt_config_tool/ninja-win/ninja.exe all &&
[proc] 命令“C:\Users\gmdq\AppData\Roaming\yt_config_tool\cmake-3.26.4-windows-x86_64\bin\cmake.EXE --build c:/Users/gmdq/Desktop/YTM32/Gpio_Interrupt_Demo/build --config Debug --target all --”已退出,代码为 1
[driver] 生成完毕: 00:00:07.856
[build] 生成已完成,退出代码为 1
无法生成编译文件 gcc ninja 环境以正确搭建,项目所在文件夹无中文,已经设置了所有权限,并是已管理员身份运行
-
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
发帖前请查看
帮助没办法联网的电脑使用YCT
帮助改进和优化YT CONFIG TOOL,有机会抽取YTM32B1ME0 EVB哦...