1. 程式人生 > >[IMX6Q]u-boot.bin和u-boot.imx的區別

[IMX6Q]u-boot.bin和u-boot.imx的區別

u-boot版本: v2015.04
branch: imx_v2015.04_3.14.52_1.1.0_ga

先說結論,它們的差別在於xxx.cfg檔案上,裡面主要儲存了ddr的配置資訊,供ROM讀取來初始化記憶體!

從編譯過程來了解

Makefile:

u-boot.imx: u-boot.bin $(IMX_CONFIG) FORCE
	$(call if_changed,mkimage)
IMX_CONFIG是什麼?
Makefile:
IMX_CONFIG = $(CONFIG_IMX_CONFIG:"%"=%).cfgtmp

$(IMX_CONFIG): %.cfgtmp: % FORCE
	$(Q)mkdir -p $(dir 
[email protected]
) $(call if_changed_dep,cpp_cfg)
CONFIG_IMX_CONFIG是什麼:
此值是在./configs/mx6qecovacsandroid_defconfig定義:(平臺不同,使用的xxx.cfg也不同)
CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/mx6qecovacs/mx6qecovacs.cfg,MX6Q,ANDROID_SUPPORT"
然後被編譯到了./include/config.h
./include/config.h:2:#define CONFIG_IMX_CONFIG	board/freescale/mx6qecovacs/mx6qecovacs.cfg
所以最終IMX_CONFIG的值是 mx6qecovacs.cfg.cfgtmp

如何被編譯到u-boot.imx中?看 $(call if_changed,mkimage) 做了什麼。
scripts/Kbuild.include:

# Execute command if command has changed or prerequisite(s) are updated.
#
if_changed = $(if $(strip $(any-prereq) $(arg-check)),                       \
	@set -e;                                                            \
	$(echo-cmd) $(cmd_$(1));                                             \
	printf '%s\n' '
[email protected]
:= $(make-cmd)' > $(dot-target).cmd)
也就是說只要當發現規則的依賴有被更新了、或者編譯該規則對應目標的命令列發生改變了,
它就先用$(echo-cmd) 回顯出新的命令$(cmd_$(1)),接著執行命令$(cmd_$(1)),
最後再將該命令寫到一個叫做$(dot-target).cmd 的臨時檔案中去,以方便下一次
檢查命令列是否有變的時候用。

本例mx6qecovacs.cfg.cfgtmp確實有更新了,所以會執行命令 cmd_$(1),也就是cmd_mkimage:
Makefile:
cmd_mkimage = $(objtree)/tools/mkimage $(MKIMAGEFLAGS_$(@F)) -d $< [email protected] \
    $(if $(KBUILD_VERBOSE:1=), >/dev/null)
從編譯的命令列其實也可以看到:
./tools/mkimage -n board/freescale/mx6qecovacs/mx6qecovacs.cfg.cfgtmp -T imximage -e 0x17800000 -d u-boot.bin u-boot.imx 


參考:
http://blog.chinaunix.net/uid-26675482-id-4408585.html

相關推薦

[IMX6Q]u-boot.binu-boot.imx區別

u-boot版本: v2015.04 branch: imx_v2015.04_3.14.52_1.1.0_ga 先說結論,它們的差別在於xxx.cfg檔案上,裡面主要儲存了ddr的配置資訊,供ROM讀取來初始化記憶體! 從編譯過程來了解Makefile: u-boot.

Spring boot(14) 監控spring boot的執行spring boot actuatorspring boot admin

如何更好的監控spring boot 的狀態?載入了哪些bean,有多少個執行緒在執行? 一,spring boot actuator 當然你得提前給瀏覽器比如chrome新增預覽json文字的外掛,這樣檢視起來才直觀。json預覽外掛請點選chrome的工具->更多工具->

spring-boot-devtools spring-boot-starter-actuator 或者spring-cloud-starter-bus-amqp 報錯

- @ConditionalOnEnabledHealthIndicator management.health.defaults.enabled is considered true (OnEnabledHealthIndicatorCondition) RefreshEndp

spring boot AOPspring boot統一異常處理

一,spring AOPspring boot使用AOP,程式碼如下,程式碼比較簡單就不細說了,直接上程式碼,可以使用AOP做日誌處理package com.qwrt.fire.sensor.aop; import com.alibaba.fastjson.JSONArra

makefile 修改後重新生成u-boot.bin 燒錄

1,修改Makefile2, make distclean3, make x210_sd_config4,make make後就會生成u-boot.bin 進入sd_fusing目錄下進行燒錄 1,make clean 清除 mkbl1

《轉》u-boot移植燒寫步驟、u-boot命令kernel燒寫步驟

轉自:《http://blog.sina.com.cn/s/blog_726c4bd20100unjn.html》 移植燒寫步驟 1. 解壓u-boot原始檔 2. 從u-boot/include/configs裡找相近的配置,複製成自已的名字 3. 改make

[IMX6Q]Android版本如何獲取u-boot原始碼

假設要獲取kk4.4.2_1.0.0-ga這個branch: $git clone git://git.freescale.com/imx/uboot-imx.git uboot-imx $cd u

U-boot各種配置 U-boot原始碼最為詳細的講解

今天開始移植三星原廠的U-boot,做一下筆記,以備日後所需  移植的時候有一點感想,就是最好別註釋掉不對的原始碼,定義的地方千萬別動,儘量修改呼叫的地方,這樣可以極大的避免出錯;此外加上自己程式碼的時候應該後面用特殊的註釋標註一下,這樣通過編輯器搜尋就很容易定位自己改過的地方 0. 取得原始碼 獲得原廠

通過git來下載管理linux原始碼u-boot原始碼

linux原始碼對應的相關瀏覽器地址: https://www.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git/ linux-stable版本的原始碼git下載地址: git://git.kernel

u-boot原理分析-------U-Boot原始碼結構

U-Boot頂層目錄說明:    目錄                特性                                    解釋說明    borad             開發板相關                         對應不同配置的電路

u-boot分析 二 (u-boot目錄結構)

u-boot分析 二 繼前一啟動篇,此博文目的: 學習u-boot的目錄結構,從code架構上對u-boot有一個整體的把握和了解。 一、學習u-boot,得問,什麼是u-boot? u-boot是一段開源的程式。 Universal Boot

制作U盤自動手動安裝的ISO文件

u盤 自動裝系統 在我們平時的工作中,偶爾需要裝個系統什麽的,一般會有通過網絡PEX安裝或者cobbler安裝的,但是萬一沒網呢?那這時候就需要一個U盤來拯救你啦。 首先我們說一下思路: (1)選擇一個文件夾,把本機上的光盤文件全部拷貝進去(註意別丟了隱藏文件喲) (2)用sys-config

基於kickstart實現網絡共享以及制作光盤U盤實現半自動安裝centos6系統

centos 一、使用kickstart實現網絡共享半自動化安裝。 ①在centos6上安裝system-config-kickstart、ftpd包。 ②使用system-config-kickstart命令,編輯裏面的內容,該文件生成ks.cfg文件。 修改完之後在File菜單中選擇Sa

【spring Boot】Spring中@Controller@RestController之間的區別

處理 public 不同 esp 舉例 rest control tro adding spring Boot入手的第一天,看到例子中的@RestController ............. 相同點:都是用來表示Spring某個類的是否可以接收HTTP請求 不同點:@C

020-Spring Boot 監控度量

三種 安裝 left pointer mysq 安裝插件 啟動項 埋點 audit 一、概述   通過配置使用actuator查看監控和度量信息 二、使用 2.1、建立web項目,增加pom <dependency>

Kafka 入門 Spring Boot 集成

serial 發布消息 package 文件中 res 技術分享 搜索 info part Kafka 入門和 Spring Boot 集成 標簽:博客 [TOC] 概述 kafka 是一個高性能的消息隊列,也是一個分布式流處理平臺(這裏的流指的是數據流)。由java 和

淺析Spring MVCSpring BOOT之間的簡化小秘密

solver 應用開發 b- 存在 cts frame 幫助 假設 導入jar 從Servlet技術到Spring和Spring MVC,開發Web應用變得越來越簡捷。但是Spring和Spring MVC的眾多配置有時卻讓人望而卻步,相信有過Spring MVC開發經驗的

spring mvcspring boot實現AOP

spring boot實現AOP 首先建立切面類需要@Aspect,@Component註解 然後建立@Pointcut確定什麼方法實現aop @Pointcut("execution(* com.air_baocl.controller.selectApi.*(..))")

整合bootcloud時候針對<parentId><dependencyManagement>區別的疑惑

首先看,在maven下,對微服務進行聚合時候,看到parentId和dependencyManagement。很相似。所以這裡,我想對這兩個標籤進行說明一下,把自己的經驗告訴大家。 如圖: 以下為parentId的方式: <parent> <groupId>

Spring Boot日誌AOP註解

Spring Boot日誌和AOP註解 Spring Boot日誌 logging常用配置 多環境日誌配置 自定義日誌 AOP:面向切面程式設計 新增aop依賴 AOP的基本概念 實現AOP的