1
背 景
在我的某個項目中由于希望把板子做的小一點,所以選擇了 BGA196 封裝的 HPM6750IAN2 芯片,在畫板子的過程中,注意到相比 BGA289 封裝的 HPM6750IVM2 芯片,其并沒有引出 XPI0 CA 端口的引腳,如下圖所示。所以最后選擇了 XPI0 的 CB 端口用于連接 NOR Flash。
部分引腳復用功能(來源:HPM6750數(shù)據(jù)手冊)
XPI 部分原理圖
2
問 題
在 HPM6750EVKMINI 評估板中使用了 XPI0 CA 端口作為連接串行 NOR Flash 的引腳(芯片的默認配置),在芯片上電啟動的過程中,芯片內(nèi)部的 BootROM 會根據(jù) OTP 配置初始化 XPI 控制器,從 Flash 0x400 的地址讀取 XPI NOR 配置選項,并按照讀取的配置選項將 XPI 配置為指定的工作模式,然后重新檢測 Flash 是否存在,從 Flash 中加載鏡像完成剩余啟動步驟。
因此為了實現(xiàn)從 XPI0 CB 端口啟動,我們需要修改 OTP 中的對應字段和啟動鏡像中的 XPI NOR 配置選項。
3
OTP 燒寫
通過查閱 HPM6750 的參考手冊,發(fā)現(xiàn)控制 BootROM 啟動時指定 Flash 連接方式的為以下幾個字段:
因此在本例中,需要僅需修改 XPI_PORT_SEL 字段為 1,讓 BootROM 從 CB_CS0 端口啟動即可。
將 BOOT 撥碼開關調(diào)至 BOOT_MODE[1:0]=0b10,以 ISP 模式啟動,將 USB0 連接至 PC,然后打開 HPMicro 量產(chǎn)工具,選擇對應的 USB 設備點擊 連接,連接成功后如下圖所示。
注意:
OTP 操作需謹慎!!!
OTP 操作需謹慎!!!
OTP 操作需謹慎!!!
在 OTP 操作 ??中,點擊 刷新 讀取當前芯?中 OTP 的數(shù)據(jù),看到 Word 24 的值為0x00000000 ,也就是從 XPI0 CA 端?的第?組引腳啟動。
切換至 寫視圖,點擊 添加 Words,在彈出的對話框中按照下圖輸入,即:將 Word 24 的 bit 6 置 1,從 CB_CS0 端口啟動。點擊確定后,再次確認數(shù)據(jù)是否有誤,確認無誤后點擊 寫入。
寫入完成后切換回 寫視圖,點擊 刷新,可以看到 Word 24 已經(jīng)變?yōu)槠谕怠?/p>
將撥碼開關撥回 XPI NOR 啟動后復位芯片,可使用邏輯分析儀觀察 XPI0_CB_SCLK 引腳在上電時的電平,如可以觀察到對應的時鐘信號,證明 OTP 設置已經(jīng)生效。
4
修改 XPI NOR 配置選項
在 BootROM 檢測到 Flash 后,會從 0x400 讀取 XPI NOR 配置選項重新配置 XPI,為了確保 XPI 重新配置后仍能檢測到 Flash,需要對默認配置進行修改。根據(jù)參考手冊,配置選項的定義如下:
當我們使用 CMake 配置項目,并設置 CMAKE_BUILD_TYPE為 flash_xip 時,生成的 SES(Segger Embedded Studio)工程會使用 flash_xip.icf 鏈接腳本,以將各個 section 鏈接至 Flash 中。可以在如下菜單中打開鏈接腳本。
在 flash_xip.icf中,可以看到在 XPI0 的基地址偏移 0x400 處定義了存放 NOR_CFG_OPTION 的區(qū)域,對應的 section 為 .nor_cfg_option。
使用快捷鍵 Ctrl+Shift+F 全局搜索 .nor_cfg_option,可以在 board.c 中找到對應的配置選項。
為了避免修改 SDK 中的文件,我選擇在項目文件夾下新建一個 board文件夾,并復制 hpm6750evkmini 的板級文件,重新命名為 myboard,此時項目結(jié)構(gòu)如下:
├── 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 被添加到項目中。
同樣的,在 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,同時為了確保后續(xù) Flash 能切換至四線模式(Quad SPI),還需要根據(jù)使用的 Flash 設置 Quad Enable Sequence,借助 BootROM 將 Flash 的 QE 標志位置位。這里我使用的是 GD25Q40C 系列 Flash,查閱 datasheet 可知 QE 位于 Status Register 2 的 bit1,因此這里我選擇 At bit1 in Status Register2。由于 QE 是 非易失 的,掉電后數(shù)據(jù)不會丟失,因此我們僅需在燒錄時設置一次,在 XPI NOR 配置選項中可以不用設置 Quad Enable Sequence 字段。
Status Register 中的 QE 位
選擇編譯生成的.bin 文件后,程序會自動設置燒寫地址,隨后點擊燒錄。燒錄成功后恢復啟動模式撥碼開關,然后復位芯片,正常情況下程序就會運行了。
-
芯片
+關注
關注
450文章
49636瀏覽量
417195 -
控制器
+關注
關注
112文章
15886瀏覽量
175386 -
評估板
+關注
關注
1文章
478瀏覽量
29162
發(fā)布評論請先 登錄
相關推薦
評論