0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

以s3c2440為例的arm芯片的啟動(dòng)過程

電子設(shè)計(jì) ? 來源:TOMORROW 星辰 ? 作者:TOMORROW 星辰 ? 2020-12-02 14:13 ? 次閱讀

arm 嵌入式芯片的啟動(dòng)過程對(duì)于嵌入式菜鳥來說其實(shí)是很復(fù)雜的,很多人都是一知半解,存在很多誤區(qū)。在筆者看來,要想真正了解這一啟動(dòng)過程必須要首先了解存儲(chǔ)器的區(qū)別與聯(lián)系,參考文章:各種主流半導(dǎo)體存儲(chǔ)器的區(qū)別與聯(lián)系。還需要了解程序是如何編譯鏈接和執(zhí)行的。

本文將以s3c2440為例詳細(xì)講述 arm 芯片的啟動(dòng)過程。s3c2440支持兩種啟動(dòng)模式:NAND FLASH 啟動(dòng)和非 NAND FLASH 啟動(dòng)(一般是NOR FLASH 啟動(dòng),并且可以配置數(shù)據(jù)寬度),通過 OM1、OM0 兩個(gè)管腳來控制。

NAND FLASH啟動(dòng)過程

當(dāng) OM1、OM0 兩個(gè)管腳都為低電平時(shí),CPU 就被配置成了 NAND FLASH 啟動(dòng)。此時(shí) CPU 內(nèi)部的 4KB 的 SRAM 就會(huì)被映射到 nGCS0 的空間(起始地址為 0x00000000),上電時(shí) CPU 會(huì)自動(dòng)將 NAND FLASH 中前 4KB 的數(shù)據(jù)拷貝到該片內(nèi) SRAM。然后 CPU 從內(nèi)部 SRAM 的 0x00000000 地址開始執(zhí)行程序,對(duì)系統(tǒng)進(jìn)行相應(yīng)的初始化,為后續(xù) 4Kb 以外的程序執(zhí)行做準(zhǔn)備。

也就是說,CPU 啟動(dòng)過程之時(shí)能夠執(zhí)行的程序最多只能占用 4Kb 大小的空間。如果需要執(zhí)行更多程序,則需要在 4Kb 的程序里完成對(duì) DRAM 的初始化(DRAM 在使用前必須初始化),配置好棧空間,并將需要執(zhí)行的程序拷貝到 DRAM 中,然后跳轉(zhuǎn)到 DRAM 中繼續(xù)執(zhí)行。

啟動(dòng)過程之所以要將 NAND FLASH 中的代碼先拷貝到內(nèi)部 SRAM 再執(zhí)行,是因?yàn)?NAND FLASH 需要通過 NAND FLASH 控制器來進(jìn)行訪問,不能通過 CPU 的總線直接訪問,所以不能夠執(zhí)行程序。

NOR FLASH啟動(dòng)過程

當(dāng)系統(tǒng)配置為此方式啟動(dòng)時(shí),CPU 內(nèi)部 SRAM 則不再被映射到地址空間中,此時(shí)被映射到 nGCS0(起始地址為 0x00000000)地址空間的應(yīng)該是外部的 NOR FLASH(存放啟動(dòng)代碼的存儲(chǔ)器)。系統(tǒng)上電或者復(fù)位時(shí),CPU 直接從 0x00000000 地址(也就是 NOR FLASH 的起始地址)開始執(zhí)行代碼。相比 NAND FLASH 啟動(dòng),NOR FLASH 的啟動(dòng)代碼可以達(dá)到 128Mb 之大(s3c2440)。

之所以可以在 NOR FLASH 上直接執(zhí)行代碼,是因?yàn)?NOR FLASH 具有類似 RAM 的訪問接口,可以通過 CPU 總線直接進(jìn)行隨機(jī)讀取,但不支持隨機(jī)寫操作。因此,這些啟動(dòng)代碼里是不可有 C 語言的,應(yīng)為程序里必然會(huì)有變量(需要寫),需要??臻g調(diào)用函數(shù)(同樣需要寫),而匯編程序則是可以避免對(duì)內(nèi)存空間的寫操作的。

那么是不是說,如果是 NOR FLASH 啟動(dòng)就不能有 C 程序了呢?當(dāng)然不是的,不要忘了還有 DRAM 的存在。當(dāng) NOR FLASH 啟動(dòng)過程完成了對(duì) DRAM 的初始化,??臻g的配置之后就可去調(diào)用 C 語言的程序了。

這就是 arm 芯片的啟動(dòng)過程了,其實(shí)在啟動(dòng)過程中的最開始的那些啟動(dòng)代碼里還有很多地方值得細(xì)細(xì)斟酌的,也會(huì)有很多疑問,這個(gè)時(shí)候就應(yīng)該去了解程序是怎么編譯鏈接的、又是如何執(zhí)行的。
編輯:hfy

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • ARM
    ARM
    +關(guān)注

    關(guān)注

    134

    文章

    9005

    瀏覽量

    366018
  • NAND
    +關(guān)注

    關(guān)注

    16

    文章

    1661

    瀏覽量

    135879
  • 嵌入式芯片
    +關(guān)注

    關(guān)注

    4

    文章

    230

    瀏覽量

    27641
  • S3C2440
    +關(guān)注

    關(guān)注

    4

    文章

    132

    瀏覽量

    38782
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    PA3113D2在系統(tǒng)啟動(dòng)過程中會(huì)出現(xiàn)一個(gè)POP聲,請(qǐng)問是什么原因造成的?

    請(qǐng)教各位高手,我現(xiàn)在CODEC芯片用的是WOLFSON WM8960,OPA用的是TI PA3113D2,上電瞬間的POP聲已經(jīng)解決,但是在系統(tǒng)啟動(dòng)過程中(快啟動(dòng)完成時(shí))還會(huì)出現(xiàn)一個(gè)POP聲,請(qǐng)問是什么原因造成的?
    發(fā)表于 10-18 06:39

    使用pahomqtt啟動(dòng)過程中pipe_fops_open時(shí)出現(xiàn)rt_condvar_timedwait ,如何解決?

    在使用pahomqtt 啟動(dòng)過程中pipe_fops_open 時(shí)出現(xiàn)rt_condvar_timedwait 死等,而RTT 5.0則可以。請(qǐng)問該如何解決?
    發(fā)表于 09-26 07:11

    YTM32的HA系列微控制器啟動(dòng)過程詳解

    見,確保信息安全的需要。然而,開發(fā)者在自行編譯固件時(shí),需要配合BOOT ROM中的bootloader,才能正常地引導(dǎo)到用戶應(yīng)用程序,完成啟動(dòng)過程。
    的頭像 發(fā)表于 07-15 09:24 ?314次閱讀
    YTM32的HA系列微控制器<b class='flag-5'>啟動(dòng)過程</b>詳解

    基于S3C2440和專用DSP的嵌入式四軸運(yùn)動(dòng)控制器

     PCL6045BL是一種新型專用DSP運(yùn)動(dòng)控制芯片,它具有強(qiáng)大的數(shù)據(jù)處理能力和較高的運(yùn)行速度,可以實(shí)現(xiàn)高精度的多軸伺服控制。解決精密制造對(duì)低成本、可移植性強(qiáng)的通用型多軸數(shù)控系統(tǒng)的迫切需求,文中給出一種基于ARM 微處理器
    發(fā)表于 05-03 10:44 ?363次閱讀
    基于<b class='flag-5'>S3C2440</b>和專用DSP的嵌入式四軸運(yùn)動(dòng)控制器

    STM32WBA Nucleo-64設(shè)置主頻100M,發(fā)現(xiàn)啟動(dòng)過程中卡死在PWR_VOSR_VOSRDY,為什么?

    使用ST官方的STM32WBA Nucleo-64板子, 當(dāng)設(shè)置主頻100M,發(fā)現(xiàn)啟動(dòng)過程中卡死在PWR_VOSR_VOSRDY; 設(shè)置主頻16MHz的時(shí)候,可以正常完成初始化。 使用的是CodeMx生成的工程 這是啥原因呢
    發(fā)表于 03-14 08:28

    電源芯片啟動(dòng)過沖有哪些影響?怎么測(cè)試電源芯片啟動(dòng)過沖?

    電源芯片啟動(dòng)過沖過大會(huì)對(duì)芯片中的元件造成損害,例如電容、電感等。這些元件在受到過沖電壓的作用時(shí)可能會(huì)出現(xiàn)短路或開路等現(xiàn)象,從而造成芯片損害,影響
    的頭像 發(fā)表于 12-27 15:48 ?828次閱讀
    電源<b class='flag-5'>芯片</b><b class='flag-5'>啟動(dòng)過</b>沖有哪些影響?怎么測(cè)試電源<b class='flag-5'>芯片</b>的<b class='flag-5'>啟動(dòng)過</b>沖?

    S3C2440的SPI0與AD7739通信,S3C2440作為主機(jī),請(qǐng)問波特率應(yīng)根據(jù)什么設(shè)置,應(yīng)設(shè)置多少?

    我用的S3C2440的SPI0與AD7739通信,S3C2440作為主機(jī),請(qǐng)問波特率應(yīng)根據(jù)什么設(shè)置,應(yīng)設(shè)置多少?問題比較低級(jí),請(qǐng)勿見笑。
    發(fā)表于 12-22 06:56

    stm32啟動(dòng)過程詳解

    STM32啟動(dòng)過程詳解 近年來,STM32微控制器在嵌入式系統(tǒng)中的應(yīng)用越來越廣泛。STM32微控制器具有高性能、低功耗、易擴(kuò)展和豐富的外設(shè)接口等優(yōu)勢(shì)。而要讓STM32微控制器正常工作,首先要了解它
    的頭像 發(fā)表于 12-08 15:47 ?1349次閱讀

    kernel到android核心啟動(dòng)過程

    總結(jié)一個(gè)圖:kernel 到android核心啟動(dòng)過程 kernel鏡像執(zhí)行跳轉(zhuǎn)到start_kernel開始執(zhí)行,在rest_init會(huì)創(chuàng)建兩個(gè)kernel 進(jìn)程(線程),其分別是
    的頭像 發(fā)表于 12-04 16:59 ?766次閱讀
    kernel到android核心<b class='flag-5'>啟動(dòng)過程</b>

    logd的啟動(dòng)過程和內(nèi)容

    logd作為native service,系統(tǒng)啟動(dòng)過程通過讀取rc文件來啟動(dòng),相關(guān)的屬性定義在如下logd.rc文件中。 2.2.1 logd啟動(dòng)過程 logd啟動(dòng)后會(huì)存在三個(gè)用來服務(wù)
    的頭像 發(fā)表于 11-23 16:54 ?742次閱讀
    logd的<b class='flag-5'>啟動(dòng)過程</b>和內(nèi)容

    在Linux啟動(dòng)過程中, 想將PC13 pin配置輸出/拉起,如何修改設(shè)備樹?

    在 Linux 啟動(dòng)過程中, 我想將 PC13 pin 配置輸出/ 拉起 。 我該如何修改設(shè)備樹 。
    發(fā)表于 11-13 06:21

    ARM應(yīng)用系統(tǒng)開發(fā)詳解——基于S3C4510B的系統(tǒng)設(shè)計(jì)

    電子發(fā)燒友網(wǎng)站提供《ARM應(yīng)用系統(tǒng)開發(fā)詳解——基于S3C4510B的系統(tǒng)設(shè)計(jì).rar》資料免費(fèi)下載
    發(fā)表于 11-08 15:35 ?0次下載
    <b class='flag-5'>ARM</b>應(yīng)用系統(tǒng)開發(fā)詳解——基于<b class='flag-5'>S3C</b>4510B的系統(tǒng)設(shè)計(jì)

    ATF的啟動(dòng)過程介紹

    ATF的啟動(dòng)過程根據(jù)ARMv8的運(yùn)行模式(AArch32/AArch64)會(huì)有所不同,但基本一致。 在AArch32中是不會(huì)去加載bl31而是將EL3或者M(jìn)onitor模式的運(yùn)行代碼保存在bl32中
    的頭像 發(fā)表于 11-07 15:48 ?1140次閱讀
    ATF的<b class='flag-5'>啟動(dòng)過程</b>介紹

    ARM64位與ARM32位OP-TEE啟動(dòng)過程的差異

    ARM32的OP-TEE與ARM64的OP-TEE啟動(dòng)過程大致相同。ARM64的OP-TEE的_start函數(shù)定義在generic_entry_a64.
    的頭像 發(fā)表于 11-07 15:12 ?657次閱讀

    一款基于S3C2440A的銀行評(píng)價(jià)器的設(shè)計(jì)

    電子發(fā)燒友網(wǎng)站提供《一款基于S3C2440A的銀行評(píng)價(jià)器的設(shè)計(jì).pdf》資料免費(fèi)下載
    發(fā)表于 10-27 11:46 ?0次下載
    一款基于<b class='flag-5'>S3C2440</b>A的銀行評(píng)價(jià)器的設(shè)計(jì)