1背 景
在我的某個(gè)項(xiàng)目中由于希望把板子做的小一點(diǎn),所以選擇了 BGA196 封裝的 HPM6750IAN2 芯片,在畫板子的過程中,注意到相比 BGA289 封裝的 HPM6750IVM2 芯片,其并沒有引出 XPI0 CA 端口的引腳,如下圖所示。所以最后選擇了 XPI0 的 CB 端口用于連接 NOR Flash。
部分引腳復(fù)用功能(來源:HPM6750數(shù)據(jù)手冊(cè))
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)步驟。
因此為了實(shí)現(xiàn)從 XPI0 CB 端口啟動(dòng),我們需要修改 OTP 中的對(duì)應(yīng)字段和啟動(dòng)鏡像中的 XPI NOR 配置選項(xiàng)。
3OTP 燒寫
通過查閱 HPM6750 的參考手冊(cè),發(fā)現(xiàn)控制 BootROM 啟動(dòng)時(shí)指定 Flash 連接方式的為以下幾個(gè)字段:
因此在本例中,需要僅需修改 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)擊 連接,連接成功后如下圖所示。
注意:
OTP 操作需謹(jǐn)慎!!!
OTP 操作需謹(jǐn)慎!!!
OTP 操作需謹(jǐn)慎!!!
在 OTP 操作 ??中,點(diǎn)擊 刷新 讀取當(dāng)前芯?中 OTP 的數(shù)據(jù),看到 Word 24 的值為0x00000000 ,也就是從 XPI0 CA 端?的第?組引腳啟動(dòng)。
切換至 寫視圖,點(diǎn)擊 添加 Words,在彈出的對(duì)話框中按照下圖輸入,即:將 Word 24 的 bit 6 置 1,從 CB_CS0 端口啟動(dòng)。點(diǎn)擊確定后,再次確認(rèn)數(shù)據(jù)是否有誤,確認(rèn)無誤后點(diǎn)擊 寫入。
寫入完成后切換回 寫視圖,點(diǎn)擊 刷新,可以看到 Word 24 已經(jīng)變?yōu)槠谕怠?/p>
將撥碼開關(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)的定義如下:
當(dāng)我們使用 CMake 配置項(xiàng)目,并設(shè)置 CMAKE_BUILD_TYPE為 flash_xip 時(shí),生成的 SES(Segger Embedded Studio)工程會(huì)使用 flash_xip.icf 鏈接腳本,以將各個(gè) section 鏈接至 Flash 中。可以在如下菜單中打開鏈接腳本。
在 flash_xip.icf中,可以看到在 XPI0 的基地址偏移 0x400 處定義了存放 NOR_CFG_OPTION 的區(qū)域,對(duì)應(yīng)的 section 為 .nor_cfg_option。
使用快捷鍵 Ctrl+Shift+F 全局搜索 .nor_cfg_option,可以在 board.c 中找到對(duì)應(yīng)的配置選項(xiàng)。
為了避免修改 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)目中。
同樣的,在 XPI 配置選項(xiàng)中也要使用 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};
修改完成后重新進(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 字段。
Status Register 中的 QE 位
選擇編譯生成的.bin 文件后,程序會(huì)自動(dòng)設(shè)置燒寫地址,隨后點(diǎn)擊燒錄。燒錄成功后恢復(fù)啟動(dòng)模式撥碼開關(guān),然后復(fù)位芯片,正常情況下程序就會(huì)運(yùn)行了。
審核編輯:湯梓紅
-
芯片
+關(guān)注
關(guān)注
456文章
50936瀏覽量
424666 -
FlaSh
+關(guān)注
關(guān)注
10文章
1638瀏覽量
148181 -
封裝
+關(guān)注
關(guān)注
127文章
7941瀏覽量
143092 -
端口
+關(guān)注
關(guān)注
4文章
978瀏覽量
32102
原文標(biāo)題:開發(fā)者分享|HPM6750 從 XPI0 CB 端口啟動(dòng)
文章出處:【微信號(hào):HPMicro,微信公眾號(hào):先楫半導(dǎo)體HPMicro】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論