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

S5pv210 HDMI 接口在 Linux 3.0.8 驅(qū)動(dòng)框架解析

發(fā)布者:Shuangfei最新更新時(shí)間:2024-12-23 來(lái)源: cnblogs關(guān)鍵字:S5pv210  HDMI  接口  Linux  驅(qū)動(dòng)框架 手機(jī)看文章 掃描二維碼
隨時(shí)隨地手機(jī)看文章

本文主要簡(jiǎn)述S5pv210處理器的 HDMI 接口在 Linux 3.0.8 內(nèi)核下的驅(qū)動(dòng)框架。

        現(xiàn)在三星的主流處理器基本都支持HDMI,使用HDMI也有段時(shí)間了,卻一直不知道它是怎么工作的,只知道linux和android下都會(huì)有一個(gè)HDMI-service的用戶服務(wù)程序。然后底層會(huì)有HDMI驅(qū)動(dòng)。知道HDMI 和framebuffer有點(diǎn)關(guān)系,卻不知道兩者是如何聯(lián)系在一起的。從知道HDMI以來(lái)就覺(jué)得它神秘,出于好奇,決定揭開(kāi)它的面紗一探真容。按照我的思路從下面四個(gè)方面并依照源碼簡(jiǎn)單剖析一下Samsung S5pv210 處理器HDMI 在linux3.0.8下的驅(qū)動(dòng)框架。

?      1.1 何為HDMI,HDMI總線協(xié)議發(fā)展概況

?      1.2  HDMI驅(qū)動(dòng)框架

?      1.3  從源碼,看HDMI設(shè)備驅(qū)動(dòng)框架

?      1.4   從“疑問(wèn)???”猜答案。(透過(guò)HDMI-service剖析HDMI與Framebuffer的關(guān)系。)

1.1  何為HDMI,HDMI總線協(xié)議發(fā)展概況

         高清晰度多媒體接口(英文:HighDefinition Multimedia Interface,HDMI)是一種數(shù)字化視頻/音頻接口技術(shù),是適合影像傳輸?shù)膶S眯蛿?shù)字化接口,其可同時(shí)傳送音頻和影音信號(hào),最高數(shù)據(jù)傳輸速度為5Gbps。下面給出的是HDMI typeA型的公母頭,另外HDMI 還有typeB typeC 兩種類型的插頭。

  

       HDMI不僅可以滿足1080P的分辨率,還能支持DVDAudio等數(shù)字音頻格式,支持八聲道96kHz或立體聲192kHz數(shù)碼音頻傳送,可以傳送無(wú)壓縮的音頻信號(hào)及視頻信號(hào)。 HDMI的設(shè)備具有“即插即用”的特點(diǎn) 。從下面的圖片我們看一下個(gè)版本HDMI的差別

 

   

 

在s5pv210處理器上的HDMI模塊是1.3版,Exyson4412上用的是1.4版。4412在hdmi上的優(yōu)勢(shì)從上面的圖就一目了然了。從數(shù)據(jù)手冊(cè)上可以得到s5pv210處理器HDMI的基本參數(shù):

 

 

1.2  HDMI驅(qū)動(dòng)框架

       在介紹HDMI的驅(qū)動(dòng)框架之前,首先需要了解一下HDCP,HPD,DDC 這幾個(gè)新名詞指的是什么,否則直接深入源碼只會(huì)搞得暈頭轉(zhuǎn)向,然后就會(huì)覺(jué)得HDMI這玩意高深的不得了。其實(shí)它不怎么深。。。^_^

?      HDCP: HDCP的全稱是High-bandwidthDigital Content Protection,也就是“高帶寬數(shù)字內(nèi)容保護(hù)”。

?      DDC: HDCP數(shù)據(jù)秘鑰在CPU和顯示設(shè)備間的交換以及EDID(EDID中包含有關(guān)顯示器及其性能的參數(shù))要通過(guò)hdmi 接口的兩個(gè)DDC(IIC總線)引腳實(shí)現(xiàn).(實(shí)質(zhì)是實(shí)現(xiàn)一個(gè)IIC設(shè)備驅(qū)動(dòng))

?      HDP:Hot PlugDetection,在HDMI的一對(duì)聯(lián)接中,為熱插拔的實(shí)現(xiàn)而設(shè)計(jì)的。簡(jiǎn)單地說(shuō),當(dāng)發(fā)送端接入接受端時(shí),接受端會(huì)回應(yīng)HPD信號(hào)給發(fā)送端,進(jìn)而發(fā)送端會(huì)啟動(dòng)DDC通道,而讀取接受端EDID的信息,然后進(jìn)行HDCP的交互,如果雙方認(rèn)證成功,則視頻、音頻正常工作,否則聯(lián)接失敗,不同系統(tǒng)會(huì)有不同的處理。

     HDCP,HPD,DDC 這幾個(gè)新名詞清楚了,那就得想想它們作為HDMI的一個(gè)組件(這個(gè)詞不清楚用的是否恰當(dāng))之間有什么樣的聯(lián)系呢?其實(shí)上面說(shuō)的已經(jīng)差不多了,我再簡(jiǎn)單總結(jié)下:

     HDCP起到一個(gè)數(shù)字內(nèi)容保護(hù)的作用,它的秘鑰交換需要用到IIC總線,也就是HDMI的DDC通道。另外HDMI還需要從顯示設(shè)備獲得顯示相關(guān)參數(shù)(EDID),比如分辨率等顯示信息。這個(gè)信息也是通過(guò)IIC總線交互的,走的也是DDC通道。HPD就不用多說(shuō)了,HDMI熱插拔后的“工作”全靠它了。Linux驅(qū)動(dòng)需要分別實(shí)現(xiàn)這幾個(gè)組件的驅(qū)動(dòng),這幾個(gè)組件的驅(qū)動(dòng)相互配合共支撐實(shí)現(xiàn)了HDMI 驅(qū)動(dòng)。下面就先把HDMI框架畫(huà)出來(lái)。

 

         這里還需要介紹一下CEC:可以簡(jiǎn)單理解 當(dāng)您有很多HDMI設(shè)備通過(guò)HDMI線,切換器或者分配器連在一起的時(shí)候,如果所有的HDMI產(chǎn)品都支持CEC功能,那么可以利用其中一臺(tái)的遙控器可以去控制其他的設(shè)備. 這就是CEC功能。210也提供了HDMI cec的驅(qū)動(dòng)源碼,并且生成了供給用戶空間操作的設(shè)備文件(它是作為混雜設(shè)備被注冊(cè)進(jìn)內(nèi)核),從上面的框圖也可以看到,CEC驅(qū)動(dòng)的實(shí)現(xiàn)不同于HDCP、HPD、DDC 等組件的驅(qū)動(dòng)向內(nèi)核空間提供了函數(shù)接口。CEC驅(qū)動(dòng)中僅實(shí)現(xiàn)了file_operation操作方法,供給用戶對(duì)設(shè)備文件操作時(shí)調(diào)用。并沒(méi)有對(duì)內(nèi)核空間暴露函數(shù)接口。

         再簡(jiǎn)單說(shuō)明下框架:在linux 3.0.8中HDMI作為T(mén)V_OUT的一部分,TV_OUT驅(qū)動(dòng)注冊(cè)時(shí),HDMI作為T(mén)V_OUT的一個(gè)子系統(tǒng)被初始化?!井?dāng)TV_OUT的探針函數(shù)(static int __devinit s5p_tv_probe(struct platform_device *pdev))被執(zhí)行時(shí),會(huì)調(diào)用HDMI相關(guān)初始化函數(shù)s5p_hdmi_probe(pdev,3, 4);】。并且同時(shí)會(huì)注冊(cè)一個(gè)符合V4L2標(biāo)準(zhǔn)的設(shè)備,因此用戶空間對(duì)HDMI設(shè)備(video14)的基本操作如設(shè)置分辨等操作符合V4L2標(biāo)準(zhǔn)操作(這個(gè)在后面還會(huì)根據(jù)源碼深入分析)。而CEC HDCP DDC HPD作為HDMI的組件,他們的驅(qū)動(dòng)實(shí)現(xiàn)即為HDMI驅(qū)動(dòng)的實(shí)現(xiàn)提供函數(shù)接口(HDCP DDC HPD 這三個(gè)組件的驅(qū)動(dòng)會(huì)互相暴露函數(shù)調(diào)用),也為用戶空間提供了操作這個(gè)組件的方法(HPD CEC這兩個(gè)組件的驅(qū)動(dòng)向用戶空間提供了操作方法)。

         通過(guò)上面的框圖可以看到,我們?cè)谟脩艨臻g可以看到的跟HDMI相關(guān)的設(shè)備文件只有三個(gè),分別是CEC HPD video14 這三個(gè)設(shè)備文件,根據(jù)驅(qū)動(dòng)中實(shí)現(xiàn)的方法應(yīng)用程序可以通過(guò)這三個(gè)設(shè)備文件分別是實(shí)現(xiàn)HDMI CEC功能操作、讀取熱插拔HDMI設(shè)備狀態(tài)、對(duì)HDMI設(shè)備操作。這三個(gè)設(shè)備文件是如何生成的,他們提供了哪些操作方法呢?看下面的分析----------

 

1.3  透過(guò)源碼看HDMI設(shè)備驅(qū)動(dòng)框架的實(shí)現(xiàn)

          HDMI的這幾個(gè)組件都有自己的驅(qū)動(dòng)源文件,下面就分開(kāi)看看各組件驅(qū)動(dòng)的實(shí)現(xiàn)及其在HDMI主體驅(qū)動(dòng)中的作用

HDMI DDC 驅(qū)動(dòng):

         

先來(lái)看看HDMI DDC驅(qū)動(dòng),DDC驅(qū)動(dòng)實(shí)際上實(shí)現(xiàn)了一個(gè)標(biāo)準(zhǔn)IIC設(shè)備的驅(qū)動(dòng)。

DDC設(shè)備注冊(cè):

DDC設(shè)備結(jié)構(gòu),在板級(jí)初始化時(shí)被注冊(cè)進(jìn)內(nèi)核mach-XXX210.c(我用的是tiny210 mach-mini210.c)

 

這是DDC設(shè)備結(jié)構(gòu)體,其中包含了DDC設(shè)備IIC總線上的地址信息。在mini210_machine_init(void) 函數(shù)中會(huì)調(diào)用:

i2c_register_board_info(1,mini210_i2c_devs1,ARRAY_SIZE(mini210_i2c_devs1));函數(shù)將這個(gè)結(jié)構(gòu)注冊(cè)進(jìn)內(nèi)核。如下圖所示:

再看一下DDC驅(qū)動(dòng)注冊(cè):

           這是DDC驅(qū)動(dòng)的結(jié)構(gòu)體。在內(nèi)核啟動(dòng)后start_kernel  -->rest_init() -->kernel_init() --> do_basic_setup()  -->do_initcalls()  執(zhí)行到do_initcalls函數(shù)時(shí)所有帶有__init標(biāo)示的函數(shù)被順序執(zhí)行這里ddc_init函數(shù)就被執(zhí)行了,將上面的驅(qū)動(dòng)結(jié)構(gòu)注冊(cè)進(jìn)內(nèi)核如下圖:

,

   若IIC總線上設(shè)備、驅(qū)動(dòng)匹配,則ddc_probe函數(shù)被執(zhí)行。ddc_probe函數(shù)內(nèi)容如下:

     ddc_probe函數(shù)被執(zhí)行后會(huì)獲得IIC設(shè)備資源,主要是IIC設(shè)備地址信息。

        DDC驅(qū)動(dòng)中實(shí)現(xiàn)了兩個(gè)方法,這兩個(gè)方法不暴露給用戶,暫且稱為“內(nèi)核API”(這種說(shuō)法不太準(zhǔn)確,為了方便后面暫且這么叫).驅(qū)動(dòng)將這兩個(gè)方法,提供給HDMI 的HDCP驅(qū)動(dòng)調(diào)用(HDCP 秘鑰的交換需要用到DDC組件)。這兩個(gè)方法的實(shí)現(xiàn)如下:

 

DDC驅(qū)動(dòng)內(nèi)容大致就這么多

 

 HDMI HDCP 驅(qū)動(dòng):

下面了解一下HDCP驅(qū)動(dòng):

        HDCP驅(qū)動(dòng)完全沒(méi)有給用戶空間提供操作接口,對(duì)用戶空間來(lái)說(shuō)感覺(jué)不到它的存在,但是驅(qū)動(dòng)提供了“內(nèi)核API”供HDMI 驅(qū)動(dòng)及其它組件調(diào)用。對(duì)外暴露的函數(shù)列表如下:

static ints5p_hdcp_is_reset(void) //函數(shù)功能:判斷HDCP的自旋鎖是否已經(jīng)被獲取如果被獲取返回1,否則返回0.函數(shù)未被調(diào)用。

static bools5p_set_hpd_detection(bool detection, bool hdcp_enabled,struct i2c_client*client)// 函數(shù)功能:檢測(cè)HPD引腳狀態(tài),函數(shù)未被調(diào)用。

int s5p_hdcp_init(void)//函數(shù)功能:初始化HDCP

bool s5p_start_hdcp(void)// 函數(shù)功能:開(kāi)啟HDCP功能,并從顯示設(shè)備獲得秘鑰。

bool s5p_stop_hdcp(void)// 函數(shù)功能:關(guān)閉HDCP功能

ints5p_hdcp_encrypt_stop(bool on)// 函數(shù)功能:當(dāng)HDMI接口拔下時(shí),會(huì)執(zhí)行這個(gè)函數(shù),停止HDCP加密

int s5p_hdmi_set_dvi(boolen)// 函數(shù)功能:設(shè)置開(kāi)啟/關(guān)閉DVI 標(biāo)志

voids5p_hdmi_set_audio(bool en)// 函數(shù)功能:設(shè)置開(kāi)啟/關(guān)閉 PCM流無(wú)損音頻輸出 標(biāo)志

ints5p_hdmi_audio_enable(bool en)// 函數(shù)功能:開(kāi)啟音頻輸出

ints5p_hdmi_set_mute(bool en) // 函數(shù)功能:設(shè)置聲音圖像消隱 開(kāi)啟/關(guān)閉 標(biāo)志

ints5p_hdmi_get_mute(void) // 函數(shù)功能:獲得聲音圖像消隱 開(kāi)啟/關(guān)閉 標(biāo)志狀態(tài)

voids5p_hdmi_mute_en(bool en) // 函數(shù)功能:開(kāi)啟聲音圖像消隱

 

        順便提一下什么是聲音圖像消隱:簡(jiǎn)單來(lái)說(shuō)就是顯示設(shè)備的聲音至于靜音狀態(tài)、圖像至于黑屏狀態(tài)。比如HDMI輸出設(shè)備在切換分辨率、Color Space、開(kāi)關(guān)機(jī)等操作時(shí),顯示設(shè)備可能會(huì)看到一些過(guò)度花屏的現(xiàn)象,所以,HDMI輸出設(shè)備在進(jìn)行相應(yīng)操作之前,發(fā)送給顯示設(shè)備一個(gè)AVMute信號(hào),讓顯示設(shè)備至于黑屏靜音狀態(tài),等待HDMI輸出設(shè)備切換好后,再發(fā)送一個(gè)Clear AVMute信號(hào),讓顯示設(shè)備再開(kāi)機(jī),這樣,切換過(guò)程中的花屏現(xiàn)象就會(huì)被屏蔽掉。

 

HDCP驅(qū)動(dòng)大致就提供了這些接口函數(shù),供HDMI驅(qū)動(dòng)的其它組件調(diào)用。

 

HDMI HPD 驅(qū)動(dòng):

然后再介紹一下HPD驅(qū)動(dòng):

         HPD驅(qū)動(dòng)使用了Platform&misc框架。 設(shè)備結(jié)構(gòu)注冊(cè)到內(nèi)核,驅(qū)動(dòng)結(jié)構(gòu)體注冊(cè)到內(nèi)核,設(shè)備驅(qū)動(dòng)匹配后,HPD 的探針函數(shù)中(probe)獲得設(shè)備資源,并注冊(cè)一個(gè)混雜設(shè)備,這時(shí)會(huì)在根文件系統(tǒng)生成設(shè)備文件HPD,用戶可以通過(guò)驅(qū)動(dòng)所支持的方法,操作設(shè)備文件,從而獲得HDMI HPD引腳線的狀態(tài)。這段文字用源碼的形式展現(xiàn)如下:

Mach-mini210.c文件中,HPD設(shè)備結(jié)構(gòu)的定義如下

作為板級(jí)平臺(tái)設(shè)備,上面的結(jié)構(gòu)包含在mini210_devices數(shù)組中

系統(tǒng)平臺(tái)設(shè)備初始化(mini210_machine_init(void) ----àplatform_add_devices)時(shí),將設(shè)備結(jié)構(gòu)s5p_device_hpd注冊(cè)進(jìn)內(nèi)核。

 

下面的代碼在函數(shù) s5p_hpd_init 中將驅(qū)動(dòng)結(jié)構(gòu) s5p_hpd_driver 注冊(cè)進(jìn)內(nèi)核

當(dāng)platform的設(shè)備和驅(qū)動(dòng)匹配后執(zhí)行probe探針函數(shù)

探針函數(shù)s5p_hpd_probe 中注冊(cè)將HPD注冊(cè)為一個(gè)混雜設(shè)備,設(shè)備結(jié)構(gòu)體如下

         可以看到這個(gè)驅(qū)動(dòng)中的file_operations結(jié)構(gòu)實(shí)現(xiàn)了 s5p_hpd_open、s5p_hpd_release 、s5p_hpd_read 、s5p_hpd_poll 這幾個(gè)方法。用戶可以通過(guò)read 系統(tǒng)調(diào)用實(shí)現(xiàn)讀取HPD引腳的狀態(tài)。

另外HPD驅(qū)動(dòng)中還有三個(gè)函數(shù)(方法):

int s5p_hpd_get_state(void)

int s5p_hpd_set_hdmiint(void)

int s5p_hpd_set_eint(void)

這三個(gè)操作方法,作為Kernel API  供給HDMI驅(qū)動(dòng)核心調(diào)用,分別用于獲取當(dāng)前HDMI接口狀態(tài)、上電初始化HDMI HPD  、及上電初始化HPD引腳中斷。

 

HDMI 主設(shè)備驅(qū)動(dòng)

下面就要進(jìn)入HDMI驅(qū)動(dòng)最精彩的部分了,HDMI 設(shè)備的注冊(cè):HDMI作為T(mén)V_OUT的一部分,設(shè)備資源包含在TV_OUT設(shè)備資源結(jié)構(gòu)中如下圖數(shù)組中下標(biāo)為3、4的元素:

 

 

下面是TV_OUT的設(shè)備結(jié)構(gòu)體:

它作為板級(jí)平臺(tái)設(shè)備,被下面的數(shù)組包含

 

在mini210_machine_init函數(shù)中 的 platform函數(shù)被調(diào)用時(shí)注冊(cè)進(jìn)內(nèi)核

 

下面是TV_OUT的驅(qū)動(dòng)結(jié)構(gòu)體

 

在s5p_tv_init函數(shù)中 s5p_tv_driver 被注冊(cè)進(jìn)內(nèi)核

當(dāng)platform的設(shè)備和驅(qū)動(dòng)匹配時(shí)執(zhí)行探針函數(shù)(probe)s5p_tv_probe

         這個(gè)probe函數(shù)中與HDMI相關(guān)的s5p_hdmi_probe 函數(shù)被調(diào)用,完成HDMI設(shè)備的初始化。

緊接著,在probe函數(shù)中,下面紅框內(nèi)調(diào)用video_device_register 函數(shù),將HDMI設(shè)備注冊(cè),

函數(shù)會(huì)獲得s5p_tvout這個(gè)結(jié)構(gòu),

 

        并會(huì)被注冊(cè)為遵循V4L2框架的 video設(shè)備,對(duì)HDMI的操作函數(shù)嵌入到v4l2框架。,然后會(huì)在根文件生成名為 video14 的設(shè)備文件(.minor = TVOUT_MINOR_TVOUT, 這個(gè)元素中TVOUT_MINOR_TVOUT宏展開(kāi)為14 )。

而對(duì)video14(HDMI)設(shè)備的操作函數(shù)最終通過(guò)V4L2框架封裝暴露給用戶空間,實(shí)現(xiàn)的操作方法如下:

符合V4L2框架的ioctl操作

 

到此為止我們已經(jīng)可以通過(guò)/dev/video14  設(shè)備文件,按照V4L2規(guī)范對(duì)HDMI進(jìn)行操作了。

 

HDMI CEC驅(qū)動(dòng) 暫略后面會(huì)補(bǔ)上

1.4疑問(wèn)???

到現(xiàn)在為止,我們應(yīng)該還有一個(gè)疑問(wèn),用戶空間是如何使用HDMI設(shè)備的,由此可以引出四個(gè)問(wèn)題:

?      在用戶空間如何配置HDMI?

?      HDMI顯示數(shù)據(jù)從哪來(lái)?

?      HDMI顯示和Framebuffer有何關(guān)聯(lián)?

從android的HDMI-service 我們可以看到,在Service中打開(kāi)HDMI 設(shè)備:(/device/samsung/proprietary/libhdmi/SecHdmi.cpp)

 

          并且會(huì)在Overlay的初始化過(guò)程將HDMI顯示與Framebuffer關(guān)聯(lián)起來(lái)。在overlay.cpp 中會(huì)在系統(tǒng)啟動(dòng)時(shí)對(duì)HDMI進(jìn)行初始化,將幀緩沖內(nèi)存映射到HDMI 顯示緩沖區(qū)中。源碼中的buffer指針指向幀緩沖區(qū)

       經(jīng)過(guò)上述方法,實(shí)現(xiàn)了幀緩沖區(qū)向HDMI接口的映射。我們?cè)趹?yīng)用程序中,只需要向幀緩沖區(qū)中寫(xiě)入圖像數(shù)據(jù)就會(huì)通過(guò)HDMI輸出到顯示設(shè)備上(HDMI-service正常工作做的前提下,HDMI-service在系統(tǒng)啟動(dòng)后被啟動(dòng),用來(lái)初始化HDMI基本參數(shù),如分辨率等)。

映射完成后 framebuffer與HDMI 的關(guān)系如下圖:

         至此HDMI驅(qū)動(dòng)框架介紹完畢。由于網(wǎng)上基本搜不到210 HDMI的linux驅(qū)動(dòng)相關(guān)信息,以上內(nèi)容都是通過(guò)讀源碼分析總結(jié)的,可能會(huì)有一些認(rèn)識(shí)錯(cuò)誤,還請(qǐng)大家在閱讀后及時(shí)指正


關(guān)鍵字:S5pv210  HDMI  接口  Linux  驅(qū)動(dòng)框架 引用地址:S5pv210 HDMI 接口在 Linux 3.0.8 驅(qū)動(dòng)框架解析

上一篇:tiny210(s5pv210)移植u-boot(基于 2014.4 版本號(hào))——NAND 啟動(dòng)
下一篇:u-boot 移植 --->3、S5PV210啟動(dòng)序列

推薦閱讀最新更新時(shí)間:2025-05-27 12:04

s5pv210——初始化SDRAM
1:SDRAM基礎(chǔ): 通過(guò)s3c2440的內(nèi)存原理以及時(shí)序來(lái)理解s5pv210 SDRAM原理、時(shí)序。 首先看一下核心板內(nèi)存如何連接的 可以看一下兩個(gè)內(nèi)存芯片接的地址總線均為Xm1_ADDR ,數(shù)據(jù)總線Xm1_DATA 、Xm1_DATA ,兩個(gè)內(nèi)存芯片是并聯(lián)的,當(dāng)?shù)刂房偩€Xm1_ADDR 尋址時(shí), 可以同時(shí)在兩個(gè)內(nèi)存芯片上各獲取16位數(shù)據(jù)來(lái)組成一個(gè)32位數(shù)據(jù),并由32位數(shù)據(jù)總線輸出。 在看下面這幅圖:下圖為每個(gè)內(nèi)存芯片內(nèi)部框圖:Block Diagram (128Mb x 8),從圖中可以看出:有8bank:bank0—bank1,BA0-BA2用來(lái)選擇bank的,正好可選8個(gè)。 每個(gè)bank的row尋址為14位,列尋
[單片機(jī)]
<font color='red'>s5pv210</font>——初始化SDRAM
S5PV210 | 微處理器啟動(dòng)流程
S5PV210啟動(dòng)概述 S5PV210支持從多種設(shè)備啟動(dòng),如OneNAND、NAND、MMC等。S5PV210的啟動(dòng)框圖如圖所示,BL0是指S5PV210微處理器的IROM中固化的啟動(dòng)代碼,BL1是指在IRAM自動(dòng)從外存儲(chǔ)器(NAND、SD、USB)中復(fù)制的uboot.bin二進(jìn)制文件的頭16KB代碼,BL2是指在代碼重定向后在內(nèi)存中執(zhí)行的UBOOT的完整代碼。 三者之間的關(guān)系是:BL0將BL1加載到IRAM,然后BL1在IRAM中運(yùn)行并將BL2加載到SDRAM,BL2加載嵌入式操作系統(tǒng)。BL是BootLoader的簡(jiǎn)稱。 S5PV210上電將從IROM處執(zhí)行固化的啟動(dòng)代碼BL0,它對(duì)時(shí)鐘等初始化、對(duì)啟動(dòng)設(shè)置進(jìn)行判斷,
[單片機(jī)]
<font color='red'>S5PV210</font> | 微處理器啟動(dòng)流程
ARM芯片學(xué)習(xí)(S5PV210開(kāi)發(fā))——代碼重定位
什么是代碼重定位 代碼重定位就是代碼的復(fù)制或者說(shuō)搬移,把在A地址存放的代碼復(fù)制一份到B地址,至于A、B地址,程序員是事先知道的,可以通過(guò)芯片的數(shù)據(jù)手冊(cè)查詢得知。并且由于某些條件的限制,有時(shí)候不能直接將代碼下載到B地址,只能先下載到A地址,然后運(yùn)行代碼,將代碼復(fù)制到B地址接著運(yùn)行。 為什么要代碼重定位 重定位不是為了優(yōu)化性能,而是由于硬件的限制,不得不進(jìn)行重定位。試想一下,我們拿到一臺(tái)設(shè)備,只要上電就可以運(yùn)行代碼,那代碼必定要先保存在設(shè)備的存儲(chǔ)介質(zhì)中,并且是掉電不丟失的存儲(chǔ)介質(zhì),具有掉電不丟失性質(zhì)的存儲(chǔ)介質(zhì)有磁盤(pán)、flash等,但是這些都不能用作內(nèi)存,內(nèi)存都是RAM。這就矛盾了,內(nèi)存是掉電丟失,必然不能用于存儲(chǔ)代碼,但是代碼又必
[單片機(jī)]
Linux驅(qū)動(dòng):s3c2440 lcd 驅(qū)動(dòng)分析》
一,前言 s3c2440 lcd 驅(qū)動(dòng)分析,涉及到的內(nèi)容有,LCD圖像顯示原理、s3c2440的LCD控制器的操作、LCD驅(qū)動(dòng)使用平臺(tái)總線-設(shè)備-驅(qū)動(dòng)模型的實(shí)例、LCD相關(guān)參數(shù)的設(shè)置、fb字符設(shè)備驅(qū)動(dòng)實(shí)例、framebuffer的注冊(cè)和管理、以及一次LCD顯示的完整過(guò)程分析。 二,LCD原理和硬件分析 2.1 LCD原理解析 SDRAM:在SDRAM中申請(qǐng)了一塊連續(xù)的內(nèi)存作為L(zhǎng)CD顯示數(shù)據(jù)的存儲(chǔ),叫做顯存(framebuffer)。 LCD控制器:LCD控制器通過(guò)硬件電路和LCD屏連接。 LCD屏:作為一個(gè)外設(shè)通過(guò)硬件電路和MCU(引腳配置為L(zhǎng)CD引腳)連接。 圖像在LCD屏上顯示,可以看成是LCD控制器先從顯存中取出一幀圖
[單片機(jī)]
S5PV210開(kāi)發(fā)板刷機(jī)(SD卡uboot、串口+USB-OTG刷機(jī)方法)
一、介紹 九鼎的S5PV210開(kāi)發(fā)板,在出廠前已經(jīng)默認(rèn)刷了Android4.0系統(tǒng)。如果需要刷其它的系統(tǒng)或者是由于系統(tǒng)問(wèn)題無(wú)法啟動(dòng)時(shí),就需要對(duì)板子刷機(jī)。 其實(shí),刷機(jī)是對(duì)210開(kāi)發(fā)板的一個(gè)基礎(chǔ)學(xué)習(xí),目的是實(shí)踐之前學(xué)過(guò)的系統(tǒng)啟動(dòng)過(guò)程,進(jìn)一步的了解系統(tǒng)的啟動(dòng)過(guò)程,加深理解(uboot、kernel、rom)。 二、準(zhǔn)備工作 (1)工作平臺(tái):WIN8.1 (2)驅(qū)動(dòng)工具:USB轉(zhuǎn)串口、USB-OTG驅(qū)動(dòng)。 1、USB轉(zhuǎn)串口:我們使用的是優(yōu)越者 usb轉(zhuǎn)串口線。插在電腦上后,電腦會(huì)自動(dòng)按安裝驅(qū)動(dòng)。 2、USB-OTG驅(qū)動(dòng):需要在進(jìn)入fastboot模式下進(jìn)行,在后續(xù)的步驟中,會(huì)詳細(xì)講解。 (3)刷機(jī)文件
[單片機(jī)]
TQ210——S5PV210 uboot頂層config.mk分析
# # (C) Copyright 2000-2006 # Wolfgang Denk, DENX Software Engineering, wd@denx.de. # # See file CREDITS for list of people who contributed to this # project. # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License as # published by the Free Soft
[單片機(jī)]
TQ210 —— s5pv210 mem_setup.S分析
/* * Originates from Samsung's u-boot 1.1.6 port to S5PC1xx * * Copyright (C) 2009 Samsung Electrnoics * Inki Dae inki.dae@samsung.com * Heungjun Kim riverful.kim@samsung.com * Minkyu Kang mk7.kang@samsung.com * Kyungmin Park kyungmin.park@samsung.com * * See file CREDITS for list of people who contribute
[單片機(jī)]
OK6410A 開(kāi)發(fā)板 (六) 3 OK6410A linux-5.11編譯分析
訂閱專欄 linux編譯對(duì)host環(huán)境的要求 Documentation/process/changes.rst 編譯過(guò)程 1. 雜項(xiàng) SYSHDR arch/arm/include/generated/uapi/asm/unistd-common.h sh './arch/arm/tools/syscallhdr.sh' 'arch/arm/tools/syscall.tbl' 'arch/arm/include/generated/uapi/asm/unistd-common.h' 'common' '' '__NR_SYSC
[單片機(jī)]
小廣播
設(shè)計(jì)資源 培訓(xùn) 開(kāi)發(fā)板 精華推薦

最新單片機(jī)文章

 
EEWorld訂閱號(hào)

 
EEWorld服務(wù)號(hào)

 
汽車開(kāi)發(fā)圈

 
機(jī)器人開(kāi)發(fā)圈

電子工程世界版權(quán)所有 京ICP證060456號(hào) 京ICP備10001474號(hào)-1 電信業(yè)務(wù)審批[2006]字第258號(hào)函 京公網(wǎng)安備 11010802033920號(hào) Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 湟中县| 芒康县| 文成县| 永和县| 屏山县| 浮梁县| 东乌| 乳山市| 衢州市| 龙州县| 灵台县| 墨玉县| 宿州市| 仙桃市| 炉霍县| 黎平县| 靖远县| 武乡县| 淳安县| 澄迈县| 潮安县| 遂溪县| 郴州市| 清新县| 东源县| 柳江县| 大安市| 北宁市| 怀来县| 尼勒克县| 莫力| 邵阳市| 卢氏县| 高唐县| 富裕县| 灵丘县| 南投市| 三亚市| 永川市| 正蓝旗| 温泉县|