0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

HPM6750 從 XPI0 CB 端口啟動(dòng)

先楫半導(dǎo)體HPMicro ? 2023-10-21 08:18 ? 次閱讀

1

背 景

在我的某個(gè)項(xiàng)目中由于希望把板子做的小一點(diǎn),所以選擇了 BGA196 封裝的 HPM6750IAN2 芯片,在畫板子的過程中,注意到相比 BGA289 封裝的 HPM6750IVM2 芯片,其并沒有引出 XPI0 CA 端口的引腳,如下圖所示。所以最后選擇了 XPI0 的 CB 端口用于連接 NOR Flash。

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

部分引腳復(fù)用功能(來(lái)源:HPM6750數(shù)據(jù)手冊(cè))

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

XPI 部分原理圖

2

問 題

在 HPM6750EVKMINI 評(píng)估板中使用了 XPI0 CA 端口作為連接串行 NOR Flash 的引腳(芯片的默認(rèn)配置),在芯片上電啟動(dòng)的過程中,芯片內(nèi)部的 BootROM 會(huì)根據(jù) OTP 配置初始化 XPI 控制器,從 Flash 0x400 的地址讀取 XPI NOR 配置選項(xiàng),并按照讀取的配置選項(xiàng)將 XPI 配置為指定的工作模式,然后重新檢測(cè) Flash 是否存在,從 Flash 中加載鏡像完成剩余啟動(dòng)步驟。

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

因此為了實(shí)現(xiàn)從 XPI0 CB 端口啟動(dòng),我們需要修改 OTP 中的對(duì)應(yīng)字段和啟動(dòng)鏡像中的 XPI NOR 配置選項(xiàng)。

3

OTP 燒寫

通過查閱 HPM6750 的參考手冊(cè),發(fā)現(xiàn)控制 BootROM 啟動(dòng)時(shí)指定 Flash 連接方式的為以下幾個(gè)字段:

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

因此在本例中,需要僅需修改 XPI_PORT_SEL 字段為 1,讓 BootROM 從 CB_CS0 端口啟動(dòng)即可。

將 BOOT 撥碼開關(guān)調(diào)至 BOOT_MODE[1:0]=0b10,以 ISP 模式啟動(dòng),將 USB0 連接至 PC,然后打開 HPMicro 量產(chǎn)工具,選擇對(duì)應(yīng)的 USB 設(shè)備點(diǎn)擊 連接,連接成功后如下圖所示。

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

注意:
OTP 操作需謹(jǐn)慎?。?!
OTP 操作需謹(jǐn)慎!??!
OTP 操作需謹(jǐn)慎!?。?/strong>
OTP 操作 ??中,點(diǎn)擊 刷新 讀取當(dāng)前芯?中 OTP 的數(shù)據(jù),看到 Word 24 的值為0x00000000 ,也就是從 XPI0 CA 端?的第?組引腳啟動(dòng)。

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

切換至 寫視圖,點(diǎn)擊 添加 Words,在彈出的對(duì)話框中按照下圖輸入,即:將 Word 24 的 bit 6 置 1,從 CB_CS0 端口啟動(dòng)。點(diǎn)擊確定后,再次確認(rèn)數(shù)據(jù)是否有誤,確認(rèn)無(wú)誤后點(diǎn)擊 寫入

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

寫入完成后切換回 寫視圖,點(diǎn)擊 刷新,可以看到 Word 24 已經(jīng)變?yōu)槠谕怠?/p>

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

將撥碼開關(guān)撥回 XPI NOR 啟動(dòng)后復(fù)位芯片,可使用邏輯分析儀觀察 XPI0_CB_SCLK 引腳在上電時(shí)的電平,如可以觀察到對(duì)應(yīng)的時(shí)鐘信號(hào),證明 OTP 設(shè)置已經(jīng)生效。

4

修改 XPI NOR 配置選項(xiàng)

在 BootROM 檢測(cè)到 Flash 后,會(huì)從 0x400 讀取 XPI NOR 配置選項(xiàng)重新配置 XPI,為了確保 XPI 重新配置后仍能檢測(cè)到 Flash,需要對(duì)默認(rèn)配置進(jìn)行修改。根據(jù)參考手冊(cè),配置選項(xiàng)的定義如下:

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

當(dāng)我們使用 CMake 配置項(xiàng)目,并設(shè)置 CMAKE_BUILD_TYPEflash_xip 時(shí),生成的 SES(Segger Embedded Studio)工程會(huì)使用 flash_xip.icf 鏈接腳本,以將各個(gè) section 鏈接至 Flash 中??梢栽谌缦虏藛沃写蜷_鏈接腳本。

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

flash_xip.icf中,可以看到在 XPI0 的基地址偏移 0x400 處定義了存放 NOR_CFG_OPTION 的區(qū)域,對(duì)應(yīng)的 section 為 .nor_cfg_option

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

使用快捷鍵 Ctrl+Shift+F 全局搜索 .nor_cfg_option,可以在 board.c 中找到對(duì)應(yīng)的配置選項(xiàng)。

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

為了避免修改 SDK 中的文件,我選擇在項(xiàng)目文件夾下新建一個(gè) board文件夾,并復(fù)制 hpm6750evkmini 的板級(jí)文件,重新命名為 myboard,此時(shí)項(xiàng)目結(jié)構(gòu)如下:

├── src/

│ ├── board/

│ │ └── myboard/

│ │ ├── CMakeLists.txt

│ │ ├── board.c

│ │ ├── board.h

│ │ ├── myboard.yaml

│ │ ├── pinmux.c

│ │ └── pinmux.h

│ └── app.c

└── CMakeLists.txt

在 CMake 初始化時(shí)使用 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 被添加到項(xiàng)目中。

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

同樣的,在 XPI 配置選項(xiàng)中也要使用 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};

修改完成后重新進(jìn)行編譯,得到生成的 .bin文件。

5

燒 錄

使用 HPMicro Programmer 進(jìn)行燒錄前,需要將 Connection Selection改為 CB_CS0,同時(shí)為了確保后續(xù) Flash 能切換至四線模式(Quad SPI),還需要根據(jù)使用的 Flash 設(shè)置 Quad Enable Sequence,借助 BootROM 將 Flash 的 QE 標(biāo)志位置位。這里我使用的是 GD25Q40C 系列 Flash,查閱 datasheet 可知 QE 位于 Status Register 2 的 bit1,因此這里我選擇 At bit1 in Status Register2。由于 QE非易失 的,掉電后數(shù)據(jù)不會(huì)丟失,因此我們僅需在燒錄時(shí)設(shè)置一次,在 XPI NOR 配置選項(xiàng)中可以不用設(shè)置 Quad Enable Sequence 字段。

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

Status Register 中的 QE 位

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

選擇編譯生成的.bin 文件后,程序會(huì)自動(dòng)設(shè)置燒寫地址,隨后點(diǎn)擊燒錄。燒錄成功后恢復(fù)啟動(dòng)模式撥碼開關(guān),然后復(fù)位芯片,正常情況下程序就會(huì)運(yùn)行了。

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

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 芯片
    +關(guān)注

    關(guān)注

    450

    文章

    49631

    瀏覽量

    417106
  • 控制器
    +關(guān)注

    關(guān)注

    112

    文章

    15879

    瀏覽量

    175338
  • 評(píng)估板
    +關(guān)注

    關(guān)注

    1

    文章

    478

    瀏覽量

    29162
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    hpm_manufacturing_tool linux 版本 選擇 hidraw 連接等待超時(shí)

    _manufacturing_tool_gui linux 版本 選擇 hidraw 連接 HPM6750 芯片,能識(shí)別到 hidraw 設(shè)備,單擊連接是提示重啟芯片這個(gè)時(shí)候會(huì)等待超時(shí)然后軟件報(bào)錯(cuò),此時(shí)查看 lsusb 設(shè)備是檢測(cè)不到 hpm6750
    發(fā)表于 08-07 16:43

    RTThread的定時(shí)器中斷時(shí)間不準(zhǔn)確,會(huì)有us級(jí)的抖動(dòng)的原因?

    我在用hpm6750定時(shí)器,通過定時(shí)器中斷周期處理函數(shù),周期1ms,但是定時(shí)器的每周期時(shí)間都會(huì)飄,會(huì)有us級(jí)的抖動(dòng),我的中斷回調(diào)函數(shù)如下: int us_temp[1000]; int us_idx
    發(fā)表于 02-23 07:09

    HPM6750體驗(yàn)ADC

    1、新建RTT工程,工程中添加對(duì)ADC的驅(qū)動(dòng): 2、保存工程后,添加測(cè)試代碼。 3、我們根據(jù)原理圖上的J10接個(gè),只有PE29是ADC3的輸出通道 4、先定義通道、任務(wù) #define ADC_DEV_NAME\"adc3\"/* ADC 設(shè)備名稱 */ #define ADC_DEV_CHANNEL2/* ADC 通道 */ #define REFER_VOLTAGE 330/* 參考電壓 3.3V,數(shù)據(jù)精度乘以100保留2位小數(shù)*/ #define CONVERT_BITS(1 << 16)/* 轉(zhuǎn)換位數(shù)為16位 */ 5、添加任務(wù): static void Adc_entry(void* paremeter) { rt_adc_device_t adc_dev; rt_uint32_t value,vol; rt_err_t ret = RT_EOK; adc_dev = (rt_adc_device_t)rt_device_find(ADC_DEV_NAME); if (adc_dev == RT_NULL) { rt_kprintf(\"adc sample run failed! can\'t find %s device!\\\\n\", ADC_DEV_NAME); } /* 使能設(shè)備 */ ret = rt_adc_enable(adc_dev, ADC_DEV_CHANNEL); if(ret == RT_EOK) { rt_kprintf(\"adc sample run success!find %s device!\\\\n\", ADC_DEV_NAME); } while(1) { /* 讀取采樣值 */ value = rt_adc_read(adc_dev, ADC_DEV_CHANNEL); rt_kprintf(\"the value is :%d \\\\n\", value); /* 轉(zhuǎn)換為對(duì)應(yīng)電壓值 */ vol = value * REFER_VOLTAGE / CONVERT_BITS; rt_kprintf(\"the voltage is :%d.%02d \\\\n\", vol / 100, vol % 100); rt_thread_delay(500); } } 7、在主函數(shù)里啟用任務(wù) Adc_thread = rt_thread_create(\"adc1\", Adc_entry, RT_NULL, 512, 16, 20); if(Adc_thread != RT_NULL) rt_thread_startup(Adc_thread); else return -1;
    發(fā)表于 02-17 16:00

    解決HPM6750EVK2jlink下載

    Device \"HPM6750XVMX\" selected. Connecting to target via JTAG TotalIRLen = 5, IRPrint = 0
    發(fā)表于 02-16 10:30

    Embedded Studio 編譯器教程

    最近入手先輯的HPM6750,需要使用Embedded Studio 編譯器來(lái)做開發(fā),各位推薦一下學(xué)習(xí)資料。
    發(fā)表于 02-04 08:01

    【先楫HPM5361EVK開發(fā)板試用體驗(yàn)】HPM5361程序下載

    ); 3)、在系統(tǒng)編程模式(UART0/USB0-HID/XPI0/OTP); 其啟動(dòng)流程如下圖所示。 2、HPM5361
    發(fā)表于 12-21 14:59

    Linux 下編譯HPM_Math 工程報(bào)錯(cuò)

    /hpm/hpm_sdk/soc/HPM6750/toolchains/gcc/flash_xip.ld -- Segger device name: HPM6750xVMx -- S
    發(fā)表于 12-20 12:54

    【先楫HPM5361EVK開發(fā)板試用體驗(yàn)】02-HPM5361程序下載

    ); 3)、在系統(tǒng)編程模式(UART0/USB0-HID/XPI0/OTP); 其啟動(dòng)流程如下圖所示。 2、HPM5361
    發(fā)表于 12-07 14:39

    RT_thread studio中如何配置先輯的hpm_math數(shù)學(xué)庫(kù)?

    hpm6750不知道如何在RTThread studio中使用hpm_math中的數(shù)學(xué)庫(kù),想要使用libdspf.a,但是不知道如何配置
    發(fā)表于 12-06 18:32

    淺談HPM5300的端口驅(qū)動(dòng)安裝

    淺談HPM5300的端口驅(qū)動(dòng)安裝
    的頭像 發(fā)表于 11-30 20:05 ?476次閱讀
    淺談<b class='flag-5'>HPM</b>5300的<b class='flag-5'>端口</b>驅(qū)動(dòng)安裝

    【先楫HPM5361EVK開發(fā)板試用體驗(yàn)】-- HPM5361初體驗(yàn)

    cortex-m7級(jí)別的芯片國(guó)產(chǎn)一直有傳說未見身影,奈何只能接受國(guó)外品牌漫長(zhǎng)的交期和一次次的漲價(jià)。 有幸大概在2022年意外接觸到了先楫半導(dǎo)體的HPM6750,看到了價(jià)格和性能(高主頻,高DMIPS)著實(shí)
    發(fā)表于 11-29 11:26

    【深度測(cè)評(píng)】HPM6750 MCU片內(nèi)16位ADC精度測(cè)試

    【深度測(cè)評(píng)】HPM6750 MCU片內(nèi)16位ADC精度測(cè)試
    的頭像 發(fā)表于 10-30 17:43 ?2460次閱讀
    【深度測(cè)評(píng)】<b class='flag-5'>HPM6750</b> MCU片內(nèi)16位ADC精度測(cè)試

    想找一個(gè)先楫半導(dǎo)體的HPM6750 使用linux剪裁操作系統(tǒng)的例程

    想找一個(gè)先楫半導(dǎo)體的HPM6750 使用linux剪裁操作系統(tǒng)的例程,SDK里給了FREERT的,沒有LINUX的。哪里可以下載的到?
    發(fā)表于 10-25 16:18

    HPM6750XPI0 CB端口啟動(dòng)步驟

    引出 XPI0 CA 端口的引腳,如下圖所示。所以最后選擇了 XPI0CB 端口用于連接 NOR Flash。
    的頭像 發(fā)表于 10-20 14:42 ?867次閱讀
    <b class='flag-5'>HPM6750</b><b class='flag-5'>從</b><b class='flag-5'>XPI0</b> <b class='flag-5'>CB</b><b class='flag-5'>端口</b><b class='flag-5'>啟動(dòng)</b>步驟

    HPM6750IVM2的xpi模式更改為標(biāo)準(zhǔn)spi模式

    現(xiàn)在板上Flash使用的是標(biāo)準(zhǔn)spi模式,xpi_DQ3腳沒有接到Flash上,所以燒錄不了程序,現(xiàn)在需要將6750xpi模式配置為標(biāo)準(zhǔn)spi,想請(qǐng)教一下各位大佬
    發(fā)表于 10-12 14:46