查看: 1393|回复: 3

[原创] LPC55S69 silicon revision测试

[复制链接]
  • TA的每日心情
    奋斗
    2024-12-9 14:23
  • 签到天数: 204 天

    连续签到: 1 天

    [LV.7]常住居民III

    7

    主题

    567

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1143
    最后登录
    2025-3-12
    发表于 2024-5-21 23:31:06 | 显示全部楼层 |阅读模式

    一、简介
    上个月一直疯狂的想拥有一块LPC55S69-EVK,一方面LPC这颗MCU功能强大,另一方面之前一直玩STM32,想体验下不同风格~于是在管管大喜假期结束回来上班的那天,跟他达成了一个交易~最终拿到了梦寐以求的LPC55S69-EVK。就这个,感谢管管,盒子很大,板子比想象中的小,很精致。
    07.jpg
    二、MCU版本
    拿到的板子是LPC55S69-EVK的A1版,也就是说后续还有A2和A3版,据说后面的版本MCU功能更强大,可以实现一些多媒体应用,譬如接上USB camera拍照。A1版本开发板的区别主要在于MCU,NXP官方给出的信息:
    At the time of the latest update to this article, the latest silicon revision of the LPC55S6x is revision 1B. Since Nov,2019, all the LPCXpresso55S69 EVK boards marked as Revision A2 or A3 are equipped with revision 1B silicon. Initial production boards that have 0A silicon installed are marked Revision A1.
    也就是说2019年11月之后的LPC55S69都是改良版的MCU,with revision 1B silicon,频率150MHZ,手头的的A1 LPC55S69-EVK的MCU是0A版,只有100MHZ,其它功能上的区别如debug的重新设计我也不管了,反正一下子用不上,这运行频率相差一半了,必须想想办法补回来。

    三、100MHZ配置
    直接贴时钟配置源码:
    1. POWER_DisablePD(kPDRUNCFG_PD_FRO192M);               /*!< Ensure FRO is on  */
    2.     CLOCK_SetupFROClocking(12000000U);                   /*!< Set up FRO to the 12 MHz, just for sure */
    3.     CLOCK_AttachClk(kFRO12M_to_MAIN_CLK);                /*!< Switch to FRO 12MHz first to ensure we can change the clock setting */

    4.     CLOCK_SetupFROClocking(96000000U);                   /* Enable FRO HF(96MHz) output */

    5.     POWER_DisablePD(kPDRUNCFG_PD_XTAL32M);                        /* Ensure XTAL32M is powered */
    6.     POWER_DisablePD(kPDRUNCFG_PD_LDOXO32M);                       /* Ensure XTAL32M is powered */
    7.     CLOCK_SetupExtClocking(16000000U);                            /* Enable clk_in clock */
    8.     SYSCON->CLOCK_CTRL |= SYSCON_CLOCK_CTRL_CLKIN_ENA_MASK;       /* Enable clk_in from XTAL32M clock  */
    9.     ANACTRL->XO32M_CTRL |= ANACTRL_XO32M_CTRL_ENABLE_SYSTEM_CLK_OUT_MASK;    /* Enable clk_in to system  */

    10.     POWER_SetVoltageForFreq(100000000U);                  /*!< Set voltage for the one of the fastest clock outputs: System clock output */
    11.     CLOCK_SetFLASHAccessCyclesForFreq(100000000U);          /*!< Set FLASH wait states for core */

    12.     /*!< Set up PLL */
    13.     CLOCK_AttachClk(kEXT_CLK_to_PLL0);                    /*!< Switch PLL0CLKSEL to EXT_CLK */
    14.     POWER_DisablePD(kPDRUNCFG_PD_PLL0);                  /* Ensure PLL is on  */
    15.     POWER_DisablePD(kPDRUNCFG_PD_PLL0_SSCG);
    16.     const pll_setup_t pll0Setup = {
    17.         .pllctrl = SYSCON_PLL0CTRL_CLKEN_MASK | SYSCON_PLL0CTRL_SELI(54U) | SYSCON_PLL0CTRL_SELP(26U),
    18.         .pllndec = SYSCON_PLL0NDEC_NDIV(4U),
    19.         .pllpdec = SYSCON_PLL0PDEC_PDIV(2U),
    20.         .pllsscg = {0x0U,(SYSCON_PLL0SSCG1_MDIV_EXT(100U) | SYSCON_PLL0SSCG1_SEL_EXT_MASK)},
    21.         .pllRate = 100000000U,
    22.         .flags =  PLL_SETUPFLAG_WAITLOCK
    23.     };
    24.     CLOCK_SetPLL0Freq(&pll0Setup);                       /*!< Configure PLL0 to the desired values */

    25.     /*!< Set up dividers */
    26.     CLOCK_SetClkDiv(kCLOCK_DivAhbClk, 1U, false);         /*!< Set AHBCLKDIV divider to value 1 */

    27.     /*!< Set up clock selectors - Attach clocks to the peripheries */
    28.     CLOCK_AttachClk(kPLL0_to_MAIN_CLK);                 /*!< Switch MAIN_CLK to PLL0 */

    复制代码


    四、150MHZ配置
    还是直接上源码:
    1. POWER_DisablePD(kPDRUNCFG_PD_FRO192M);               /*!< Ensure FRO is on  */
    2.     CLOCK_SetupFROClocking(12000000U);                   /*!< Set up FRO to the 12 MHz, just for sure */
    3.     CLOCK_AttachClk(kFRO12M_to_MAIN_CLK);                /*!< Switch to FRO 12MHz first to ensure we can change the clock setting */

    4.     POWER_DisablePD(kPDRUNCFG_PD_XTAL32M);                        /* Ensure XTAL32M is powered */
    5.     POWER_DisablePD(kPDRUNCFG_PD_LDOXO32M);                       /* Ensure XTAL32M is powered */
    6.     CLOCK_SetupExtClocking(16000000U);                            /* Enable clk_in clock */
    7.     SYSCON->CLOCK_CTRL |= SYSCON_CLOCK_CTRL_CLKIN_ENA_MASK;       /* Enable clk_in from XTAL32M clock  */
    8.     ANACTRL->XO32M_CTRL |= ANACTRL_XO32M_CTRL_ENABLE_SYSTEM_CLK_OUT_MASK;    /* Enable clk_in to system  */

    9.     POWER_SetVoltageForFreq(150000000U);                  /*!< Set voltage for the one of the fastest clock outputs: System clock output */
    10.     CLOCK_SetFLASHAccessCyclesForFreq(150000000U);          /*!< Set FLASH wait states for core */

    11.     /*!< Set up PLL */
    12.     CLOCK_AttachClk(kEXT_CLK_to_PLL0);                    /*!< Switch PLL0CLKSEL to EXT_CLK */
    13.     POWER_DisablePD(kPDRUNCFG_PD_PLL0);                  /* Ensure PLL is on  */
    14.     POWER_DisablePD(kPDRUNCFG_PD_PLL0_SSCG);
    15.     const pll_setup_t pll0Setup = {
    16.         .pllctrl = SYSCON_PLL0CTRL_CLKEN_MASK | SYSCON_PLL0CTRL_SELI(53U) | SYSCON_PLL0CTRL_SELP(31U),
    17.         .pllndec = SYSCON_PLL0NDEC_NDIV(8U),
    18.         .pllpdec = SYSCON_PLL0PDEC_PDIV(1U),
    19.         .pllsscg = {0x0U,(SYSCON_PLL0SSCG1_MDIV_EXT(150U) | SYSCON_PLL0SSCG1_SEL_EXT_MASK)},
    20.         .pllRate = 150000000U,
    21.         .flags =  PLL_SETUPFLAG_WAITLOCK
    22.     };
    23.     CLOCK_SetPLL0Freq(&pll0Setup);                       /*!< Configure PLL0 to the desired values */

    24.     /*!< Set up dividers */
    25.     CLOCK_SetClkDiv(kCLOCK_DivAhbClk, 1U, false);         /*!< Set AHBCLKDIV divider to value 1 */

    26.     /*!< Set up clock selectors - Attach clocks to the peripheries */
    27.     CLOCK_AttachClk(kPLL0_to_MAIN_CLK);                 /*!< Switch MAIN_CLK to PLL0 */
    复制代码


    五,测试
    配置好后,需要测试下100MHZ跟150MHZ到底啥区别。引入COREMARK来测试下,在相同的编译和执行环境下,只改变MCU的运行频率。
    (一)100MHZ成绩
    The CPU frequency is: 100000000 Hz

    Benchmark started, please make sure it runs for at least 10s.
    2K performance run parameters for coremark.
    CoreMark Size    : 666
    Total ticks      : 82403
    Total time (secs): 82.403000
    Iterations/Sec   : 43.687730
    Iterations       : 3600
    Compiler version : GCCClang 15.0.0
    Compiler flags   :
    Memory location  : STACK
    seedcrc          : 0xe9f5
    [0]crclist       : 0xe714
    [0]crcmatrix     : 0x1fd7
    [0]crcstate      : 0x8e3a
    [0]crcfinal      : 0x5275
    Correct operation validated. See README.md for run and reporting rules.
    CoreMark 1.0 : 43.687730 / GCCClang 15.0.0  / STACK


    (二)150MHZ成绩
    The CPU frequency is: 150000000 Hz

    Benchmark started, please make sure it runs for at least 10s.
    2K performance run parameters for coremark.
    CoreMark Size    : 666
    Total ticks      : 63474
    Total time (secs): 63.474000
    Iterations/Sec   : 56.716136
    Iterations       : 3600
    Compiler version : GCCClang 15.0.0
    Compiler flags   :
    Memory location  : STACK
    seedcrc          : 0xe9f5
    [0]crclist       : 0xe714
    [0]crcmatrix     : 0x1fd7
    [0]crcstate      : 0x8e3a
    [0]crcfinal      : 0x5275
    Correct operation validated. See README.md for run and reporting rules.
    CoreMark 1.0 : 56.716136 / GCCClang 15.0.0  / STACK
    六、结论
    150MHZ的MCU测试耗时63.474s,coremark成绩为56.716136;相较100MHZ的测试耗时82.403s,coremark成绩43.68773,提升巨大!
    说明0A silicon是可以运行在150MHZ的频率,并且性能提升巨大。







    该会员没有填写今日想说内容.
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2024-9-13 10:02
  • 签到天数: 297 天

    连续签到: 1 天

    [LV.8]以坛为家I

    34

    主题

    3512

    帖子

    38

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    6051

    活跃会员

    最后登录
    2025-7-25
    发表于 2024-5-23 09:20:08 | 显示全部楼层
    不错的测试
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    8 小时前
  • 签到天数: 2378 天

    连续签到: 87 天

    [LV.Master]伴坛终老

    84

    主题

    1万

    帖子

    3

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    22059
    最后登录
    2025-7-27
    发表于 2024-5-23 11:04:05 | 显示全部楼层
    coremark才几十,100都不到。你得优化等级也太差了
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2024-12-9 14:23
  • 签到天数: 204 天

    连续签到: 1 天

    [LV.7]常住居民III

    7

    主题

    567

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1143
    最后登录
    2025-3-12
     楼主| 发表于 2024-5-23 21:09:25 | 显示全部楼层
    流水源 发表于 2024-5-23 11:04
    coremark才几十,100都不到。你得优化等级也太差了

    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-7-27 20:01 , Processed in 0.090794 second(s), 22 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表