0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

HPM6750从XPI0 CB端口启动步骤

先楫半导体HPMicro 来源:先楫半导体HPMicro 2023-10-20 14:42 次阅读

1背 景

在我的某个项目中由于希望把板子做的小一点,所以选择了 BGA196 封装的 HPM6750IAN2 芯片,在画板子的过程中,注意到相比 BGA289 封装的 HPM6750IVM2 芯片,其并没有引出 XPI0 CA 端口的引脚,如下图所示。所以最后选择了 XPI0 的 CB 端口用于连接 NOR Flash。

28bc418a-6f13-11ee-939d-92fbcf53809c.png

部分引脚复用功能(来源:HPM6750数据手册)

28c4abea-6f13-11ee-939d-92fbcf53809c.png

XPI 部分原理图

2问 题

在 HPM6750EVKMINI 评估板中使用了 XPI0 CA 端口作为连接串行 NOR Flash 的引脚(芯片的默认配置),在芯片上电启动的过程中,芯片内部的 BootROM 会根据 OTP 配置初始化 XPI 控制器,从 Flash 0x400 的地址读取 XPI NOR 配置选项,并按照读取的配置选项将 XPI 配置为指定的工作模式,然后重新检测 Flash 是否存在,从 Flash 中加载镜像完成剩余启动步骤。

28cfb8a0-6f13-11ee-939d-92fbcf53809c.png

因此为了实现从 XPI0 CB 端口启动,我们需要修改 OTP 中的对应字段和启动镜像中的 XPI NOR 配置选项。

3OTP 烧写

通过查阅 HPM6750 的参考手册,发现控制 BootROM 启动时指定 Flash 连接方式的为以下几个字段:

28df8bc2-6f13-11ee-939d-92fbcf53809c.png28ea7aa0-6f13-11ee-939d-92fbcf53809c.png

因此在本例中,需要仅需修改 XPI_PORT_SEL 字段为 1,让 BootROM 从 CB_CS0 端口启动即可。

将 BOOT 拨码开关调至 BOOT_MODE[1:0]=0b10,以 ISP 模式启动,将 USB0 连接至 PC,然后打开 HPMicro 量产工具,选择对应的 USB 设备点击 连接,连接成功后如下图所示。

28f5d6e8-6f13-11ee-939d-92fbcf53809c.png

注意:
OTP 操作需谨慎!!!
OTP 操作需谨慎!!!
OTP 操作需谨慎!!!

OTP 操作 ⻚⾯中,点击 刷新 读取当前芯⽚中 OTP 的数据,看到 Word 24 的值为0x00000000 ,也就是从 XPI0 CA 端⼝的第⼀组引脚启动。

29076df4-6f13-11ee-939d-92fbcf53809c.png

切换至 写视图,点击 添加 Words,在弹出的对话框中按照下图输入,即:将 Word 24 的 bit 6 置 1,从 CB_CS0 端口启动。点击确定后,再次确认数据是否有误,确认无误后点击 写入

29171696-6f13-11ee-939d-92fbcf53809c.png

写入完成后切换回 写视图,点击 刷新,可以看到 Word 24 已经变为期望值。

2921a93a-6f13-11ee-939d-92fbcf53809c.png

将拨码开关拨回 XPI NOR 启动后复位芯片,可使用逻辑分析仪观察 XPI0_CB_SCLK 引脚在上电时的电平,如可以观察到对应的时钟信号,证明 OTP 设置已经生效。

4修改 XPI NOR 配置选项

在 BootROM 检测到 Flash 后,会从 0x400 读取 XPI NOR 配置选项重新配置 XPI,为了确保 XPI 重新配置后仍能检测到 Flash,需要对默认配置进行修改。根据参考手册,配置选项的定义如下:

2938b54e-6f13-11ee-939d-92fbcf53809c.png294e82ac-6f13-11ee-939d-92fbcf53809c.png2956cb7e-6f13-11ee-939d-92fbcf53809c.png

当我们使用 CMake 配置项目,并设置 CMAKE_BUILD_TYPE为 flash_xip 时,生成的 SES(Segger Embedded Studio)工程会使用 flash_xip.icf 链接脚本,以将各个 section 链接至 Flash 中。可以在如下菜单中打开链接脚本。

2961a31e-6f13-11ee-939d-92fbcf53809c.png

在 flash_xip.icf中,可以看到在 XPI0 的基地址偏移 0x400 处定义了存放 NOR_CFG_OPTION 的区域,对应的 section 为 .nor_cfg_option。

29707768-6f13-11ee-939d-92fbcf53809c.png297b6510-6f13-11ee-939d-92fbcf53809c.png

使用快捷键 Ctrl+Shift+F 全局搜索 .nor_cfg_option,可以在 board.c 中找到对应的配置选项。

298375c0-6f13-11ee-939d-92fbcf53809c.png

为了避免修改 SDK 中的文件,我选择在项目文件夹下新建一个 board文件夹,并复制 hpm6750evkmini 的板级文件,重新命名为 myboard,此时项目结构如下:

├── src/

│ ├── board/

│ │ └── myboard/

│ │ ├── CMakeLists.txt

│ │ ├── board.c

│ │ ├── board.h

│ │ ├── myboard.yaml

│ │ ├── pinmux.c

│ │ └── pinmux.h

│ └── app.c

└── CMakeLists.txt

在 CMake 初始化时使用 BOARD_SEARCH_PATH 将 board 文件夹添加至搜索路径中(需使用 SDK 1.2.0):

cmake -Bbuild -DBOARD=myboard -DBOARD_SEARCH_PATH=./src/board -GNinja -DCMAKE_BUILD_TY
PE=flash_xip

使用 SES 打开工程,可以看到 board.c 被添加到项目中。

299640ec-6f13-11ee-939d-92fbcf53809c.png

同样的,在 XPI 配置选项中也要使用 XPI0 CB_CS0 端口,所以需要将 Header[3:0] 改为 2,Option[11:8]改为 1。即:

__attribute__ ((section(".nor_cfg_option"))) const uint32_t option[4] = {0xfcf90002, 0
x00000007, 0x00000100, 0x0};

修改完成后重新进行编译,得到生成的 .bin文件。

5烧 录

使用 HPMicro Programmer 进行烧录前,需要将 Connection Selection改为 CB_CS0,同时为了确保后续 Flash 能切换至四线模式(Quad SPI),还需要根据使用的 Flash 设置 Quad Enable Sequence,借助 BootROM 将 Flash 的 QE 标志位置位。这里我使用的是 GD25Q40C 系列 Flash,查阅 datasheet 可知 QE 位于 Status Register 2 的 bit1,因此这里我选择 At bit1 in Status Register2。由于 QE 是 非易失 的,掉电后数据不会丢失,因此我们仅需在烧录时设置一次,在 XPI NOR 配置选项中可以不用设置 Quad Enable Sequence 字段。

29a13ee8-6f13-11ee-939d-92fbcf53809c.png29ac6af2-6f13-11ee-939d-92fbcf53809c.png

Status Register 中的 QE 位

29bbd8c0-6f13-11ee-939d-92fbcf53809c.png

选择编译生成的.bin 文件后,程序会自动设置烧写地址,随后点击烧录。烧录成功后恢复启动模式拨码开关,然后复位芯片,正常情况下程序就会运行了。

29c8f596-6f13-11ee-939d-92fbcf53809c.png

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 芯片
    +关注

    关注

    447

    文章

    47795

    浏览量

    409156
  • FlaSh
    +关注

    关注

    10

    文章

    1551

    浏览量

    146648
  • 封装
    +关注

    关注

    124

    文章

    7279

    浏览量

    141100
  • 端口
    +关注

    关注

    4

    文章

    820

    浏览量

    31588

原文标题:开发者分享|HPM6750 从 XPI0 CB 端口启动

文章出处:【微信号:HPMicro,微信公众号:先楫半导体HPMicro】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    如何使用RT-Thread Studio创建支持HPM6750开发板的RT-Thread项目

    和RT-Thread代码中的默认配置一致)。点击“确定”,将会启动一个新的终端,并按照配置参数连接HPM6750开发板对应的串口端口:此时,按下开发板的复位按键,将会看到终端输出了RT-Thread的版本信息
    发表于 06-08 11:22

    关于先楫半导体hpm6750的上手体验知识总结

    %AXI_SRAM_NONCACHEABLE: 0 GB 256 KB 0.00%debug 类型工程对应的 gcc 工具链链接脚本为 ram.ld ,他在“hpm_sdk/soc/HPM6750/toolchains/gcc
    发表于 07-07 15:28

    RT-THREAD在HPM6750中的系統心跳处理疑问求解

    这两天学习了下rtthread在hpm6750的系统心跳处理的 方式,有些疑惑,为什么要用非向量中断模式呢,用非向量中断模式会导致任何中断都会引起如图所示的 寄存器的出入栈。不知道有没有高手给解惑
    发表于 02-02 14:37

    如何使用CodeViser调试先楫HPM6750开发板?

    HPM6750EVK2是基于先楫半导体的HPM6750高性能SOC的开发板,HPM6750是基于RISC-V的双核处理器,主频高达816M。HPM6750EVK2提供丰富的外设接口,包
    发表于 03-21 16:35

    请问HPM6750芯片的湿度敏感等级,***,是多少啊?

    请问HPM6750芯片的湿度敏感等级,***,是多少啊? 在资料里面没有找到相关的描述。 谢谢!
    发表于 05-26 06:23

    请问HPM6750两核的配置是SMP吗?

    0x90000000 0x9FEFFFFF 255 MBytes XPI1 串行总线控制器XPI1 存储空间 再看linker script 的设置.
    发表于 05-26 08:05

    HPM6750EVK/HPM6750EVKMINI调试失败的原因及其解决办法

    。 2Bootpin配置 HPM6750的boot pin配置也有可能会影响到芯片调试。建议如果发生调试失败,可以尝试调整boot pin配置如下: BOOT0 = 0,BOOT1=1 避免
    发表于 05-26 06:06

    HPM6750HPM6450是PIN to PIN的吗?

    相同的封装,HPM6750HPM6450是PINto PIN的吗?
    发表于 06-08 08:27

    HPM6750单片机AD的原理图与PCB封装库

    HPM6750单片机AD的原理图与PCB封装库
    发表于 10-21 15:12 0次下载

    HPM6750开发环境搭建及快速上手

    鉴于不少小伙伴已经拿到了HPM6750的开发套件,本文将基于HPM6750 EVKMINI开发板,从开发环境搭建开始,带你快速上手体验HPM6750的强大性能。
    的头像 发表于 12-20 11:52 2911次阅读

    测评分享 | HPM6750 能跑 openmv 啦!

    本文内容来自先楫开发者@RCSN的测评@先楫HPM6750在Openmv跑起来了!赶紧来看看---------------以下为测评内容---------------(本期测评开发板
    的头像 发表于 09-01 15:41 1416次阅读
    测评分享 | <b class='flag-5'>HPM6750</b> 能跑 openmv 啦!

    另辟蹊径,看大牛如何在CLion中开发HPM6750

    本期工具分享来自一名不愿留名的热心先楫粉丝,咱就称大神为@L君吧!内容着重介绍了如何在CLion中开发HPM6750,感兴趣的赶紧上车HPM6750是先楫半导体HPM6000系列的旗舰产品,采用
    的头像 发表于 09-22 10:20 2067次阅读
    另辟蹊径,看大牛如何在CLion中开发<b class='flag-5'>HPM6750</b>

    【深度测评】HPM6750 MCU片内16位ADC精度测试

    【深度测评】HPM6750 MCU片内16位ADC精度测试
    的头像 发表于 10-30 17:43 1916次阅读
    【深度测评】<b class='flag-5'>HPM6750</b> MCU片内16位ADC精度测试

    HPM6750 ADC EVK用户使用手册

    电子发烧友网站提供《HPM6750 ADC EVK用户使用手册.pdf》资料免费下载
    发表于 09-19 15:46 0次下载
    <b class='flag-5'>HPM6750</b> ADC EVK用户使用手册

    HPM6750XPI0 CB 端口启动

    XPI0CA端口的引脚,如下图所示。所以最后选择了XPI0CB端口用于连接NORFlash。部分引脚复用功能(来源:
    的头像 发表于 10-21 08:18 491次阅读
    <b class='flag-5'>HPM6750</b> 从 <b class='flag-5'>XPI0</b> <b class='flag-5'>CB</b> <b class='flag-5'>端口</b><b class='flag-5'>启动</b>