娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

u-boot 移植 --->2、在u-boot新增SOC和板子

發布者:PositiveEnergy最新更新時間:2024-12-23 來源: cnblogs關鍵字:u-boot  移植  SOC 手機看文章 掃描二維碼
隨時隨地手機看文章

本次主要是要新增一個samsung的芯片到u-boot中,網上查閱資料發現s5pc1xx是與手上的S5PV210的友善的Tiny版子寄存器兼容的比較多,所以就準備以他為基礎增加一個我的板子的支持到u-boot中。


step1

拷貝archarm目錄下的mach-s5pc1xx目錄修改名稱為mach-s5pv210,注意這里的mach-xxx后面的xxx的命令是和Kconfig文件一會的修改相關的。


step2

在archarmKconfig 文件中增加新的芯片這里參考s5pc1xx的內容


config ARCH_S5PC1XX

bool 'Samsung S5PC1XX'

select CPU_V7

select DM

select DM_SERIAL

select DM_GPIO

select DM_I2C


config ARCH_S5PV210

bool 'Samsung S5P210'

select CPU_V7

select DM

select DM_SERIAL

select DM_GPIO

select DM_I2C



step3

修改archarmmach-s5pv210目錄下的Kconfig為如下內容


if ARCH_S5PV210


choice

prompt 'Tiny board select'

optional


endchoice


config SYS_SOC

default 's5pv210'

endif


然后在archarmKconfig文件增加


source 'arch/arm/mach-s5pc1xx/Kconfig' 原來就有的

source 'arch/arm/mach-s5pv210/Kconfig' 增加的


step4

增加board文件,參考archarmmach-s5pc1xxKconfig 文件中,這個芯片支持的平臺,我這里選擇goni平臺作為參考拷貝boardsamsunggoni

到當前目錄修改名稱為boardsamsungtiny210;然后修改其中的Kconfig為如下內容


if TARGET_TINY210

config SYS_BOARD

default 'tiny210'

config SYS_VENDOR

default 'samsung'

config SYS_SOC

default 's5pv210'

config SYS_CONFIG_NAME

default 'Tiny210'

endif


返回去也就需要在前面拷貝修改后的archarmmach-s5pv210Kconfig文件中增加內容最后如下


if ARCH_S5PV210


choice

prompt 'Tiny board select'

optional


config TARGET_TINY210

bool 'S5P 210 board'

select OF_CONTROL


endchoice


config SYS_SOC

default 's5pv210'

source 'board/samsung/tiny210/Kconfig'

endif


注意這里的config SYS_SOC 的值就是和前面的mach-xxx后面的名字要一致。否則在make時候不會吧新增的SOC文件夾


step5

這樣還不夠還差一個頭文件并且這個頭文件的命名必須是boardsamsungtiny210Kconfig文件中的 SYS_CONFIG_NAME 選項的值 本例就是Tiny210.h


具體目錄是includeconfigs,最后就是增加默認配置文件tiny_defconfig,復制s5p_goni_defconfig為Tiny210_defconfig

然后執行


make distclean

make Tiny210_defconfig 

make 進行編譯鏈接過程出錯


ch/arm/mach-s5pv210/built-in.o: In function `s5pc100_get_pll_clk':

/home/fmshwr/Desktop/Demo/u-boot-2017.01-wr/arch/arm/mach-s5pv210/clock.c:60: undefined reference to `s5p_cpu_id'

arch/arm/mach-s5pv210/built-in.o: In function `s5pc100_get_pclk':

/home/fmshwr/Desktop/Demo/u-boot-2017.01-wr/arch/arm/mach-s5pv210/clock.c:278: undefined reference to `s5p_cpu_id'

arch/arm/mach-s5pv210/built-in.o: In function `s5pc110_get_pclk':

/home/fmshwr/Desktop/Demo/u-boot-2017.01-wr/arch/arm/mach-s5pv210/clock.c:272: undefined reference to `s5p_cpu_id'

arch/arm/mach-s5pv210/built-in.o: In function `s5pc1xx_get_uart_clk':

/home/fmshwr/Desktop/Demo/u-boot-2017.01-wr/arch/arm/mach-s5pv210/clock.c:286: undefined reference to `s5p_cpu_id'

board/samsung/common/built-in.o: In function `set_board_info':

/home/fmshwr/Desktop/Demo/u-boot-2017.01-wr/board/samsung/common/misc.c:98: undefined reference to `s5p_cpu_rev'

/home/fmshwr/Desktop/Demo/u-boot-2017.01-wr/board/samsung/common/misc.c:98: undefined reference to `s5p_cpu_id'

board/samsung/tiny210/built-in.o: In function `board_mmc_init':

/home/fmshwr/Desktop/Demo/u-boot-2017.01-wr/board/samsung/tiny210/s5p210.c:139: undefined reference to `s5p_cpu_id'

common/built-in.o: In function `cread_line':

/home/fmshwr/Desktop/Demo/u-boot-2017.01-wr/common/cli_readline.c:265: undefined reference to `get_tbclk'

common/built-in.o:(.data.init_sequence_f+0x40): undefined reference to `print_cpuinfo'

drivers/gpio/built-in.o: In function `s5p_gpio_get_bank':

/home/fmshwr/Desktop/Demo/u-boot-2017.01-wr/drivers/gpio/s5p_gpio.c:72: undefined reference to `s5p_cpu_id'

drivers/usb/gadget/built-in.o: In function `otg_phy_init':

/home/fmshwr/Desktop/Demo/u-boot-2017.01-wr/drivers/usb/gadget/dwc2_udc_otg_phy.c:76: undefined reference to `s5p_cpu_id'

lib/built-in.o: In function `tick_to_time':

/home/fmshwr/Desktop/Demo/u-boot-2017.01-wr/lib/time.c:103: undefined reference to `get_tbclk'

/home/fmshwr/Desktop/Demo/u-boot-2017.01-wr/lib/time.c:103: undefined reference to `get_tbclk'

lib/built-in.o: In function `usec_to_tick':


在VScode中全局查找一下找不到的符號,發現在archarmcpuarmv7s5p-common目錄下的文件中定義了,所以看一下這個文件是否參與編譯執行

make V=1 發現這個文件夾未參與編譯查到arch/arm/cpu/armv7/Makefile 這個文件中發現如下一段內容


ifneq (,$(filter s5pc1xx exynos ,$(SOC)))

obj-y += s5p-common/

endif

現在肯定就是這一塊的內容導致該目錄未參與編譯了,所以很簡單增加我們新增的SOC到里如下


ifneq (,$(filter s5pc1xx exynos s5pv210,$(SOC)))

obj-y += s5p-common/

endif

在進行make成功生成u-boot.bin 目前工程配置基本算是可以開始調試了,后續需要在進行具體code的修改移植了。


總結

我新增芯片和板子的配置過程,我認為kbuild 的工作原理可以作為黑盒子看待會用就可以,明白他的配置過程就可以,就比如參考我前面的Kbuild的配置過程分析就可以知道在執行make xxx_defconfig 時實際匹配到了u-boot的頂層makefile文件中的特定規則,這個規則就是生成了Kbuild工具,他是一個主機可執行文件讀取u-boot下的所有Kconfig文件這些文件都是通過source “xxxxx”這種類似C語言中的include的操作原理類似的方式實現相互的引用最終生成了一個.config在工程的根目錄下并在make時生成config.h文件,這個文件中實際就是一些宏再由各個源文件引用后對目標代碼進行條件編譯最后實現裁剪。


關鍵字:u-boot  移植  SOC 引用地址:u-boot 移植 --->2、在u-boot新增SOC和板子

上一篇:u-boot 移植 --->6、引導Linux啟動測試
下一篇:u-boot 移植 --->1、u-boot配置(Kbuild)

推薦閱讀最新更新時間:2025-04-24 22:43

u-boot 移植 --->1、u-boot配置(Kbuild)
早期的U-BOOT的裁剪是沒有使用Kbuild工具的,后來就借鑒了Linux的Kbuild同時也是方便使用者裁剪,因為他的原理和Linux內核的配置裁剪原理是相同的。今天拿來分析的U-Boot的版本是u-boot-2017.11,主要原因是我電腦上的gcc版本編譯不了更新的版本,但是不影響拿來學習。U-boot開始編譯之前需要先執行make xxxdefconfig 進行U-boot 的配置裁剪,之后才能進行編譯Kbuild就是在第一步中發揮主要作用的。本次使用的默認文件為三星s5p_goni_defconfig。 運行 通過執行make V=1 s5p_goni_defconfig 會發現其實他就是生成了一個conf可執行文
[單片機]
<font color='red'>u-boot</font> <font color='red'>移植</font> --->1、<font color='red'>u-boot</font>配置(Kbuild)
u-boot之內核是怎么啟動的
在u-boot之start_armboot函數分析已經分析過了整個程序框架,但只是說了下什么時候運行內核,并沒有具體說明是怎么執行內核的。內核啟動分以下幾個步驟說明: 1、啟動參數bootcmd=nand read.jffs2 0x30007FC0 kernel; bootm 0x30007FC0說明 2、run_command函數是怎么執行命令的 3、u-boot給內核傳遞的參數說明 4、內核啟動流程 1、啟動參數bootcmd=nand read.jffs2 0x30007FC0 kernel; bootm 0x30007FC0說明 這個參數分了兩條uboot命令首先從kernel區拷貝相應大小的內核到
[單片機]
TQ2440之uboot---4.分析u-boot Makefile 最后連接的過程
1.最后生成u-boot的過程 以下是u-boot Makefile最后連接生成u-boot的過程 UNDEF_SYM=`arm-linux-objdump -x lib_generic/libgeneric.a board/EmbedSky/libEmbedSky.a cpu/arm920t/libarm920t.a cpu/arm920t/s3c24x0/libs3c24x0.a lib_arm/libarm.a fs/cramfs/libcramfs.a fs/jffs2/libjffs2.a net/libnet.a rtc/librtc.a drivers/libdrivers.a drivers/nand/libn
[單片機]
U-BOOT構建嵌入式系統的引導裝載程序
摘 要:BootLoader(引導裝載程序)是嵌入式系統軟件開發的第一個環節,它把操作系統和硬件平臺銜接在一起,對于嵌入式系統的后續軟件開發十分重要,在整個開發中也占有相當大的比例。U-BOOT是當前比較流行、功能強大的BootLoader,可以支持多種體系結構。LH7A400是Sharp公司生產的一款基于ARM922T內核的32位RISC芯片,本文詳細介紹U-BOOT的功能、特點以及在LH7A400處理器上的移植過程。 關鍵詞:BootLoader U-BOOT移植 LH7A400 ARM922T 引 言:   本文以U-BOOT為例,介紹了如何在ARM9開發板上移植BootLoader的過程。LH7A400學習板
[應用]
英特爾發布全新SoC解決方案,大幅降低成本,加速電動汽車創新
創新的OLEA U310 SoC可以簡化電機技術,降低電動汽車設計與制造費用 全新OLEA U310 片上系統(SoC)是一款將硬件和軟件結合在一起的完整解決方案。OLEA U310經過專門設計,可與分布式軟件相結合,滿足電氣架構中動力系域控制的需求(圖片來源于英特爾子公司Silicon Mobility) 在全球范圍內,電動汽車的高昂售價仍然是影響潛在買家下單的最大障礙之一。 電動汽車目前的制造成本高于傳統燃油汽車的主要原因,是先進的電池和電機技術所帶來的昂貴成本。 市面上近期的解決方案是通過車輛層面的節能,包括改進與電動汽車充電基礎設施的整合,來提升現有電池技術的效率。如今,這些挑戰都可以通過英特爾子公司Silic
[汽車電子]
英特爾發布全新<font color='red'>SoC</font>解決方案,大幅降低成本,加速電動汽車創新
車系統級芯片SoC:汽車系統級芯片概覽及AEC-Q100車規
SoC,系統級芯片,汽車系統級SoC主要面向兩個領域,一是駕駛艙,二是智能駕駛,兩者的界限現在越來越模糊。隨著汽車電子架構的演進,新出現了網關SoC,典型的代表是NXP的S32G274A。通常網關SoC不需要太強算力,不過S32G274A有4個Cortex-A53內核,達到低端座艙的水準。 英偉達Orin的內部框架圖 Orin是一個典型的智能駕駛SoC,包含存儲管理、外圍、CPU、GPU和加速器。CPU、GPU、AI加速器以及連接子系統的總線或片上網絡(NoC)是SoC的核心,因此本文將對應這四個部分分四個章節帶大家深入了解汽車SoC。目錄如下: 汽車SoC定義 廣義而言,汽車領域算力稍強(2K DMIPS以上)
[嵌入式]
車系統級芯片<font color='red'>SoC</font>:汽車系統級芯片概覽及AEC-Q100車規
加特蘭針對L2+及以上推出全新SoC產品
12月20日,加特蘭舉辦首屆“Next Wave” Calterah Day活動,發布了毫米波雷達SoC芯片全新系列產品——Alps-Pro與Andes。 Alps-Pro Alps-Pro芯片是加特蘭Alps毫米波雷達芯片平臺的全新產品,具有更高性能(Powerful)、更加可靠(Robust)、更有性價比(Optimal)的特點。芯片集成了4T4R、76–81 GHz的FMCW收發前端系統、高速ADC、支持雷達信號全處理流程的基帶加速器(Baseband Accelerator,BBA)、雙核處理器、網絡安全引擎,支持CAN、CAN-FD、100 Mbps以太網接口,且在4發4收占空比為50%的情況下,典型功耗僅有
[物聯網]
加特蘭針對L2+及以上推出全新<font color='red'>SoC</font>產品
SoC設計下的簡化可穿戴設備
  可穿戴技術受到了用戶的追捧,因為這些設備有助于分析人們的日常活動,并可通過一種直觀的方式交換信息,極大改善我們的生活方式,給我們帶來便利。市場上有各種各樣的可穿戴電子設備,最有名的是智能手表、活動監測器和健身手環。這些高度便攜式設備被戴在用戶身上,或以其它方式附著在人身上,能夠通過一個或多個傳感器測量和捕獲信息(參見圖1)。   圖1:一個典型的可穿戴設備能夠整合用戶數據和外部數據,它與一個外部設備配合工作,分析并向用戶顯示信息。   這些設備持續監測用戶的活動,即使他們在睡覺時也不例外。它們運行各種復雜的算法,以提取有意義的信息。例如:佩戴者的睡眠情況,并通過一種直觀的方式和無線接口向用戶顯示監測結果。由于這些設備提
[嵌入式]
<font color='red'>SoC</font>設計下的簡化可穿戴設備
小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 陕西省| 华容县| 抚宁县| 朝阳市| 丰台区| 玛纳斯县| 延安市| 宜章县| 桦川县| 仁布县| 万载县| 拉萨市| 黄浦区| 京山县| 榆中县| 五峰| 枣庄市| 昌黎县| 桂东县| 仁怀市| 抚顺县| 铅山县| 大姚县| 壶关县| 集贤县| 顺昌县| 张家界市| 偏关县| 海城市| 南平市| 夏津县| 拉萨市| 犍为县| 和政县| 屏东县| 河北省| 寿阳县| 达尔| 灵武市| 嘉峪关市| 镇远县|