1. 程式人生 > >基於IMX6Q的u-boot-2017.11的移植(1)->初步移植

基於IMX6Q的u-boot-2017.11的移植(1)->初步移植

1.下載u-boot
2.tar -xjvf u-boot-2017.11.tar.bz2
3.cd cd u-boot-2017.11/
4.進入到配置資料夾cd configs/
5.ls mx6q*
    mx6qarm2_defconfig  mx6qarm2_lpddr2_defconfig  mx6qsabrelite_defconfig
經過對這幾個配置檔案的檢視,我最終選擇的mx6qarm2_defconfig進行移植修改
6.回到uboot的根目錄cd ..
7.vim Makefile
    VERSION = 2017
    PATCHLEVEL = 11
    SUBLEVEL =
    EXTRAVERSION =
    NAME =
    #add by xcl
    ARCH=arm
    CROSS_COMPILE=arm-linux-gnueabihf-

8.make mx6qarm2_defconfig
9.make 
10.將編譯生成的映象u-boot.imx燒寫到sd卡,插入sd卡到電腦執行:sudo dd if=u-boot.imx of=/dev/sdb bs=512 seek=2
注意:這兒的/dev/sdb可能在你的電腦不同,請通過插拔sd卡進行確認
11.修改DCD對記憶體進行配置:vim ./board/freescale/mx6qarm2/imximage.cfg
    /*
     * Copyright (C) 2011-2014 Freescale Semiconductor, Inc.
     * Jason Liu <
[email protected]
> * * SPDX-License-Identifier: GPL-2.0+ * * Refer doc/README.imximage for more details about how-to configure * and create imximage boot image * * The syntax is taken as close as possible with the kwbimage */ /* image version */ IMAGE_VERSION 2 /* * Boot Device : one of * spi, sd (the board has no nand neither onenand) */ BOOT_FROM sd /* * Device Configuration Data (DCD) * * Each entry must have the format: * Addr-type Address Value * * where: * Addr-type register length (1,2 or 4 bytes) * Address absolute address of the register * value value to be stored in the register */ /* DCD */ DATA 4, 0x020e0798, 0x000C0000 DATA 4, 0x020e0758, 0x00000000 DATA 4, 0x020e0588, 0x00000030 DATA 4, 0x020e0594, 0x00000030 DATA 4, 0x020e056c, 0x00000030 DATA 4, 0x020e0578, 0x00000030 DATA 4, 0x020e074c, 0x00000030 DATA 4, 0x020e057c, 0x00000030 DATA 4, 0x020e058c, 0x00000000 DATA 4, 0x020e059c, 0x00000030 DATA 4, 0x020e05a0, 0x00000030 DATA 4, 0x020e078c, 0x00000030 DATA 4, 0x020e0750, 0x00020000 DATA 4, 0x020e05a8, 0x00000018 DATA 4, 0x020e05b0, 0x00000018 DATA 4, 0x020e0524, 0x00000018 DATA 4, 0x020e051c, 0x00000018 DATA 4, 0x020e0518, 0x00000018 DATA 4, 0x020e050c, 0x00000018 DATA 4, 0x020e05b8, 0x00000018 DATA 4, 0x020e05c0, 0x00000018 DATA 4, 0x020e0774, 0x00020000 DATA 4, 0x020e0784, 0x00000018 DATA 4, 0x020e0788, 0x00000018 DATA 4, 0x020e0794, 0x00000018 DATA 4, 0x020e079c, 0x00000018 DATA 4, 0x020e07a0, 0x00000018 DATA 4, 0x020e07a4, 0x00000018 DATA 4, 0x020e07a8, 0x00000018 DATA 4, 0x020e0748, 0x00000018 DATA 4, 0x020e05ac, 0x00000018 DATA 4, 0x020e05b4, 0x00000018 DATA 4, 0x020e0528, 0x00000018 DATA 4, 0x020e0520, 0x00000018 DATA 4, 0x020e0514, 0x00000018 DATA 4, 0x020e0510, 0x00000018 DATA 4, 0x020e05bc, 0x00000018 DATA 4, 0x020e05c4, 0x00000018 DATA 4, 0x021b0800, 0xa1390003 DATA 4, 0x021b080c, 0x001F001F DATA 4, 0x021b0810, 0x001F001F DATA 4, 0x021b480c, 0x001F001F DATA 4, 0x021b4810, 0x001F001F DATA 4, 0x021b083c, 0x43180330 DATA 4, 0x021b0840, 0x03180310 DATA 4, 0x021b483c, 0x43200330 DATA 4, 0x021b4840, 0x0320025C DATA 4, 0x021b0848, 0x40363838 DATA 4, 0x021b4848, 0x38362E3C DATA 4, 0x021b0850, 0x3E3C4840 DATA 4, 0x021b4850, 0x44364640 DATA 4, 0x021b081c, 0x33333333 DATA 4, 0x021b0820, 0x33333333 DATA 4, 0x021b0824, 0x33333333 DATA 4, 0x021b0828, 0x33333333 DATA 4, 0x021b481c, 0x33333333 DATA 4, 0x021b4820, 0x33333333 DATA 4, 0x021b4824, 0x33333333 DATA 4, 0x021b4828, 0x33333333 DATA 4, 0x021b08b8, 0x00000800 DATA 4, 0x021b48b8, 0x00000800 DATA 4, 0x021b0004, 0x00020036 DATA 4, 0x021b0008, 0x09444040 DATA 4, 0x021b000c, 0x8A8F7955 DATA 4, 0x021b0010, 0xFF328F64 DATA 4, 0x021b0014, 0x01FF00DB DATA 4, 0x021b0018, 0x00001740 DATA 4, 0x021b001c, 0x00008000 DATA 4, 0x021b002c, 0x000026D2 DATA 4, 0x021b0030, 0x008F1023 DATA 4, 0x021b0040, 0x00000047 DATA 4, 0x021b0000, 0x841A0000 DATA 4, 0x021b001c, 0x04088032 DATA 4, 0x021b001c, 0x00008033 DATA 4, 0x021b001c, 0x00048031 DATA 4, 0x021b001c, 0x09408030 DATA 4, 0x021b001c, 0x04008040 DATA 4, 0x021b0020, 0x00005800 DATA 4, 0x021b0818, 0x00011117 DATA 4, 0x021b4818, 0x00011117 DATA 4, 0x021b0004, 0x00025576 DATA 4, 0x021b0404, 0x00011006 DATA 4, 0x021b001c, 0x00000000 /* set the default clock gate to save power */ DATA 4 0x020c4068 0x00C03F3F DATA 4 0x020c406c 0x0030FC03 DATA 4 0x020c4070 0x0FFFC000 DATA 4 0x020c4074 0x3FF00000 DATA 4 0x020c4078 0x00FFF300 DATA 4 0x020c407c 0x0F0000C3 DATA 4 0x020c4080 0x000003FF /* enable AXI cache for VDOA/VPU/IPU */ DATA 4 0x020e0010 0xF00000CF /* set IPU AXI-id0 Qos=0xf(bypass) AXI-id1 Qos=0x7 */ DATA 4 0x020e0018 0x007F007F DATA 4 0x020e001c 0x007F007F 進行編譯下載啟動,但是沒有輸出,繼續查詢修改...... 12.追蹤到./board/freescale/mx6qarm2/mx6qarm2.c static void setup_iomux_uart(void) { imx_iomux_v3_setup_multiple_pads(uart4_pads, ARRAY_SIZE(uart4_pads)); } iomux_v3_cfg_t const uart4_pads[] = { MX6_PAD_KEY_COL0__UART4_TX_DATA | MUX_PAD_CTRL(UART_PAD_CTRL), MX6_PAD_KEY_ROW0__UART4_RX_DATA | MUX_PAD_CTRL(UART_PAD_CTRL), };這兒配置的是串列埠4,我們需要串列埠1 修改為: static void setup_iomux_uart(void) { imx_iomux_v3_setup_multiple_pads(uart1_pads, ARRAY_SIZE(uart1_pads)); } iomux_v3_cfg_t const uart1_pads[] = { MX6_PAD_SD3_DAT6__UART1_RX_DATA | MUX_PAD_CTRL(UART_PAD_CTRL), MX6_PAD_SD3_DAT7__UART1_TX_DATA | MUX_PAD_CTRL(UART_PAD_CTRL), }; 13.vim include/configs/mx6qarm2.h 將#define CONFIG_MXC_UART_BASE UART4_BASE 修改為:#define CONFIG_MXC_UART_BASE UART1_BASE 14.下載到sd卡:sudo dd if=u-boot.imx of=/dev/sdb bs=512 seek=2 插入開發部從sd卡啟動串列埠輸出為: U-Boot 2017.11 (Jan 04 2018 - 20:45:47 +0800) CPU: Freescale i.MX6Q rev1.5 at 792 MHz Reset cause: POR Board: MX6Q-Armadillo2 DRAM: 2 GiB MMC: 15.除錯發現: ./board/freescale/mx6qarm2/mx6qarm2.c iomux_v3_cfg_t const usdhc3_pads[] = { MX6_PAD_SD3_CLK__SD3_CLK | MUX_PAD_CTRL(USDHC_PAD_CTRL), MX6_PAD_SD3_CMD__SD3_CMD | MUX_PAD_CTRL(USDHC_PAD_CTRL), MX6_PAD_SD3_DAT0__SD3_DATA0 | MUX_PAD_CTRL(USDHC_PAD_CTRL), MX6_PAD_SD3_DAT1__SD3_DATA1 | MUX_PAD_CTRL(USDHC_PAD_CTRL), MX6_PAD_SD3_DAT2__SD3_DATA2 | MUX_PAD_CTRL(USDHC_PAD_CTRL), MX6_PAD_SD3_DAT3__SD3_DATA3 | MUX_PAD_CTRL(USDHC_PAD_CTRL), MX6_PAD_SD3_DAT4__SD3_DATA4 | MUX_PAD_CTRL(USDHC_PAD_CTRL), MX6_PAD_SD3_DAT5__SD3_DATA5 | MUX_PAD_CTRL(USDHC_PAD_CTRL), MX6_PAD_SD3_DAT6__SD3_DATA6 | MUX_PAD_CTRL(USDHC_PAD_CTRL), MX6_PAD_SD3_DAT7__SD3_DATA7 | MUX_PAD_CTRL(USDHC_PAD_CTRL), MX6_PAD_NANDF_CS0__GPIO6_IO11 | MUX_PAD_CTRL(NO_PAD_CTRL), /* CD */ };在這兒我們使用的串列埠1引腳被重新配置了,所以不能輸出。 修改為: iomux_v3_cfg_t const usdhc3_pads[] = { MX6_PAD_SD3_CLK__SD3_CLK | MUX_PAD_CTRL(USDHC_PAD_CTRL), MX6_PAD_SD3_CMD__SD3_CMD | MUX_PAD_CTRL(USDHC_PAD_CTRL), MX6_PAD_SD3_DAT0__SD3_DATA0 | MUX_PAD_CTRL(USDHC_PAD_CTRL), MX6_PAD_SD3_DAT1__SD3_DATA1 | MUX_PAD_CTRL(USDHC_PAD_CTRL), MX6_PAD_SD3_DAT2__SD3_DATA2 | MUX_PAD_CTRL(USDHC_PAD_CTRL), MX6_PAD_SD3_DAT3__SD3_DATA3 | MUX_PAD_CTRL(USDHC_PAD_CTRL), MX6_PAD_SD3_DAT4__SD3_DATA4 | MUX_PAD_CTRL(USDHC_PAD_CTRL), MX6_PAD_SD3_DAT5__SD3_DATA5 | MUX_PAD_CTRL(USDHC_PAD_CTRL), /*MX6_PAD_SD3_DAT6__SD3_DATA6 | MUX_PAD_CTRL(USDHC_PAD_CTRL), MX6_PAD_SD3_DAT7__SD3_DATA7 | MUX_PAD_CTRL(USDHC_PAD_CTRL),*//*modefied by xcl*/ MX6_PAD_NANDF_CS0__GPIO6_IO11 | MUX_PAD_CTRL(NO_PAD_CTRL), /* CD */ }; 16.下載到開發板:sudo dd if=u-boot.imx of=/dev/sdb bs=512 seek=2 串列埠輸出為: U-Boot 2017.11 (Jan 04 2018 - 20:58:38 +0800) CPU: Freescale i.MX6Q rev1.5 at 792 MHz Reset cause: POR Board: MX6Q-Armadillo2 DRAM: 2 GiB MMC: FSL_SDHC: 0, FSL_SDHC: 1 MMC Device -1 not found *** Warning - No MMC card found, using default environment In: serial Out: serial Err: serial Net: FEC Error: FEC address not set. Hit any key to stop autoboot: 0 switch to partitions #0, OK mmc1(part 0) is current device switch to partitions #0, OK mmc1(part 0) is current device ** Unable to read file boot.scr ** reading zImage 8472784 bytes read in 405 ms (20 MiB/s) Booting from mmc ... ** Unable to read file imx6q-arm2.dtb ** Kernel image @ 0x12000000 [ 0x000000 - 0x8148d0 ] Starting kernel ... 說明:以前我用三星soc的時候的啟動的大概流程是,固化rom的程式碼只拷貝啟動裝置的前一段程式碼,然後我們需要在這段程式碼中進行記憶體初始化和剩餘uboot程式碼的拷貝,但是由於imx6的啟動方式所以程式碼拷貝的全部工作都被固化的程式做了,這個主要得益於ivt和dcd。


相關推薦

基於IMX6Q的u-boot-2017.11移植1->初步移植

1.下載u-boot 2.tar -xjvf u-boot-2017.11.tar.bz2 3.cd cd u-boot-2017.11/ 4.進入到配置資料夾cd configs/ 5.ls mx6q* mx6qarm2_defconfig mx6qarm2_l

u-boot-2014.10移植1

1 /*************************************************** 2 3 *u-boot版本 :u-boot-2014.10 4 5 *gcc版本 :/home/flinn/tools/4.4.3/bin/arm-none-linux-gn

基於FS4412嵌入式系統移植1 基本環境搭建

FS4412開發板是華清遠見培訓機構使用的嵌入式ARM開發板。FS4412採用的處理器使用Samsung最新的ARM Cortex-A9四核CPU的Exynos4412。三星公司的Galaxy S III手機便是搭載的這顆處理器,經過驗證,可以流暢執行android4.3系

根文件系統移植1——根文件系統介紹

根文件系統介紹一:什麽是根文件系統 (1)首先明白一點,我們的文件在硬盤上的存儲並非是連續存放的,而是零散的存放在硬盤中的某些空余扇區中的,這就導致了我們很難去查看我們存放的文件(因為人無法記住所有文件存放在哪些扇區,已經扇區的順序),這時就有了我們的文件系統,所以簡單來講,文件系統就是對一個存儲設備上

基於Tomcat的JSP 詳解1—— 概述

normal pad san borde orm ace text pin style 們使用。 一.為什麽使用JSP 下面基於Tomcat的JSP 詳解(1)—— 概述

lwip協議棧移植1

程序編寫 編程 進行 pop call 創建 nbsp err raw   lwip移植分為兩類:   1,只移植內核核心,用戶應用程序編寫只能基於raw/callback api進行   2,移植內核核心和上層API函數模塊,用戶可以使用所有三種API編程,即 raw/c

Spring boot集成Redis1—進行增加,更新,查詢,批量刪除等操作

緩存 獲取數據 prope XML ray end 序列 www pin 前言:最近工作中使用到了redis緩存,故分享一點自己總結的東西,這篇文章使用的是StringRedisTemplate進行學習,這裏值的說的是,(1)StringRedisTemplate在進行批量

熟練使用Lua面向物件:基於table的面向物件實現1

轉:https://www.cnblogs.com/yao2yaoblog/p/6433553.html c++和java語言機制中本身帶有面向物件的內容,而lua設計的思想是超程式設計,沒有面向物件的實現。 但是利用lua的元表(matetable)機制,可以實現面向物件。要講清楚怎樣

基於MT7688的OpenWrt學習筆記1——開發環境搭建

                                          &

基於同城同校的推薦--1

  import mysql.connector conn=mysql.connector.connect(host='',user='',password='',port='',database='') #遠端連線 cursor=conn.cursor() cursor.ex

週末記錄--2017.11.26補發

昨天樹狀陣列的專題結束了。最後也是沒AK,不過相比於上一個專題來說還是積極性上有些提高吧。 今天按照要求整理了一天的樹形dp,又把之前的題看了一遍想了一遍整理了一遍,有部落格到現在都沒法發……我也不知道為什麼……略崩潰。 通過今天的總結,又複習了一下樹形dp的知識,著重仔細

基於Redis實現分散式訊息佇列1

1、為什麼需要訊息佇列? 當系統中出現“生產“和“消費“的速度或穩定性等因素不一致的時候,就需要訊息佇列,作為抽象層,彌合雙方的差異。 舉個例子:業務系統觸發簡訊傳送申請,但簡訊傳送模組速度跟不上,需要將來不及處理的訊息暫存一下,緩衝壓力。 再舉個例子:調

基於FS4412嵌入式系統移植5 核心移植

這一節中我們進行核心的移植,在課上同樣是按照實驗手冊進行試驗,同樣不知道是為什麼要那麼做,所以這裡就不細講了。實驗手冊中有一些錯誤,我自己改過來上傳共同學們參考。實驗手冊修正版下載地址:FS4412系統移植實驗手冊-核心移植 實驗中使用的核心版本是3.14.0,因為我的上傳

基於Python的微信開發1:Hello World

需要安裝一個外掛,itchat。 pip install itchat 然後可以去“圖靈機器人”上註冊一個號,它具有自動回覆功能…… 圖靈機器人 新建一個機器人。 拿到APIkey以後,就可以

基於Ubuntu閘道器配置1-- NAT

NAT,全稱為Network Address Translation,意思是網路地址轉換,如果想讓所有的人都能夠在共有IP不足的情況下上網,就可以使用NAT功能。 一臺NAT主機一定要有兩個IP: 其中一個是和網際網路通訊的共有IP;另一個是與內部區域網通訊的私有IP。我們

linux-kernel-4.4 移植 1啟動

開發 app dts linaro present 設備 fst cmd 6.0 開發環境:win10 64位 + VMware12 + Ubuntu14.04 32位 工具鏈:linaro提供的gcc-linaro-6.1.1-2016.08-x86_64_arm-

linux4.10.8 內核移植---初步裁剪、分區修改和文件系統

如何 搜索 錯誤 命令 device 查看源碼 static .cn lock 一、初步裁剪   在內核根目錄下 執行: make menuconfig    1.1 system type裁剪      選擇 SAMSUNG S3C24XX SoCs Support 進

STL 小白學習1 初步認識

1 #include <iostream> 2 using namespace std; 3 #include <vector> //動態陣列 4 #include <algorithm>//演算法 5 6 void PrintVector(in

Exynos4412 Uboot 移植—— Uboot 移植過程

Uboot 版本:u-boot-2013.01 開發板:FS_4412 平臺(Exynos4412,可以根據自己的板子修改,只要是4412的過程都是一樣的) 一、建立自己的平臺 1、下載原始碼 我們可以在下面這個網站上下載最新的和以前任一版本的uboot ftp://ft

buildroot構建項目--- u-boot 2017.11 適配開發板修改 1

型號 mmu mman body 成功 -c 存儲器 介紹 我們   當前雖然編譯成功了,但是對於我們自己的目標板並不太適用。還得做一系列得修改。 一、lds 文件分析   u-boot 中最重要得鏈接文件即是,u-boot.lds。我們可以查看我們編譯出來得 u-boot