
北京谈球吧论坛科技有限公司
谘詢熱線:010-82488292
公司電話:010-82488292
公司傳真:010-82611646
企業郵箱:sales@changyinwuye.com
地址:北京市海澱區中關村大街19號 新中關大廈B座南翼15層1507室
TQI.MX6Q係列_新版BSP之u-boot移植
摘要 : 為了提高移植效率,還是考慮移植Freescale維護的3.10版本的內核。Freescale維護的3.10的內核是使用git管理的,但是直接使用git下載代碼會比較慢,下麵是我下載好的uboot和kernel: I.MX6Q BSP源碼(Freescale官方維護)
為了提高移植效率,還是考慮移植Freescale維護的3.10版本的內核。
源碼獲取
Freescale維護的3.10的內核是使用git管理的,但是直接使用git下載代碼會比較慢,下麵是我下載好的uboot和kernel:
I.MX6Q BSP源碼(Freescale官方維護)
代碼下載好後,先將u-boot解壓到工作目錄,然後在終端下切換到uboot根目錄。由於這個版本的bsp是使用git管理的,因此,需要切換到指定分支。執行指令:
git branch -a
可以查看freescale維護的uboot的各個分支,我們checkout的分支是“remotes/origin/imx_v2013.04_3.10.17_1.0.0_ga”,執行指令:
git checkout -b tqimx6q imx_v2013.04_3.10.17_1.0.0_ga
這樣,就在本地創建的分支tqimx6q並將遠程分支imx_v2013.04_3.10.17_1.0.0_ga上的代碼checkout到這個本地分支。我們之後的修改在tqimx6q分支進行即可。
U-Boot移植
新版U-Boot移植也不麻煩,主要是freescale給出了詳細的官方手冊"i.MX 6 BSP Porting Guide",具體的移植步驟如下:
Step1. 創建board目錄。由於imx6q的很多代碼是共通的,跟之前的移植一樣,可以參考mx6qsabresd進行的,執行指令:
cp board/freescale/mx6qsabresd/ board/freescale/mx6q_tqimx6q -r
Step2. 修改board相關文件的名稱:
cp board/freescale/mx6q_tqimx6q/mx6qsabresd.c board/freescale/mx6q_tqimx6q/mx6q_tqimx6q.c
Step3. 修改Makefile中的文件名。打開board/freescale/Makefile,將mx6qsabresd替換為mx6q_tqimx6q.c。
Step4. 創建board配置文件。同樣參考mx6qsabresd,執行如下指令:
cp include/configs/mx6qsabresd.h include/configs/mx6q_tqimx6q.h
Step5. 添加編譯選項。打開文件boards.cfg,找到配置項"mx6qsabresd"(如果沒有改動的話,在277行),複製該行配置並添加在下麵,然後修改為如下內容:
mx6q_tqimx6q ARM armv7 mx6q_tqimx6q freescale mx6
mx6qsabresd:IMX_CONFIG=board/freescale/mx6q_tqimx6q/mx6q_tqimx6q_ddr.cfg,MX6Q,DEFAULT_FDT_FILE="imx6q-tqimx6q.dtb",DDR_MB=1024,SYS_USE_SPINOR
Step6. 定製DDR配置。其實DDR相關的參數在之前的移植文章中已經有了。
cp board/freescale/imx/ddr/mx6q_4x_mt41j128.cfg board/freescale/mx6q_tqimx6q/mx6q_tqimx6q_ddr.cfg
然後修改文件mx6q_tqimx6q_ddr.cfg,修改後的文件內容如下:
//pan.baidu.com/s/1nt5ji0h
Step7. 定製board端子。其實有影響的端子在移植老版的uboot時已經知道,因此修改起來也是比較容易。
(1) 修改串口端子。具體修改內容如下:
iomux_v3_cfg_t const uart1_pads[] = {
// MX6_PAD_CSI0_DAT10__UART1_TXD | MUX_PAD_CTRL(UART_PAD_CTRL),
MX6_PAD_SD3_DAT7__UART1_TXD | MUX_PAD_CTRL(UART_PAD_CTRL),
// MX6_PAD_CSI0_DAT11__UART1_RXD | MUX_PAD_CTRL(UART_PAD_CTRL),
MX6_PAD_SD3_DAT6__UART1_RXD | MUX_PAD_CTRL(UART_PAD_CTRL),
};
(2) 修改SD卡端子。具體修改如下:
iomux_v3_cfg_t const usdhc2_pads[] = {
MX6_PAD_SD2_CLK__USDHC2_CLK | MUX_PAD_CTRL(USDHC_PAD_CTRL),
MX6_PAD_SD2_CMD__USDHC2_CMD | MUX_PAD_CTRL(USDHC_PAD_CTRL),
MX6_PAD_SD2_DAT0__USDHC2_DAT0 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
MX6_PAD_SD2_DAT1__USDHC2_DAT1 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
MX6_PAD_SD2_DAT2__USDHC2_DAT2 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
MX6_PAD_SD2_DAT3__USDHC2_DAT3 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
// MX6_PAD_NANDF_D4__USDHC2_DAT4 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
// MX6_PAD_NANDF_D5__USDHC2_DAT5 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
// MX6_PAD_NANDF_D6__USDHC2_DAT6 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
// MX6_PAD_NANDF_D7__USDHC2_DAT7 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
// MX6_PAD_NANDF_D2__GPIO_2_2 | MUX_PAD_CTRL(NO_PAD_CTRL), /* CD */
};
iomux_v3_cfg_t const usdhc3_pads[] = {
MX6_PAD_SD3_CLK__USDHC3_CLK | MUX_PAD_CTRL(USDHC_PAD_CTRL),
MX6_PAD_SD3_CMD__USDHC3_CMD | MUX_PAD_CTRL(USDHC_PAD_CTRL),
MX6_PAD_SD3_DAT0__USDHC3_DAT0 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
MX6_PAD_SD3_DAT1__USDHC3_DAT1 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
MX6_PAD_SD3_DAT2__USDHC3_DAT2 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
MX6_PAD_SD3_DAT3__USDHC3_DAT3 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
MX6_PAD_SD3_DAT4__USDHC3_DAT4 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
MX6_PAD_SD3_DAT5__USDHC3_DAT5 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
// MX6_PAD_SD3_DAT6__USDHC3_DAT6 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
// MX6_PAD_SD3_DAT7__USDHC3_DAT7 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
MX6_PAD_NANDF_D0__GPIO_2_0 | MUX_PAD_CTRL(NO_PAD_CTRL), /* CD */
};
定製cd(card detect)端子,否則uboot將檢測不到SD卡插入。打開board/freescale/mx6q_tqimx6q/mx6q_tqimx6q.c修改USDHC2_CD_GPIO:
#define USDHC2_CD_GPIO IMX_GPIO_NR(1, 4)
Step8. 編譯uboot。執行如下指令:
export ARCH=arm
export CROSS_COMPILE=arm-linux-gnueabi-
make mx6q_tqimx6q
其中,CROSS_COMPILE是交叉編譯工具鏈的前綴,根據自己的實際情況修改。如果前麵的步驟操作正確,uboot就可以順利編譯通過了。
燒寫啟動
經過前麵的移植工作,uboot已經可以正常運行在tqimx6q開發板上了。這個版本的uboot與之前版本的uboot編譯出的目標文件不同,具體的燒寫指令如下:
sudo dd if=u-boot.imx of=/dev/sdb bs=512 seek=2
啟動Log如下:
U-Boot 2013.04-04987-g98fdbdc-dirty (May 01 2015 - 23:15:34)
CPU: Freescale i.MX6Q rev1.2 at 792 MHz
CPU: Temperature 24 C, calibration data: 0x54e4bb69
Reset cause: POR
Board: MX6Q/SDL-SabreSD
I2C: ready
DRAM: 1 GiB
MMC: FSL_SDHC: 0, FSL_SDHC: 1, FSL_SDHC: 2
MMC: no card present
MMC init failed
Using default environment
No panel detected: default to Hannstar-XGA
Display: Hannstar-XGA (1024x768)
In: serial
Out: serial
Err: serial
MMC: no card present
mmc0(part 0) is current device
Net: Phy not found
PHY reset timed out
FEC [PRIME]
Warning: failed to set MAC address
Normal Boot
Hit any key to stop autoboot: 0
MMC: no card present
mmc0(part 0) is current device
MMC: no card present
Booting from net ...
*** ERROR: `ethaddr‘ not set
*** ERROR: `ethaddr‘ not set
Wrong Image Format for bootm command
ERROR: can‘t get kernel image!
U-Boot >
總結
經過上文介紹的移植,u-boot已經可以正常啟動了。其實,這個版本的uboot移植與之前版本的uboot移植沒有太大區別,思路差不多。有什麽問題可以留言。
上一篇:i.MX6Q開發板資料目錄1970-01-01
下一篇:基於TI AM335X電力智能抄表方案1970-01-01
文章推薦
- RK3288底板+核心板設計過程
- RK3288廣告機硬件和軟件調試心得
- 一款基於TI Sitara Cortex-A8 AM3358的嵌入式單板機
- BeagleBone產品采用了谈球吧论坛儀器推出的Sitara AM335x Cortex A8 ARM處理器
- 一個帶有HDMI視頻輸入的VS-RK3288方案
- 瑞芯微vs-rk3288方案定製androids 開發板
- RK3288在人臉識別上的應用及外接雙路攝像頭
- 谈球吧论坛儀器(TI)工業以太網解決方案
- AM335x ARM Cortex-A8處理器-TI DLP 3D打印機總體解決方案
- 瑞星微RK3288方案設計
- i.MX6Q Cortex-A9新一代智能平台
- i.MX6Q車載全觸控智能管理終端解決方案
- AM谈球吧平台正规吗嵌入式充電樁計費控製單元主板方案
- 大聯大控股世平推出 TI 、NXP 多領域應用人機交互平台
- 強化物聯網“心髒”,智能網關設計詳解
- TI AM437x係列處理器為核心的嵌入式開發板Rico Board
- 如何用BB Black製作DAC係統
- 采用AM3352工控核心板進行免疫熒光檢測儀解決方案
- 人機交互與TI Sitara處理器的產品性能介紹
- Rockchip RK3399 eMMc 的 DTS 配置說明
我要評論: | |
*內 容: |
|
驗證碼: |
|
共有0條評論