日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ARM(IMX6U)裸机之I.MX6ULL硬件启动方式的选择

發布時間:2023/12/10 编程问答 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ARM(IMX6U)裸机之I.MX6ULL硬件启动方式的选择 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

參考:Linux之ARM(IMX6U)裸機之I.MX6ULL啟動方式詳解
作者:一只青木呀
發布時間: 2020-08-09 16:32:07
網址:https://blog.csdn.net/weixin_45309916/article/details/107891591

目錄

  • 啟動方式的選擇
    • ①.串行下載模式
    • ②.內部BOOT模式
  • 啟動設備的選擇
    • 啟動設備的類型
    • 正點開發板啟動設備的底板原理圖(如何對應核心板)
    • 最終撥碼開關選擇啟動方式

啟動方式的選擇

BOOT 的處理過程是發生在 I.MX6U 芯片上電以后,芯片會根據 BOOT_MODE[1:0]的設置來選擇 BOOT 方式。 BOOT_MODE[1:0]的值是可以改變的,有兩種方式:

  • 一種是改寫 eFUSE(熔絲),修改 eFUSE 的方式只能修改一次,后面就不能再修改了,所以我們不使用。
  • 另一種是修改相應的 GPIO 高低電平,我們使用的是通過修改BOOT_MODE[1:0]對應的 GPIO 高低電平來選擇啟動方式,所有的開發板都使用的這種方式。

I.MX6U 有一個 BOOT_MODE1 引腳和BOOT_MODE0 引腳,這兩個引腳對應這 BOOT_MODE[1:0]。 I.MX6U-ALPHA 開發板的這兩個引腳原理圖如圖:


其中 BOOT_MODE1 和 BOOT_MODE0 在芯片內部是有 100KΩ下拉電阻的,所以默認是0。 BOOT_MODE1 和 BOOT_MODE0 這兩個引腳我們接到了底板的撥碼開關上,這樣我們就可以通過撥碼開關來控制 BOOT_MODE1 和 BOOT_MODE0 的高低電平。

以 BOOT_MODE1為例,當我們把 BOOT_CFG 的第一個開關撥到“ON”的時候,就相當于 BOOT_MODE1 引腳通過 R88 這個 10K 電阻接到了 3.3V 電源,芯片內部的 BOOT_MODE1 又是 100K 下拉電阻接地,因此此時 BOOT_MODE1 的電壓就是 100/(10+100)*3.3V= 3V,這是個高電平, 因此BOOT_CFG 的中的 8 個開關撥到“ON”就是高電平,撥到“OFF”就是低電平。

而 I.MX6U 有四個 BOOT 模式,這四個 BOOT 模式由 BOOT_MODE[1:0]來控制,也就是BOOT_MODE1 和 BOOT_MODE0 這兩 IO, BOOT 模式配置如表所示:

BOOT_MODE[1:0]BOOT類型
00從 FUSE 啟動
01串行下載
10內部 BOOT 模式
11保留(無效)

①.串行下載模式

當 BOOT_MODE1 為 0, BOOT_MODE0 為 1 的時候此模式使能。串行下載的意思就是可以通過 USB 或者 UART 將代碼下載到板子上的外置存儲設備中,我們可以使用 OTG1 這個 USB口向開發板上的 SD/EMMC、 NAND 等存儲設備下載代碼。我們需要將 BOOT_MODE1 撥到“OFF”,將 BOOT_MODE0 撥到“ON”。這個下載是需要用到 NXP 提供的一個軟件,一般用來最終量產的時候將代碼燒寫到外置存儲設備中的?!咀约豪斫?#xff1a;下面的BOOT方式更加智能,只需選擇好啟動設備后會執行內部的BOOT ROM代碼,幫我們初始化硬件等操作。這里的串行方式要我們自己去寫初始化時鐘、中斷向量表等。后面講主頻和中斷向量表的時候就是我們手動去一一實現的】

②.內部BOOT模式

當 BOOT_MODE1 為 1, BOOT_MODE0 為 0 的時候此模式使能。在此模式下,芯片會執行內部的 boot ROM 代碼,這段 boot ROM 代碼會進行硬件初始化(一部分外設),然后從 boot 設備(就是存放代碼的設備、比如 SD/EMMC、 NAND)中將代碼拷貝出來復制到指定的 RAM 中,一般是 DDR。

啟動設備的選擇

前提是設置MODE1和MODE0是從內部BOOT啟動的,也就是MODE1=1,MODE0=0時才要選擇啟動設備。

啟動設備的類型

當 BOOT_MODE 設置為內部 BOOT 模式以后,可以從以下設備中啟動:

  • ①、接到 EIM 接口的 CS0 (片選0)上的 16 位 NOR Flash。
  • ②、接到 EIM 接口的 CS0 (片選0)上的 OneNAND Flash。
  • ③、接到 GPMI 接口上的 MLC/SLC NAND Flash, NAND Flash 頁大小支持 2KByte、 4KByte和 8KByte, 8 位寬。
  • ④、 Quad SPI Flash
  • ⑤、接到 USDHC 接口上的 SD/MMC/eSD/SDXC/EMMC 等設備。
  • ⑥、 SPI 接口的 EEPROM。

正點開發板啟動設備的底板原理圖(如何對應核心板)

這些啟動設備如何選擇呢?通過BOOT_CFG選擇

I.MX6U 同樣提供了 eFUSE 和 GPIO 配置兩種, eFUSE 就不講解了。我們重點看如何通過 GPIO 來選擇啟動設備,因為所有的 I.MX6U 開發板都是通過 GPIO來配置啟動設備的。

正如啟動模式由BOOT_MODE[1:0]來選擇一樣,啟動設備是通過 BOOT_CFG1[7:0]、 BOOT_CFG2[7:0]和 BOOT_CFG4[7:0] (每個8位)這 24 個配置 IO,這 24 個配置 IO 剛好對應著 LCD 的 24 根數據線 LCD_DATA0~LCDDATA23,當啟動完成以后這 24 個 IO 就可以作為 LCD 的數據線使用。這 24 根線和 BOOT_MODE1、 BOOT_MODE0 共同組成了 I.MX6U的啟動選擇引腳,如圖:

雖然有 24 個 IO,但是實際需要調整的只有那幾個 IO,其它的 IO 全部下拉接地即可,也就是設置為 0。打開 I.MX6U-ALPHA 開發板的核心板原理圖,這 24 個 IO 的默認設置如圖:

大部分的 IO 都接地了,只有幾個 IO 接高,尤其是 BOOT_CFG4[7:0]這 8 個 IO 都 10K 電阻下拉接地,所以我們壓根就不需要去關注 BOOT_CFG4[7:0]。我們需要重點關注的就只剩下了 BOOT_CFG2[7:0]和 BOOT_CFG1[7:0]這 16 個 IO。這 16 個配置 IO 含義在原理圖的左側已經貼出來了,如圖:

BOOT_CFG2全部接地,除了BOOT_CFG[3],此位用來選擇SD卡啟動接口(6ull不止插一個SD卡)。

打開正點原子 I.MX6U-ALPHA 開發板的底板原理圖,底板上啟動設備選擇撥碼開關原理圖如圖:

除 了 BOOT_MODE1 和 BOOT_MODE0 必 須 引 出 來 ,LCD_DATA3~LCDDATA7、 LCD_DATA11 這 6 個 IO 也被引出來了,可以通過撥碼開關來設置其對應的高低電平,撥碼開關撥到“ON”就是 1,撥到“OFF”就是 0。其中 LCD_DATA11 就是 BOOT_CFG2[3]LCD_DATA3~LCD_DATA7 就是 BOOT_CFG1[3]~BOOT_CFG1[7],這 6 個IO 的配置含義如表

BOOT_CFG1[0] ~ BOOT_CFG1[2]都是定死的,BOOT_CFG1[3] ~ BOOT_CFG1[7]是可以設置的。

最終撥碼開關選擇啟動方式

BOOT IO 含義, I.MX6U-ALPHA 開發板從 SD 卡、 EMMC、 NAND 啟動的時候撥碼開關各個位設置方式如表

總結

以上是生活随笔為你收集整理的ARM(IMX6U)裸机之I.MX6ULL硬件启动方式的选择的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。