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

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

3天内不再提示

HPM6750 从 XPI0 CB 端口启动

先楫半导体HPMicro 2023-10-21 08:18 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

1

背 景

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

4b73a148-6fa7-11ee-9788-92fbcf53809c.png

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

4b80100e-6fa7-11ee-9788-92fbcf53809c.png

XPI 部分原理图

2

问 题

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

4b9ba9fe-6fa7-11ee-9788-92fbcf53809c.png

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

3

OTP 烧写

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

4ba4046e-6fa7-11ee-9788-92fbcf53809c.png4ba82878-6fa7-11ee-9788-92fbcf53809c.png

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

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

4bb032d4-6fa7-11ee-9788-92fbcf53809c.png

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

4bc0cea0-6fa7-11ee-9788-92fbcf53809c.png

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

4bc69fa6-6fa7-11ee-9788-92fbcf53809c.png

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

4bd19aaa-6fa7-11ee-9788-92fbcf53809c.png

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

4

修改 XPI NOR 配置选项

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

4bdc4bee-6fa7-11ee-9788-92fbcf53809c.png4be460f4-6fa7-11ee-9788-92fbcf53809c.png4bf5b69c-6fa7-11ee-9788-92fbcf53809c.png

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

4bfcaf60-6fa7-11ee-9788-92fbcf53809c.png

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

4c0157cc-6fa7-11ee-9788-92fbcf53809c.png4c0a9062-6fa7-11ee-9788-92fbcf53809c.png

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

4c2c182c-6fa7-11ee-9788-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 被添加到项目中。

4c30057c-6fa7-11ee-9788-92fbcf53809c.png

同样的,在 XPI 配置选项中也要使用 XPI0 CB_CS0 端口,所以需要将 Header[3:0] 改为 2Option[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 字段。

4c3d0678-6fa7-11ee-9788-92fbcf53809c.png4c462032-6fa7-11ee-9788-92fbcf53809c.png

Status Register 中的 QE 位

4c4e5bbc-6fa7-11ee-9788-92fbcf53809c.png

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

4c684342-6fa7-11ee-9788-92fbcf53809c.png

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

    关注

    462

    文章

    53530

    浏览量

    458867
  • 控制器
    +关注

    关注

    114

    文章

    17638

    浏览量

    190177
  • 评估板
    +关注

    关注

    1

    文章

    890

    浏览量

    30905
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    HPM5E00EVK,ecat_io例程,卡在DisableSyncManChannel函数

    向大家请教一个问题。如题, 硬件:HPM5E00EVK 开发环境:win10, embedded studio 软件:sdk_env_v1.10.0,ethercat/ecat_io 硬件连接
    发表于 09-25 15:06

    HPM monitor studio 只能在 hpm芯片+hpm_sdk 的组合下才能用吗?

    使用 hpm6200evk开发板,但未使用hpm_sdk。 然后编译的固件elf无法在hpm monitor studio解析成功。所以说必须要使用hpm_sdk 才可以使用
    发表于 08-28 09:36

    hpm6364内部flash使用时的openocd配置问题.

    xpi0 hpm_xpi 0x80000000 0x2000000 1 1 $_TARGET0 0
    发表于 07-12 19:48

    支持HPM6P00/HPM5E00系列!HPMicro Manufacturing Tool v0.6.0发布

    HPM6P00、HPM5E00系列SoC的烧写及其它操作,新增HPM6E00、HPM5E00固件;新增verify-checksum及query-rtecomman
    的头像 发表于 06-04 08:28 1159次阅读
    支持<b class='flag-5'>HPM</b>6P00/<b class='flag-5'>HPM</b>5E00系列!HPMicro Manufacturing Tool v0.6.0发布

    重磅更新 | 先楫半导体HPM_SDK v1.9.0 发布

    版本更新概况[New]增加HPM6P00系列MCU以及hpm6p00evk支持[New]增加了开发板已知问题说明[Update]将全系列开发板VCore电压调节至1.275V,HPM6750系列开发板主频设成816MHz,
    的头像 发表于 04-02 08:31 817次阅读
    重磅更新 | 先楫半导体<b class='flag-5'>HPM</b>_SDK v1.9.0 发布

    如何在SJA1110中配置IEEE802.1CB帧复制和冗余消除 (FRER)?

    嗨,我如何在 SJA1110 中配置 IEEE802.1CB 帧复制和冗余消除 (FRER),我需要实施进入端口 1 的数据的帧复制需要反映在端口 2 中,以及如何禁用进入端口 1 的
    发表于 03-26 08:02

    生成的以太网帧不是IEEE802.1CB (FRER)中的UDP/0x800,为什么?

    CB_SID_ON = 01 MACADDR = 0x112233445566 掩码 = 0x0000FFFFFFFFFFFFF SRCPORT = 端口 1
    发表于 03-26 08:01

    如何R52_0使用SD Boot启动S32z ?

    有人能够 R52_0 使用 SD Boot 启动 S32z 吗? 如果是,如何初始化 IVT 工具并创建图像 blob? 我能够 SD 卡启动
    发表于 03-17 06:10

    AMAZINGIC晶焱科技:详解RF端口如何选择TVS启动电压

    AMAZINGIC晶焱科技:详解RF端口如何选择TVS启动电压
    的头像 发表于 02-20 10:09 867次阅读
    AMAZINGIC晶焱科技:详解RF<b class='flag-5'>端口</b>如何选择TVS<b class='flag-5'>启动</b>电压

    hpm_apps v1.8.0上线:HPM6200四轴伺服驱控方案重磅发布!

    hpm_apps v1.8.0上线:HPM6200四轴伺服驱控方案重磅发布!
    的头像 发表于 02-12 08:04 1203次阅读
    <b class='flag-5'>hpm</b>_apps v1.8.0上线:<b class='flag-5'>HPM</b>6200四轴伺服驱控方案重磅发布!

    高速链路设计难?利用HPM6750双千兆以太网透传实现LED大屏实时控制

    HPM6750双千兆以太网透传方案演示LED大屏显示系统利用发光二极管构成的点阵模块或像素单元组成大面积显示屏显示字符、图像等信息,具有低功耗、低成本、高亮度、长寿命、宽视角等优点,近年来随着
    的头像 发表于 02-08 13:45 1640次阅读
    高速链路设计难?利用<b class='flag-5'>HPM6750</b>双千兆以太网透传实现LED大屏实时控制

    基于HPM_SDK_ENV开发应用程序的升级处理

    基于HPM_SDK_ENV开发应用程序的方式HPM_SDK_ENV是先楫半导体MCU的Windows集成开发环境,其包含HPM_SDK,工具链,依赖工具(cmake,ninja,openocd等
    的头像 发表于 02-08 13:38 1438次阅读
    基于<b class='flag-5'>HPM</b>_SDK_ENV开发应用程序的升级处理

    上新 | HPM6E80高压伺服EtherCAT驱动器方案

    求远电子基于先楫半导体HPM6E80推出的HPM6E00_EtherCAT_MDR高压伺服EtherCAT站驱动器方案,提供完善的软硬件参考,可极大的降低产品开发难度,缩短产品上市时间
    的头像 发表于 02-08 13:38 964次阅读
    上新 | <b class='flag-5'>HPM</b>6E80高压伺服EtherCAT驱动器方案

    详解RF端口如何选择TVS启动电压

    AMAZINGIC晶焱科技技术应用:详解RF端口如何选择TVS启动电压
    的头像 发表于 02-05 16:19 1369次阅读
    详解RF<b class='flag-5'>端口</b>如何选择TVS<b class='flag-5'>启动</b>电压

    自己做的hpm5321和6750板子怎么都没有1.1的输出呢?

    新手硬件开发求分析 。 不知道是layout的关系还是什么原因呢,主要IC内部dcdc部分跟其他引脚配置没关系吧,对比了官方开发板和野火的开发版没什么差,难道电容规格会影响吗? 5321原理图,3.3上电正常,无1.1v输出 6750原理图,3.3上电正常,无1.1v输出 这可怎么排查
    发表于 12-14 11:48