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

歷史上的今天

今天是:2025年03月31日(星期一)

2020年03月31日 | ARMv7:Linux Kernel引導

發布者:AdventureSeeker 來源: eefocus關鍵字:ARMv7  Linux  Kernel  內核鏡像 手機看文章 掃描二維碼
隨時隨地手機看文章

1.如果內核鏡像是壓縮的,需要解壓縮,引導的第一步是從解壓縮開始:archarmbootcompressedhead.S


2.解壓縮之后,內核鏡像已經存在于ARM中了,下面開始運行,內核開始運行是從/arch/arm/kernel/head.S開始的,入口代碼為:

1

2

3

4

5

6

7

8

    .arm

    __HEAD

ENTRY(stext)

                        

 THUMB( adr r9, BSYM(1f)    )   @ Kernel is always entered in ARM.

 THUMB( bx  r9      )   @ If this is a Thumb-2 kernel,

 THUMB( .thumb          )   @ switch to Thumb now.

 THUMB(1:           )

這是由/arch/arm/kernel/vmlinux.lds.S決定的。告訴我們入口點為stext.

1

2

OUTPUT_ARCH(arm)

ENTRY(stext)

3.順序執行head.S的代碼。

1

2

3

4

5

6

7

8

 ldr r13, =__switch_data          @ address to jump to after

                                  @ mmu has been enabled

 adr lr, BSYM(1f)               @ return (PIC) address

 mov r8, r4                    @ set TTBR1 to swapper_pg_dir

 ARM(   add pc, r10, #PROCINFO_INITFUNC )

 THUMB( add r12, r10, #PROCINFO_INITFUNC    )

 THUMB( mov pc, r12             )

1:  b   __enable_mmu

代碼line1將__switch_data的地址賦給r13,在__enable_mmu(代碼line8)執行成功后跳轉到__switch_data執行。


因為是.arm環境,所以執行代碼ARM(   add pc, r10, #PROCINFO_INITFUNC ),即跳轉到__cpu_flush執行。

1

2

3

4

/arch/arm/kernel/head.S 

mrc p15, 0, r9, c0, c0      @ get processor id

bl  __lookup_processor_type     @ r5=procinfo r9=cpuid

movs    r10, r5             @ invalid processor (r5=0)?

r10中保存的是proc_info結構體的start address.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

archarmincludeasmProcinfo.h

struct proc_info_list {

    unsigned int        cpu_val;

    unsigned int        cpu_mask;

    unsigned long       __cpu_mm_mmu_flags; /* used by head.S */

    unsigned long       __cpu_io_mmu_flags; /* used by head.S */

    unsigned long       __cpu_flush;        /* used by head.S */

    const char      *arch_name;

    const char      *elf_name;

    unsigned int        elf_hwcap;

    const char      *cpu_name;

    struct processor    *proc;

    struct cpu_tlb_fns  *tlb;

    struct cpu_user_fns *user;

    struct cpu_cache_fns    *cache;

};

1

2

include/generated/asm-offsets.h

#define PROCINFO_INITFUNC 16

4.__cpu_flush

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

arch/arm/mm/proc-v7.S

             

__v7_ca9mp_proc_info:

    .long   0x410fc090

    .long   0xff0ffff0

    __v7_proc __v7_ca9mp_setup

                 

                 

    .macro __v7_proc initfunc, mm_mmuflags = 0, io_mmuflags = 0, hwcaps = 0

    ALT_SMP(.long   PMD_TYPE_SECT | PMD_SECT_AP_WRITE | PMD_SECT_AP_READ | 

            PMD_SECT_AF | PMD_FLAGS_SMP | mm_mmuflags)

    ALT_UP(.long    PMD_TYPE_SECT | PMD_SECT_AP_WRITE | PMD_SECT_AP_READ | 

            PMD_SECT_AF | PMD_FLAGS_UP | mm_mmuflags)

    .long   PMD_TYPE_SECT | PMD_SECT_AP_WRITE | 

        PMD_SECT_AP_READ | PMD_SECT_AF | io_mmuflags

    W(b)    initfunc

             

         

__v7_ca5mp_setup:

__v7_ca9mp_setup:

    mov r10, #(1 << 0)            @ TLB ops broadcasting

    b   1f

__v7_ca7mp_setup:

__v7_ca15mp_setup:

    mov r10, #0

不同架構的CPU,針對的文件不同,對于ARMV7架構的cpu而言,對應的為proc-v7.S。從code中可以看出,其對應俄proc_info為__v7_ca9mp_proc_info,所以偏移16后,就是執行跳轉代碼    b   1f。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

    __CPUINIT

        

/*

 *  __v7_setup

 *

 *  Initialise TLB, Caches, and MMU state ready to switch the MMU

 *  on.  Return in r0 the new CP15 C1 control register setting.

 *

 *  This should be able to cover all ARMv7 cores.

 *

 *  It is assumed that:

 *  - cache type register is implemented

 */

__v7_ca5mp_setup:

__v7_ca9mp_setup:

    mov r10, #(1 << 0)            @ TLB ops broadcasting

    b   1f

__v7_ca7mp_setup:

__v7_ca15mp_setup:

    mov r10, #0

1:

#ifdef CONFIG_SMP

    ALT_SMP(mrc p15, 0, r0, c1, c0, 1)

    ALT_UP(mov  r0, #(1 << 6))        @ fake it for UP

    tst r0, #(1 << 6)         @ SMP/nAMP mode enabled?

    orreq   r0, r0, #(1 << 6)     @ Enable SMP/nAMP mode

    orreq   r0, r0, r10         @ Enable CPU-specific SMP bits

    mcreq   p15, 0, r0, c1, c0, 1

#endif

__v7_setup:

5.__v7_setup->__enable_mmu->__turn_mmu_on

1

2

3

4

5

6

7

8

__turn_mmu_on:

    mov r0, r0

    mcr p15, 0, r0, c1, c0, 0       @ write control reg

    mrc p15, 0, r3, c0, c0, 0       @ read id reg

    mov r3, r3

    mov r3, r3

    mov pc, r13

ENDPROC(__turn_mmu_on)

r13保存的是__switch_data的地址,mov pc,r13跳轉到__switch_data.


6.__mmap_switched

<sub id="0cymx"><rt id="0cymx"></rt></sub>

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

    .type   __switch_data, %object

__switch_data:

    .long   __mmap_switched

    .long   __data_loc          @ r4

    .long   _data               @ r5

    .long   __bss_start         @ r6

    .long   _end                @ r7

    .long   processor_id            @ r4

    .long   __machine_arch_type     @ r5

    .long   __atags_pointer         @ r6

[1] [2]
關鍵字:ARMv7  Linux  Kernel  內核鏡像 引用地址:ARMv7:Linux Kernel引導

上一篇:S5PV210的LED應用(一)
下一篇:cortex-a8 S5PC100中斷機制

0

推薦閱讀

日本經濟新聞(中文版:日經中文網)獲悉,正在進行經營重建的日本顯示器公司(JDI)討論籌集約500億日元規模的資金。 除了實施超過300億日元的第三方配股增資外,還將通過出售資產等舉措籌集資金。 計劃接受日本國內外多家投資基金的出資。 面向美國蘋果公司預定今年秋季上市的新款智能手機用液晶面板,日本顯示器獲得了大量訂單。 將把籌集的資金用...
如今,我國將機器人視為“制造業皇冠頂端的明珠”。為改善人口紅利因素帶來的現有生產力不足,促進制造業水平從大國向強國邁進,推動國家綜合實力和經濟發展水平提升,我國正在大力推動機器人產業發展。 2019年深圳機器人產業發展優勢淺析 2014年,伴隨著“中國制造2025”這一概念的提出,我國確立了三步走的制造強國戰略,機器人作為其中一環,其發...
1.向量中斷概述S5PC100集成了3個向量中斷控制器(后文用VIC來表示),采用的是ARM基于PrimeCell技術下的PL192核心,另外還包括了3個TZIC,即針對于TrustZone技術所涉及的中斷控制器(后文都用TZIC表示),其核心為SP890。S5PC100下支持94個中斷源,其中TZIC為TrustZone單獨設計以了一個安全軟件中斷接口,它提供了基于安全控制技術的nFIQ中斷以及屏蔽來自非...
3月29日下午,國家科技部黃衛副部長一行在澳門特區政府經濟及科技發展局代表謝永強廳長陪同下對芯耀輝科技(澳門)有限公司(以下簡稱“芯耀輝”)進行實地調研考察,聽取了芯耀輝澳門負責人、集團聯席CEO余成斌教授及集團董事長兼聯席CEO曾克強對企業科技創新成果、澳門集成電路產業發展以及澳珠產業合作的情況介紹,勉勵企業充分發揮技術優勢,集成創新...

史海拾趣

問答坊 | AI 解惑

------------------------------------------------------------

Http://www.big-bit.com 2006年08月02日 09:22          市場應用對電源管理芯片提出了很多技術要求:       第一,數字消費電子產品越來越注重便攜和小巧 ...…

查看全部問答∨

用“卡爾曼濾波器”來處理“加速度計數據”(加速度,陀螺儀調試)

關鍵詞:SCA3000,ADIS16255,加速度計、陀螺儀數據計算處理算法,卡爾曼濾波器、擴展卡爾曼濾波器。關鍵詞:加速度計和陀螺儀驅動,SCA3000,ADIS16250,ADIS16255,溫度、重力加速度、角速度計算方法,SPI總線,SCA3000 模式設置(Mode)、參數設 ...…

查看全部問答∨

有一個問題, 應用(APP)的視頻數據如何送往 TD(3G)模塊?

有一個問題, 應用(APP)的視頻數據如何送往 TD(3G)模塊?…

查看全部問答∨

NANDFLASH的操作思路

我開發用了一個nandflash做數據存儲。但是nandflash只能是頁擦寫。部分數據需要重復重復擦寫,請問這部分操作的邏輯,應該是什么樣的呢…

查看全部問答∨

ST單片機有16位的嗎?

                                 面臨單片機選型,工業級的…

查看全部問答∨

大家有在c430里定義過extern外部變量嗎?

在C語言中,如果程序由多個源文件組成,那么在一個文件B中想引用另一個文件A中已經定義的外部變量(例如 :char v),只需在文件B中寫: extern v; (1) 就可以了,不知道C430中可不可以這樣用?我試了一下,debug后報了一個warning: W ...…

查看全部問答∨

大家幫看看這個offer,如何啊?

上個月申請了富士通半導體公司的通變頻方案項目開發和支持FAE職位,主要針對180度無傳感器矢量變頻的控制方案,負責整個變頻項目設計周期中技術相關工作支持,包括軟硬件調試和系統調試。目前一面通過,大家覺得這個offer如何?第二面需要準備什么 ...…

查看全部問答∨

轉讓天嵌科技ARM9開發板/s3c2440+4.3寸LCD 14張DVD資料

本帖最后由 ddllxxrr 于 2016-1-7 17:05 編輯 …

查看全部問答∨

max6675程序問題

以下是網上的一個程序,感覺最低位D0沒有讀到,因為MAX6675是在下降沿讀取數據的,不知道我說的對不對? void delay_us(uchar m) {   while(m--); } uint Read_6675() {   uchar i=0;   uint temp=0; &nbs ...…

查看全部問答∨

【學習心得DLP】DLP介紹

DLP是“Digital Light Procession”的縮寫,即為數字光處理,也就是說這種技術要先把影像信號經過數字處理,然后再把光投影出來。它是基于TI(美國德州儀器)公司開發的數字微鏡元件——DMD(Digital Micromirror Device)來完成可視數字信息顯示的 ...…

查看全部問答∨
小廣播
添点儿料...
无论热点新闻、行业分析、技术干货……
設計資源 培訓 開發板 精華推薦

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

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

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 尚志市| 甘德县| 甘泉县| 蓝山县| 颍上县| 碌曲县| 崇州市| 图木舒克市| 绥化市| 息烽县| 英超| 喜德县| 平谷区| 尉氏县| 张掖市| 南昌市| 南漳县| 罗平县| 错那县| 托克逊县| 常山县| 莱西市| 东莞市| 六盘水市| 历史| 额尔古纳市| 开封县| 农安县| 建湖县| 延吉市| 阿巴嘎旗| 扬州市| 托里县| 和政县| 延川县| 秦皇岛市| 贵南县| 新邵县| 客服| 平山县| 岗巴县|
<strong id="0cymx"><ruby id="0cymx"></ruby></strong>

<sub id="0cymx"></sub>