跳转至内容

Discussion & Question

A place to talk about whatever you want or ask a question

1.3k 主题 5.9k 帖子

子版块


  • 开发环境搭建相关问题,Cmake,GCC,Ninja等

    136 主题
    584 帖子
    ATECH_WHPA

    按照上面链接操作没有成功,我IAR默认打开方式修改成高版本了,但是生成的IAR工程依然是低版本的

  • Questions about YTM32Z seires

    12 主题
    43 帖子
    majorM

    SWDIO默认内部上拉,SWDCLK默认内部下拉

  • Questions about YTM32B1H seires

    183 主题
    826 帖子
    ysogY

    在使用HA0 UARTDMA时,D0 D1 D3没有问题,但是D5 D6 D8的发送DMA都发不出去,一直是ongoing状态,是有什么地方需要配置吗
    76af66e2-4fa3-40d1-ac9f-5aeab746e06c-image.png
    cddff952-c83b-4fef-acdc-783bf02140e3-image.png

  • Questions about YTM32B1M seires

    521 主题
    2k 帖子
    kid_liK

    major 在 MC03 standby模式功耗异常 中说:

    kid_li 在 MC03 standby模式功耗异常 中说:

    major,测试条件可能我没有描述清楚,我们在室温17-18℃测试电流是稳定的22.5μA左右,当温度降低到-26℃左右,电流将生高到稳定的65.5uA左右。
    我在ECU和评估板看到相同的现象,评估板PA10应该是上拉的吧?
    我也怀疑GPIO悬空影响,所以将GPIO时钟初始化的ipc_config段删除了,但现象依旧。

    评估板硬件上PTA10也并未增加外部硬件,删除IPC config并不会改变这个PTA10的状态,这个引脚需要软件介入重新初始化为ALT0.

    好的,我来试一下。

  • Questions about YTM32B1L seires

    219 主题
    930 帖子
    HAIYANGH

    从etmr的寄存器上看是只有fast bus和外部输入时钟两个时钟源,因此你选择内部时钟源就是fast bus,IPC章节后续我们确认一下描述是否正确;
    image.png

  • Questions about YT SDK

    117 主题
    504 帖子
    DerrickD
    前言: 本文将对云途启动文件(startup.s)进行详细介绍,不同IDE的启动文件大同小异,本文以IAR为例。 介绍云途不同型号芯片的启动时间(从复位到进入main函数,以及时钟初始化完成)。 针对特殊场景需要尽量减少启动时间,本文介绍几种优化方式。 版本:

    Config Tool Version:2.7.6
    SDK version:1.3.1
    IDE:IAR

    1. 声明与定义 MODULE ?cstartup EXTERN main EXTERN SystemInit EXTERN RamInit0 EXTERN RamInit1 EXTERN RamInit2 EXTERN VectorTableCopy EXTERN STACK_end PUBWEAK Reset_Handler SECTION .text:CODE:REORDER:NOROOT(2) THUMB MODULE ?cstartup:声明当前汇编模块名为?cstartup,用于链接器识别模块。 EXTERN 指令:声明外部符号(函数),表示这些函数在其他文件(通常是 C 文件)中定义,此处需要调用。包括: main:C 程序入口函数; SystemInit:系统初始化; RamInit0/1/2:RAM 分阶段初始化函数; VectorTableCopy:中断向量表复制函数; STACK_end:栈顶地址(链接脚本中定义)。 PUBWEAK Reset_Handler:定义一个公共弱符号Reset_Handler(复位中断处理函数)。PUB表示可被外部访问,WEAK表示若其他地方有同名强符号,会被覆盖(通常复位向量固定指向此处)。 SECTION .text:CODE:REORDER:NOROOT(2):定义代码段.text,属性为可执行代码(CODE),允许链接器重排(REORDER),非必需段(NOROOT,未被引用时可被链接器丢弃),优先级为 2。 THUMB:指定使用 ARM 的 THUMB 指令集(16 位指令,更紧凑,适合嵌入式场景)。 2. 复位启动流程 芯片复位后,硬件会自动跳转到复位向量(即Reset_Handler),开始执行以下步骤: 2.1 关闭中断,初始化通用寄存器 CPSID I ;关闭IRQ中断(防止初始化被中断干扰) LDR R1,=0 ;初始化通用寄存器 ...(R2到R7均设为0) MOV R8,R7 ;R8到R12均设为0(R7已为0) ... MOV R12,R7 ;R1-R12全为0 CPSID I:通过修改 CPSR(程序状态寄存器)关闭 IRQ 中断,确保初始化过程不被打断。 因为复位后的通用寄存器R1-R12的值UnKnown,所以要重新初始化,清除寄存器残留值,保证初始状态一致。
    509cab12-ec71-4a79-94fa-46ba72a33aec-image.png 2.2 RAM 第一阶段初始化(RamInit0) /* RamInit 0 Stage, focus on ecc init, asm code*/ BL RamInit0 SRAM存储器中的内容在上电之后内容是随机的,其中的有效数据和ECC数据并未建立起关联。此时,如果读取SRAM的内容并进行ECC校验,大概率上是会出现ECC错误的。 在使用支持ECC的SRAM之前,需要手动对SRAM进行初始化操作(循环赋值0x5A,方便辨认)。 另外YT_LINK中的RAM段的POR_ONLY属性就是在RamInit0和RamInit1中完成。读取RCU上电标志位,以判断是否执行这段RAM的初始化。(例如开辟一段空间存放Bootloader和APP的交互信息)
    3f3feff0-4279-44d2-b615-cc75694a58e9-image.png 2.3 设置栈顶指针(SP) /* Initialize the stack pointer */ LDR r0,=STACK_end MOV r13,r0 栈是 C 语言运行的基础(用于函数调用、局部变量存储等)。STACK_end是栈的栈顶地址(由链接脚本定义,栈通常向下生长,即高地址向低地址生长)。 此步骤为后续 C 函数调用(如RamInit1)准备栈环境。 2.4 RAM 第二阶段初始化(RamInit1) /* RamInit 1 Stage, focus on copy data,clear bss, c code*/ LDR r0,=RamInit1 BLX r0 注释:RamInit1,用于复制数据段(.data)、清除 BSS 段(未初始化全局变量),由 C 语言实现。 RamInit0是将RAM初始化为统一固定值0x5A,而RamInit1则是将定义在RAM中的全局变量初始化赋值。 有初始值的定义在(.data段),初始化是从FLASH将初始值copy到RAM。另外如果设置了POR_ONLY属性的RAM段在无上电标志位时则不会copy;设置INIT_NULL属性的RAM也不会copy。
    0c6e1538-f689-4e24-bcf1-8f7973b19b15-image.png 定义了但未赋值的全局变量则会定义在(.bss)段,会被清零。
    e59e886d-f82b-4d7b-965c-5389a005b219-image.png 2.5 复制中断向量表 /* Copy Vector Table for interrupt, c code */ #ifndef __NO_VECTOR_TABLE_COPY /* Call the to copy vector table from flash to ram */ ldr r0,=VectorTableCopy blx r0 #endif

    19e38303-1188-4187-a36d-0da6f0eecb6a-image.png

    作用:中断向量表(存储各中断处理函数地址)默认存储在 Flash 程序的起始地址,复制到 RAM 可提高中断响应速度,或支持动态修改向量表。 将中断向量表基地址(SCB->VTOR)偏移到 IVT_RAM_start(由链接脚本定义); 中断向量表在链接脚本中默认1024Byte空间,在程序的起始地址,第一个字是栈顶指针,第二个字就是Reset_Handle的地址,后面是所有中断的地址入口。中断向量表在Vector.s中定义。 可通过宏 __NO_VECTOR_TABLE_COPY 配置是否需要 VectorTableCopy。
    07653add-7bcd-4fce-8fb8-82782edfe7b4-image.png
    fae1ce37-c753-4d4d-9797-b2a120308a74-image.png 2.6 系统初始化 #ifndef __NO_SYSTEM_INIT LDR r0,=SystemInit BLX r0 ; 调用SystemInit #endif 云途不同芯片的系统初始化内容有些许差异,以HA0为例,会使能FPU(浮点运算单元),Flash的Deep PowerDown Enable,关闭WDG。 可通过宏 __NO_SYSTEM_INIT 配置是否需要 SystemInit。
    bb181722-3454-48b7-8e24-3095e246aca2-image.png 2.7 RAM 第三阶段初始化(RamInit2) /* RamInit 2 Stage, focus on others ram init, c code */ LDR r0,=RamInit2 BLX r0 作用:处理前两阶段未包含的 RAM 初始化需求(如特殊用途 RAM),由C语言实现。 如图RamInit2为一个弱函数,用户可以重写(覆盖) 这个函数。
    3354cdbc-5dbd-4b62-8aaa-328bdc5ab0b1-image.png 2.8 开启中断,跳转至main /* Unmask interrupts */ CPSIE I /* Call the main routine */ BL main 开启 IRQ 中断,为进入main函数做准备 BL main:跳转到 C 语言的main函数,启动应用程序。 2.9 死循环(main返回后) JumpToSelf: B JumpToSelf END 若main函数意外返回(正常情况下main不会返回),程序会进入死循环,防止跑飞(执行未知地址指令)。 2.10 总结 该启动文件的核心流程是:复位后关闭中断 → 初始化通用寄存器组 → 分阶段初始化 RAM(含 data段 / BSS、扩展 RAM) → 设置栈 → 复制向量表 → 系统初始化 → 跳转至main。整个过程为 C 程序运行准备了硬件环境(RAM、WDG、Flash、中断向量、FPU等等)和软件环境(栈、全局变量),是从硬件复位到应用程序启动的桥梁。 3. 不同型号芯片启动时间

    优化等级:Low
    基于Helloword demo程序测试:
    db770b96-8d52-46d7-a687-6da907646f07-image.png

    LE0:

    d4010816-923a-4fee-86ef-85d6e9446732-image.png

    LE1:

    45acf8f4-1e35-4274-8972-6db1273a9fed-image.png

    MC0:

    06bf7614-b73c-44a2-871f-e978af156664-image.png

    MD1:

    96ef18f9-c380-4b3a-a730-eea2f646dc70-image.png

    MD2:

    0a3beceb-2038-49e0-80d2-3a539c68c3c4-image.png

    ME0:

    0bef586e-e34b-47c6-8b51-e9e30ef121b9-image.png

    HA0:

    40cd4029-aa9c-451e-a100-ecf1c622455a-image.png
    tips:

    上述时间仅供参考,因为不同优化等级,不同IDE,启动文件编辑都有可能造成启动时间差异。 HA的RAM是256K,相比于ME0(128K)初始化时间反而更短: 因为 HA0 的内核是M7的并且是按照64bit去赋值RAM的,时间更短。 HA复位后到启动文件执行需要1ms左右,原因是HA有硬件安全启动(MC也有硬件安全启动,但HA流程相较于MC更复杂),增加了耗时。 4. 启动时间优化 在启动时RAM循环赋值可能出现多次从Flash取指令赋值时间较长(指令未对齐),造成启动时间变长的问题,而且具有随机性(低优化等级编译)。 在一些特殊应用中,例如Powerdown周期性唤醒(唤醒即复位),因为要控制功耗,所以需尽可能减少启动时间,下面介绍启动时间优化的方式。 4.1 RamInit0优化

    d188e5e7-1584-4454-a934-6e747ee5c2a7-image.png

    如上图在每一段RAM赋初值0x5A的前面加上ALIGNROM 4,确保后续代码 / 数据地址满足 4 字节对齐,提高访问正确性和效率。 4.2 RamInit1优化

    如下图,使用C语言标准库函数memcopy,和memset代替RAMInit1的循环赋值操作,汇编优化更好:
    3adeb124-7ac4-4598-bcc3-b25706d6b0b1-image.png

    d8063910-647c-4b06-b593-9e6fb59ffa8b-image.png

    4.3 减少RAM初始化 可通过YCT去配置RAM段的Init_Policy属性为NULL,这样就不会初始化这段RAM,当然为了防止RAM_ECC,也不能访问这段RAM,可在正常启动后重新以32bit为单位(ECC机制)向这段RAM写入初始值,就可以正常访问了。 这种方法适用于对RAM需求量小的工况,例如powerdown周期性唤醒,唤醒复位后只需执行少量代码就继续进入powerdown。
    1bc02a7f-7f29-4295-970b-e35b74909e56-image.png 4.4 打开I-Cache(HA,MD2)

    b84ed9fc-2c7f-4d3f-a2e6-fb50a25110f9-image.png

    HA(M7内核)和MD2系列,也可以打开I-Cache,对于反复用到的指令,比如循环赋值指令,打开I-Cache可提高指令命中率,避免反复访问Flash取指令降低效率。

    在启动文件打开I-Cache参考下图代码(HA),可在进入main函数后关闭I-Cache。
    a20cd4e7-8823-48bf-aee5-c948b2a972f0-image.png

    03d570eb-894e-434b-af2c-207b353f316f-image.png

  • Questions about YT MCAL
    提问请附带芯片和软件版本信息

    82 主题
    387 帖子
    houjun_xiaoH

    这里配置的虚拟sector只能一个一个加,但是配置的虚拟sector可以包含多个硬件的扇区,如下所示。
    image.png

  • 这个软件包Hotfix是什么?

    已固定 已解决
    5
    0 赞同
    5 帖子
    2k 浏览
    JurgenFengJ

    同问,hotfix安装异常什么情况

    image.png

    image.png

  • HA0的SAI音频设置,包括I2C的耳放配置有没有Demo

    8
    0 赞同
    8 帖子
    2k 浏览
    kasselK

    sunxuehu 在 HA0的SAI音频设置,包括I2C的耳放配置有没有Demo 中说:

    这个是最新的,sai目前还没有做yct 配置界面,需要手动移植下,后面会将这个移植到YCT配置上

    好的,收到

  • 使用软件复位后保留RAM中的数据,复位后无法保存

    40
    0 赞同
    40 帖子
    6k 浏览
    DigaD

    下次再有问题可以新起一个帖子,这个贴楼太多了

  • 单元测试问题

    1
    0 赞同
    1 帖子
    202 浏览
    尚无回复
  • vscode+vcc生成elf文件后,跳转ozone失败

    6
    0 赞同
    6 帖子
    409 浏览
    luxiaoguoL

    ysog 在 vscode+vcc生成elf文件后,跳转ozone失败 中说:

    不要中文路径试试

    更换路径,不是中文路径,就可以了,多谢大佬

  • YTM32B1MD的ETMR触发ADC问题。

    7
    0 赞同
    7 帖子
    625 浏览
    OliverChenO

    WR 好的多谢,CIM这块我在其他地方有更改了,忘记贴了

  • YTconfigTool 配置工具中的LOGO可以拖动

    2
    0 赞同
    2 帖子
    955 浏览
    FrankieF

    感谢反馈,下个版本修复。

  • 在YTM32B1MD24的HCU_Demo例程中,如何生成例程中定义的RSA密钥数据格式?

    3
    0 赞同
    3 帖子
    1k 浏览
    WCtdcswW

    YQH 好的,谢谢

  • YTM32B1MD1 ADC Selftest

    4
    0 赞同
    4 帖子
    979 浏览
    houjun_xiaoH

    The ADC_SEx are the external input channels of the ADC, but the internal temperature sensor and PMC VREF are all internal input channels of the ADC .So they do not need to be connected to ADC_SEx. The PMC VREF can be converted by configuring the corresponding channel number into the ADC[CHSEL] register. The channel number for PMC VREF is 33.

  • YTM32BLE05,LIN引脚映射只能用UART0吗,句柄换成UART2用不了

    9
    0 赞同
    9 帖子
    2k 浏览
    aminA

    格式无效是怎么回事

  • YTM32B1ME05GOMLLT芯片, 使用Linflexd_Uart_Interrupt_Demo 无法连续发送数据

    3
    0 赞同
    3 帖子
    2k 浏览
    HAIYANGH

    同样测试Linflexd_Uart_coutinuous_transmission_Demo,测试结果如下,8字节也可以在1ms内发送完成;
    根据计算,1个byte发送需要10个bit,8个字节是80个bit,115200的波特率一个bit是8.68us,8个字节一共需要大概694us,从测试结果看时间相差不大;demo应该是没问题的,请再测试一下;
    image.png

  • 有关于YTM32B1HA0的bootloader demo吗

    2
    0 赞同
    2 帖子
    2k 浏览
    ganyongchaoG

    sqw 可以参考这个链接做一个 https://forum.ytmicro.com/topic/1257/ytm32b1me05-uds-can-fbl公版操作指南

  • LE bootloader问题汇总

    9
    0 赞同
    9 帖子
    3k 浏览
    ganyongchaoG

    sqw 可以参考这里里面的ME05方案 https://forum.ytmicro.com/topic/1203/uds-fbl-demo合集

  • JTAG 引脚如何配置?

    6
    0 赞同
    6 帖子
    2k 浏览
    runR

    软件上调试口引脚不用配置即是默认的,硬件上做好上下拉设计,芯片内部上下拉较弱。
    image.png

  • 应用CanFD时外挂晶振如何选择

    已移动
    5
    0 赞同
    5 帖子
    2k 浏览
    ganyongchaoG

    一般需要参考车厂规范,厂车规范对Tq和采样点相关配置的各个参数都有要求的,外部晶振常见使用20M或40M

  • 云途CANTP协议收到流控帧后不回连续帧问题

    21
    0 赞同
    21 帖子
    5k 浏览
    avatrA

    image.png 849688cb-d479-4088-a905-81e5c0541541-image.png d81d9290-5a28-4f1e-8915-7f1072941058-image.png 按照demo的做法,已经完全没问题了,再次感谢支持!

  • MC0系列Secure Boot使用的RAM地址咨询

    3
    0 赞同
    3 帖子
    2k 浏览
    yifeng_xieY

    Diga 在 MC0系列Secure Boot使用的RAM地址咨询 中说:

    参考该贴
    https://forum.ytmicro.com/topic/1108/secure-boot-占用的内存

    好的,谢谢!

  • UART串口接收如何判断发送端一帧发送结束。

    10
    0 赞同
    10 帖子
    2k 浏览
    FrankF

    空闲中断触发后,会自动结束当前的接收请求。再次接收数据需要通过接收API重新发起请求。重新发起的请求不受上一次空闲中断的影响。

  • 现有的SDK太杂乱,后续有推出精简版的计划吗?

    5
    0 赞同
    5 帖子
    2k 浏览
    pengh1994P

    同感,比如GPIO输入读取,必须把整个port的值读回,再自行根据所在的PIN_index分解。

  • 擦写错误

    8
    0 赞同
    8 帖子
    2k 浏览
    AlanFA

    你好!

    RAM是写过就可以读了。
    擦除贺编程出错问题已解决。
    Alan
    谢谢!

  • 云途开发生态介绍

    快速上手云途开发生态

  • 云途论坛规则/Yuntu Forum Rules

    发帖前请查看

  • YT CONFIG TOOL调查问卷

    帮助改进和优化YT CONFIG TOOL,有机会抽取YTM32B1ME0 EVB哦...

  • Online Users