![第三講Linux內(nèi)存空間分配_第1頁](http://file3.renrendoc.com/fileroot3/2021-11/6/b49180e0-d4d9-4040-96e5-57fdc5ccc70e/b49180e0-d4d9-4040-96e5-57fdc5ccc70e1.gif)
![第三講Linux內(nèi)存空間分配_第2頁](http://file3.renrendoc.com/fileroot3/2021-11/6/b49180e0-d4d9-4040-96e5-57fdc5ccc70e/b49180e0-d4d9-4040-96e5-57fdc5ccc70e2.gif)
![第三講Linux內(nèi)存空間分配_第3頁](http://file3.renrendoc.com/fileroot3/2021-11/6/b49180e0-d4d9-4040-96e5-57fdc5ccc70e/b49180e0-d4d9-4040-96e5-57fdc5ccc70e3.gif)
![第三講Linux內(nèi)存空間分配_第4頁](http://file3.renrendoc.com/fileroot3/2021-11/6/b49180e0-d4d9-4040-96e5-57fdc5ccc70e/b49180e0-d4d9-4040-96e5-57fdc5ccc70e4.gif)
![第三講Linux內(nèi)存空間分配_第5頁](http://file3.renrendoc.com/fileroot3/2021-11/6/b49180e0-d4d9-4040-96e5-57fdc5ccc70e/b49180e0-d4d9-4040-96e5-57fdc5ccc70e5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、數(shù)字集成電路設(shè)計與系統(tǒng)應(yīng)用專業(yè)數(shù)字集成電路設(shè)計與系統(tǒng)應(yīng)用專業(yè)Porting Embedded Linux數(shù)字集成電路設(shè)計與系統(tǒng)應(yīng)用專業(yè)數(shù)字集成電路設(shè)計與系統(tǒng)應(yīng)用專業(yè)All rights reserveduBUAA All rights reserved;uThe information contained in this document is subject to change without notice ;數(shù)字集成電路設(shè)計與系統(tǒng)應(yīng)用專業(yè)數(shù)字集成電路設(shè)計與系統(tǒng)應(yīng)用專業(yè)內(nèi)容提綱nLinuxLinux內(nèi)核源碼的層次關(guān)系內(nèi)核源碼的層次關(guān)系nLinux Linux 啟動流程啟動流程以以 arm a
2、rm 平臺為例說明平臺為例說明 Linux Linux 啟動流程和相關(guān)代碼啟動流程和相關(guān)代碼n移植移植 Linux Linux 的相關(guān)工作的相關(guān)工作n移植移植 Linux Linux 舉例舉例基本的平臺相關(guān)代碼基本的平臺相關(guān)代碼修改基本的平臺相關(guān)代碼修改基本的平臺相關(guān)代碼數(shù)字集成電路設(shè)計與系統(tǒng)應(yīng)用專業(yè)數(shù)字集成電路設(shè)計與系統(tǒng)應(yīng)用專業(yè)LinuxLinux內(nèi)核源碼的層次關(guān)系內(nèi)核源碼的層次關(guān)系體系結(jié)構(gòu)、平臺相關(guān)代碼arch/Arch/arm/mach-s3c6410所有的驅(qū)動代碼 (drivers/usb/, etc.) drivers/Linux 內(nèi)核基本源碼kernel/混合庫代碼 (zlib,
3、crc32.) lib/文件系統(tǒng)代碼 (fs/ext3/, etc.) fs/進程通訊相關(guān)代碼ipc/內(nèi)存管理代碼mm/網(wǎng)絡(luò)協(xié)議代碼net/內(nèi)核頭文件體系結(jié)構(gòu)相關(guān)頭文件Linux內(nèi)核基本的頭文件(保留類型和配置)include/:include/asm-include/linux數(shù)字集成電路設(shè)計與系統(tǒng)應(yīng)用專業(yè)數(shù)字集成電路設(shè)計與系統(tǒng)應(yīng)用專業(yè)boot包括啟動內(nèi)核所使用的部分或全部平臺特有代碼。kernel存放支持體系結(jié)構(gòu)特有的諸如信號處理和SMP之類特征的實現(xiàn)。lib存放高速的體系結(jié)構(gòu)特有的諸如strlen和memcpy之類的通用函數(shù)的實現(xiàn)。mm存放體系結(jié)構(gòu)特有的內(nèi)存管理程序的實現(xiàn)。math-em
4、u模擬FPU的代碼。對于ARM處理器來說,此目錄用mach-xxx代替。 arch/arm 目錄數(shù)字集成電路設(shè)計與系統(tǒng)應(yīng)用專業(yè)數(shù)字集成電路設(shè)計與系統(tǒng)應(yīng)用專業(yè)包括編譯核心所需要的大部分頭文件,例如與平臺無關(guān)的頭文件在include/linux子目錄下 不同的平臺需要的頭文件會有所不同,因此該目錄和arch目錄一樣,按平臺劃分了多個子目錄。 include目錄數(shù)字集成電路設(shè)計與系統(tǒng)應(yīng)用專業(yè)數(shù)字集成電路設(shè)計與系統(tǒng)應(yīng)用專業(yè)內(nèi)核的啟動流程內(nèi)核的啟動流程數(shù)字集成電路設(shè)計與系統(tǒng)應(yīng)用專業(yè)數(shù)字集成電路設(shè)計與系統(tǒng)應(yīng)用專業(yè)啟動流程啟動流程第一個用戶空間程序-配置用戶環(huán)境和執(zhí)行服務(wù)進程Kernel-內(nèi)核自解壓(zIm
5、age)-初始化靜態(tài)編譯進內(nèi)核的驅(qū)動模塊 (needed to access the root filesystem) -掛載根文件系統(tǒng) (needed to access and run userspace programs) -直接執(zhí)行第一個用戶空間程序Bootloader-硬件上電后跳到一個固定位置執(zhí)行相應(yīng)的代碼-初始化相應(yīng)的設(shè)備 (local storage, network, removable media) -加載內(nèi)核的代碼到內(nèi)存-跳到內(nèi)核代碼起始位置執(zhí)行數(shù)字集成電路設(shè)計與系統(tǒng)應(yīng)用專業(yè)數(shù)字集成電路設(shè)計與系統(tǒng)應(yīng)用專業(yè)使用使用 RAMDISK作為根文件系統(tǒng)時的啟動流程作為根文件系統(tǒng)時的
6、啟動流程用戶空間: /sbin/init-運行配置設(shè)備的命令 (if not done yet in the initrd) -啟動系統(tǒng)服務(wù)進程 (daemons, servers)和用戶程序Initrd上用戶空間的 /linuxrc腳步-運行用戶空間的命令,配置設(shè)備(如:網(wǎng)絡(luò)配置,掛載/proc 和 /sys 文件系統(tǒng)) -加載存放在initrd中的內(nèi)核模塊 (drivers), 需要訪問一個新的根文件系統(tǒng).-掛載一個新的根文件系統(tǒng). 切換到新的根文件系統(tǒng)(pivot_root) -運行 /sbin/init (or sometimes a new /linuxrc script) Kern
7、el-內(nèi)核自解壓-初始化靜態(tài)編譯到內(nèi)存中的驅(qū)動模塊 (needed to access the initrd filesystem) -掛載 initrd 作為根文件系統(tǒng)-執(zhí)行根文件系統(tǒng)上的第一個用戶空間程序Bootloader-硬件上電,跳到固定位置去執(zhí)行-初始化相關(guān)硬件 (local storage, network, removable media) -加載內(nèi)核和ramdisk(initrd)到內(nèi)存-執(zhí)行內(nèi)核代碼數(shù)字集成電路設(shè)計與系統(tǒng)應(yīng)用專業(yè)數(shù)字集成電路設(shè)計與系統(tǒng)應(yīng)用專業(yè)內(nèi)核啟動相關(guān)代碼(1) arch/arm/boot/compressed/head.Sstart:wont_overw
8、rite:bl decompress_kernelb call_kernelarch/arm/boot/compressed/misc.cdecompress_kernel() puts(Uncompressing Linux.);gunzip();puts( done, booting the kernel.n);數(shù)字集成電路設(shè)計與系統(tǒng)應(yīng)用專業(yè)數(shù)字集成電路設(shè)計與系統(tǒng)應(yīng)用專業(yè)內(nèi)核啟動相關(guān)代碼(2) arch/arm/kernel/head.SENTRY(stext) _entry:bl _lookup_processor_typebl _lookup_architecture_typebl _
9、create_page_tables _mmap_switched:b SYMBOL_NAME(start_kernel) 數(shù)字集成電路設(shè)計與系統(tǒng)應(yīng)用專業(yè)數(shù)字集成電路設(shè)計與系統(tǒng)應(yīng)用專業(yè)內(nèi)核啟動相關(guān)代碼(3) start_kernel( ) printk(linux_banner);setup_arch(&commaind_line); - arch/arm/kernel/setup.csetup_processor() mdesc = setup_machine(machine_arch_type);MACHINE_START - arch/arm/mach-s3c2410/smdk.cpar
10、se_options(command_line); - init/main.ctrap_init(); - arch/arm/kernel/traps.cinit_IRQ(); - arch/arm/kernel/irq.csched_init(); - kernel/sched.csoftirq_init(); - kernel/softirq.ctime_init(); - arch/arm/kernel/time.c console_init(); - drivers/char/tty_io.c數(shù)字集成電路設(shè)計與系統(tǒng)應(yīng)用專業(yè)數(shù)字集成電路設(shè)計與系統(tǒng)應(yīng)用專業(yè)內(nèi)核啟動相關(guān)代碼(4) init_
11、modules(); - kernel/module.c kmem_cache_init(); - mm/slab.csti();/* interrupt first open */calibrate_delay(); - init/main.cmem_init(); - arch/arm/mm/init.cprintk(POSIX conformance testing by UNIFIXn); smp_init(); - init/main.crest_init(); - init/main.c kernel_thread(init,NULL, CLONE_FS | CLONE_FILES
12、 | CLONE_SIGNAL); - arch/arm/kernel/process.c cpu_idle(); - arch/arm/kernel/process.c數(shù)字集成電路設(shè)計與系統(tǒng)應(yīng)用專業(yè)數(shù)字集成電路設(shè)計與系統(tǒng)應(yīng)用專業(yè)內(nèi)核啟動相關(guān)代碼(5) init() lock_kernel(); do_basic_setup(); - init/main.csock_init(); - net/socket.cstart_context_thread();- kernel/context.cdo_initcalls(); - init/main.cCall functions from _in
13、itcall_start to _initcall_endprepare_namespace(); - init/main.c mount_initrd CONFIG_BLK_DEV_INITRD mount_root(); - init/do_mounts.c mount_devfs_fs (); - fs/devfs/base.cfree_initmem(); - arch/arm/mm/init.cunlock_kernel();數(shù)字集成電路設(shè)計與系統(tǒng)應(yīng)用專業(yè)數(shù)字集成電路設(shè)計與系統(tǒng)應(yīng)用專業(yè)內(nèi)核啟動相關(guān)代碼(6) if (open(/dev/console, O_RDWR, 0) 18)
14、& 0 xfffc,.boot_params= S3C6410_SDRAM_PA + 0 x100,.map_io= smdk6410_map_io,.init_irq= s3c64xx_init_irq,.init_machine= smdk6410_init,.timer= &s3c64xx_timer,MACHINE_ENDMACHINE_START 定義include/asm-arm/mach/arch.hstruct machine_desc “_mach_desc_#_type” is defined數(shù)字集成電路設(shè)計與系統(tǒng)應(yīng)用專業(yè)數(shù)字集成電路設(shè)計與系統(tǒng)應(yīng)用專業(yè)Smdk6410靜態(tài)i
15、o空間映射(1)narch/arm/mach-s3c6410/mach-smdk6410.cstatic struct map_desc smdk6410_iodesc _initdata = /* nothing here yet */;static void _init smdk6410_map_io(void) s3c64xx_init_io(smdk6410_iodesc, ARRAY_SIZE(smdk6410_iodesc);s3c64xx_init_clocks(0);s3c64xx_init_uarts(smdk6410_uartcfgs, ARRAY_SIZE(smdk641
16、0_uartcfgs);數(shù)字集成電路設(shè)計與系統(tǒng)應(yīng)用專業(yè)數(shù)字集成電路設(shè)計與系統(tǒng)應(yīng)用專業(yè)Smdk6410靜態(tài)io空間映射(2)narch/arm/mach-s3c6410/s3c6410.cstatic struct map_desc s3c6410_iodesc _initdata = IODESC_ENT(CLKPWR), /定義了I/o映射后的地址IODESC_ENT(TIMER),/定義了中斷相關(guān)的地址 IODESC_ENT(WATCHDOG),/定義了mem相關(guān)寄存器的地址;void _init s3c6410_map_io(struct map_desc *mach_desc, int
17、 mach_size) /* register our io-tables */iotable_init(s3c6410_iodesc, ARRAY_SIZE(s3c6410_iodesc);iotable_init(mach_desc, mach_size);數(shù)字集成電路設(shè)計與系統(tǒng)應(yīng)用專業(yè)數(shù)字集成電路設(shè)計與系統(tǒng)應(yīng)用專業(yè)Smdk6410靜態(tài)io空間映射(3)narch/arm/plat-s3c64xx/cpu.cstatic struct map_desc s3c_iodesc _initdata = IODESC_ENT(GPIO),IODESC_ENT(IRQ),IODESC_ENT(ME
18、MCTRL),IODESC_ENT(UART) ;void _init s3c64xx_init_io(struct map_desc *mach_desc, int size) n.數(shù)字集成電路設(shè)計與系統(tǒng)應(yīng)用專業(yè)數(shù)字集成電路設(shè)計與系統(tǒng)應(yīng)用專業(yè)IO映射和內(nèi)存映射(1)n從CPU連出來一把線:數(shù)據(jù)總線、地址總線、控制總線,這把線上掛著N個接口,有相同的,有不同的,名字叫做存儲器接口、中斷控制接口、DMA接口、并行接口、串行接口、AD接口一個設(shè)備要想接入,就用自己的接口和總線上的某個匹配接口對接于是總線上出現(xiàn)了各種設(shè)備:內(nèi)存、硬盤,鼠標(biāo)、鍵盤,顯示器n通常X86體系結(jié)構(gòu)具有內(nèi)存映射和IO映射,AR
19、M只有內(nèi)存映射關(guān)于IO與內(nèi)存空間: 在X86處理器中存在著I/O空間的概念,I/O空間是相對于內(nèi)存空間而言的,它通過特定的指令in、out來訪問。端口號標(biāo)識了外設(shè)的寄存器地址。Intel語法的in、out指令格式為: IN 累加器累加器, 端口號端口號DX OUT 端口號端口號DX,累加器累加器 目前,大多數(shù)嵌入式微控制器如ARM、PowerPC等中并不提供I/O空間,而僅存在內(nèi)存空間。內(nèi)存空間可以直接通過地址、指針來訪問,程序和程序運行中使用的變量和其他數(shù)據(jù)都存在于內(nèi)存空間中。即便是在X86處理器中,雖然提供了I/O空間,如果由我們自己設(shè)計電路板,外設(shè)仍然可以只掛接在內(nèi)存空間。此時,CPU可
20、以像訪問一個內(nèi)存單元那樣訪問外設(shè)I/O端口,而不需要設(shè)立專門的I/O指令。因此,內(nèi)存空間是必須的,而I/O空間是可選的。 數(shù)字集成電路設(shè)計與系統(tǒng)應(yīng)用專業(yè)數(shù)字集成電路設(shè)計與系統(tǒng)應(yīng)用專業(yè)IO映射和內(nèi)存映射(2)n對于CPU而言,如果它要發(fā)數(shù)據(jù)到某個設(shè)備,其實是發(fā)到對應(yīng)的接口,接口電路里有多個寄存器(也稱為端口),訪問設(shè)備實際上是訪問相關(guān)的端口,所有的信息會由接口轉(zhuǎn)給它的設(shè)備。那么CPU會準(zhǔn)備數(shù)據(jù)到數(shù)據(jù)總線,但是諸多接口,該發(fā)給誰呢?這時就須要為各接口分配一個地址,然后把地址放在地址總線上,需要的控制信息放到控制總線上,就可以和設(shè)備通信了數(shù)字集成電路設(shè)計與系統(tǒng)應(yīng)用專業(yè)數(shù)字集成電路設(shè)計與系統(tǒng)應(yīng)用專業(yè)I
21、O映射和內(nèi)存映射(3)n對一個系統(tǒng)而言,通常會有多個外設(shè),每個外設(shè)的接口電路中,又會有多個端口,每個端口都需要一個地址,為他們標(biāo)識一個具體的地址值,是系統(tǒng)必須解決的事,與此同時,你還有個內(nèi)存條,可能是512M或1G或更大的金士頓、現(xiàn)代DDR2之類,他們的每一個地址也都需要分配一個標(biāo)識值,另外,很多外設(shè)有自己的內(nèi)存、緩沖區(qū),就像你的內(nèi)存條一樣,你同樣需要為它們分配內(nèi)存你的CPU可能需要和它們的每一個字節(jié)都打交道,n所以:別指望偷懶,它們的每一寸土地都要規(guī)劃好!這聽起來就很煩,做起來可能就直接導(dǎo)致腦細胞全部陣亡。但事情總是得有人去做,ARM可能會這樣做:他這次設(shè)計的CPU是32位的,最多也就能尋址
22、232=4G空間,于是把這4GB空間丟給內(nèi)存和端口,讓他們瓜分。但英特爾或許有更好的分配方式數(shù)字集成電路設(shè)計與系統(tǒng)應(yīng)用專業(yè)數(shù)字集成電路設(shè)計與系統(tǒng)應(yīng)用專業(yè)地址的概念地址的概念n物理地址:CPU地址總線傳來的地址,由硬件電路控制其具體含義n總線地址:總線的地址線或在地址周期上產(chǎn)生的信號。外設(shè)使用的是總線地址,CPU使用的是物理地址。n虛擬地址:現(xiàn)代操作系統(tǒng)普遍采用虛擬內(nèi)存管理(Virtual Memory Management)機制,這需要MMU(Memory Management Unit)的支持。數(shù)字集成電路設(shè)計與系統(tǒng)應(yīng)用專業(yè)數(shù)字集成電路設(shè)計與系統(tǒng)應(yīng)用專業(yè)Linux內(nèi)存空間分配內(nèi)存空間分配數(shù)字
23、集成電路設(shè)計與系統(tǒng)應(yīng)用專業(yè)數(shù)字集成電路設(shè)計與系統(tǒng)應(yīng)用專業(yè)編址方式編址方式n對于某一既定的系統(tǒng),它要么是獨立編址、要么是統(tǒng)一編址,具體采用哪一種則取決于CPU的體系結(jié)構(gòu)。如,PowerPC、m68k等采用統(tǒng)一編址,而X86等則采用獨立編址,存在IO空間的概念。n目前,大多數(shù)嵌入式微控制器如ARM、PowerPC等并不提供I/O空間,僅有內(nèi)存空間,可直接用地址、指針訪問。n對于Linux內(nèi)核而言,它可能用于不同的CPU,所以它必須都要考慮這兩種方式,于是它采用一種新的方法,將基于I/O映射方式的或內(nèi)存映射方式的I/O端口通稱為“I/O區(qū)域”(I/O region),不論你采用哪種方式,都要先申請I
24、O區(qū)域:request_resource(),結(jié)束時釋放它:release_resource()。數(shù)字集成電路設(shè)計與系統(tǒng)應(yīng)用專業(yè)數(shù)字集成電路設(shè)計與系統(tǒng)應(yīng)用專業(yè)Nand 平臺設(shè)備定義 narch/arm/plat-s3c64xx/devs.c static struct resource s3c_nand_resource = 0 = .start = S3C6410_PA_NAND, .end = S3C6410_PA_NAND + S3C64XX_SZ_NAND - 1, .flags = IORESOURCE_MEM, ; struct platform_device s3c_device
25、_nand = .name = s3c6410-nand, .id = -1, .num_resources = ARRAY_SIZE(s3c_nand_resource), .resource = s3c_nand_resource, ;EXPORT_SYMBOL(s3c_device_nand);數(shù)字集成電路設(shè)計與系統(tǒng)應(yīng)用專業(yè)數(shù)字集成電路設(shè)計與系統(tǒng)應(yīng)用專業(yè)include/linux/platform_device.hplatform_device結(jié)構(gòu)數(shù)字集成電路設(shè)計與系統(tǒng)應(yīng)用專業(yè)數(shù)字集成電路設(shè)計與系統(tǒng)應(yīng)用專業(yè)Nand flash 分區(qū)定義(1) narch/arm/plat-s3c64xx
26、/common-static struct mtd_partition smdk_default_nand_part = 0 = .name= Boot Agent,.size= SZ_16K,.offset= 0,1 = .name= S3C6410 flash partition 1,.offset = 0,.size= SZ_2M,2 = .name= S3C6410 flash partition 2,.offset = SZ_4M,.size= SZ_4M,7 = .name= S3C6410 flash partition 7,.offset = SZ_1M * 48,.size=
27、 SZ_16M,;數(shù)字集成電路設(shè)計與系統(tǒng)應(yīng)用專業(yè)數(shù)字集成電路設(shè)計與系統(tǒng)應(yīng)用專業(yè)Nand flash 分區(qū)定義(2) nstatic struct s3c6410_nand_set smdk_nand_sets = n 0 = n .name= NAND,n .nr_chips = 1,n .nr_partitions= ARRAY_SIZE(smdk_default_nand_part),n .partitions = smdk_default_nand_part,n ,n;/* choose a set of timings which should suit most 512Mbit *
28、chips and beyond.*/nstatic struct s3c6410_platform_nand smdk_nand_info = nn .tacls= 20,n .twrph0= 60,n .twrph1= 20,n .nr_sets= ARRAY_SIZE(smdk_nand_sets),n .sets= smdk_nand_sets,n;數(shù)字集成電路設(shè)計與系統(tǒng)應(yīng)用專業(yè)數(shù)字集成電路設(shè)計與系統(tǒng)應(yīng)用專業(yè)archarmplat-s3c64xxcommon-smdk.cstatic struct platform_device _initdata *smdk_devs = &s3c_
29、device_nand, &smdk_led4, &smdk_led5, &smdk_led6, &smdk_led7,;平臺相關(guān)代碼分析-common-smdk6410.c static struct s3c64xx_board smdk6410_board _initdata = .devices = smdk6410_devices,.devices_count = ARRAY_SIZE(smdk6410_devices) ;數(shù)字集成電路設(shè)計與系統(tǒng)應(yīng)用專業(yè)數(shù)字集成電路設(shè)計與系統(tǒng)應(yīng)用專業(yè) 平臺設(shè)備注冊narch/arm/plat-s3c64xx/common-void _init smdk
30、_machine_init(void)n/* Configure the LEDs (even if we have no LED support)*/n s3c2410_gpio_cfgpin(S3C2410_GPF4, S3C2410_GPF4_OUTP);n s3c2410_gpio_cfgpin(S3C2410_GPF5, S3C2410_GPF5_OUTP);n s3c2410_gpio_cfgpin(S3C2410_GPF6, S3C2410_GPF6_OUTP);n s3c2410_gpio_cfgpin(S3C2410_GPF7, S3C2410_GPF7_OUTP);n s3
31、c2410_gpio_setpin(S3C2410_GPF4, 1);n s3c2410_gpio_setpin(S3C2410_GPF5, 1);n s3c2410_gpio_setpin(S3C2410_GPF6, 1);n s3c2410_gpio_setpin(S3C2410_GPF7, 1);n if (machine_is_smdk2443()n smdk_nand_info.twrph0 = 50;n s3c_device_nand.dev.platform_data = &smdk_nand_info;n platform_add_devices(smdk_devs, ARRA
32、Y_SIZE(smdk_devs);n s3c6410_pm_init();n數(shù)字集成電路設(shè)計與系統(tǒng)應(yīng)用專業(yè)數(shù)字集成電路設(shè)計與系統(tǒng)應(yīng)用專業(yè)drivers/mtd/nand/s3c6410.c /* chip-eccmode = NAND_ECC_SOFT; */chip-eccmode = NAND_ECC_NONE; 禁用ECC數(shù)字集成電路設(shè)計與系統(tǒng)應(yīng)用專業(yè)數(shù)字集成電路設(shè)計與系統(tǒng)應(yīng)用專業(yè)Boot options Default kernel command string:noinitrd root=/dev/mtdblock/2 init=/linuxrc console=ttySAC0,1
33、15200內(nèi)核啟動參數(shù)數(shù)字集成電路設(shè)計與系統(tǒng)應(yīng)用專業(yè)數(shù)字集成電路設(shè)計與系統(tǒng)應(yīng)用專業(yè)交叉編譯交叉編譯 Makefile (1) n頂層MakefileMakefileARCH=armCROSS_COMPILER=arm-linux-數(shù)字集成電路設(shè)計與系統(tǒng)應(yīng)用專業(yè)數(shù)字集成電路設(shè)計與系統(tǒng)應(yīng)用專業(yè)交叉編譯交叉編譯 Makefile (2) narch/arm/Makefilemachine-$(CONFIG_ARCH_S3C6410) := s3c6410ifneq ($(machine-y),) MACHINE := arch/arm/mach-$(machine-y)/elseMACHINE :=
34、Endiftextofs-y:= 0 x00008000TEXT_OFFSET := $(textofs-y) narch/arm/mach-s3c6410/Makefile.boot zreladdr-y:= 0 x30008000params_phys-y:= 0 x30000100narch/arm/boot/Makefile ZRELADDR := $(zreladdr-y) PARAMS_PHYS := $(params_phys-y) INITRD_PHYS := $(initrd_phys-y)export ZRELADDR INITRD_PHYS PARAMS_PHYS數(shù)字集成
35、電路設(shè)計與系統(tǒng)應(yīng)用專業(yè)數(shù)字集成電路設(shè)計與系統(tǒng)應(yīng)用專業(yè)交叉編譯交叉編譯 Makefile (3) narch/arm/boot/compressed/Makefileifeq ($(CONFIG_ZBOOT_ROM),y) ZTEXTADDR:= $(CONFIG_ZBOOT_ROM_TEXT) ZBSSADDR:= $(CONFIG_ZBOOT_ROM_BSS) elseZTEXTADDR:= 0ZBSSADDR:= ALIGN(4) endififneq ($(INITRD_PHYS),) LDFLAGS_vmlinux += -defsym initrd_phys=$(INITRD_PHY
36、S) endififneq ($(PARAMS_PHYS),) LDFLAGS_vmlinux += -defsym params_phys=$(PARAMS_PHYS) endifnInclude/asm-arm/memory.h#ifndef PAGE_OFFSET#define PAGE_OFFSETUL(0 xc0000000) #endifn關(guān)于地址的定義參考 Documentation/arm/Porting數(shù)字集成電路設(shè)計與系統(tǒng)應(yīng)用專業(yè)數(shù)字集成電路設(shè)計與系統(tǒng)應(yīng)用專業(yè)DM9000網(wǎng)卡移植(1)n需要修改或添加的文件arch/arm/mach-s3c6400/include/mach
37、/map.harch/arm/mach-s3c6410/smdk-6410.cdrivers/net/arm/Kconfigdrivers/net/arm/MakefileLinux 內(nèi)核下的 drivers/net/dm9000.c 實現(xiàn)了與體系結(jié)構(gòu)無關(guān)的 DM9000 網(wǎng)卡驅(qū)動,只需要在 BSP 的板文件(arch/arm/mach-s3c6410/smdk-6410.c)中定義相關(guān)的 platform 設(shè)備和數(shù)據(jù):數(shù)字集成電路設(shè)計與系統(tǒng)應(yīng)用專業(yè)數(shù)字集成電路設(shè)計與系統(tǒng)應(yīng)用專業(yè)1.添加引腳宏定義在arch/arm/mach-s3c6400/include/mach/map.h文件中添加宏定義#define S3C64XX_PA_DM9000 (0 x1800000
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度國際勞務(wù)輸出合同管理與勞動權(quán)益保障
- 2025年度廣州科技創(chuàng)新園區(qū)建設(shè)工程施工合同參考范本
- 2025年度城市更新改造工程監(jiān)理服務(wù)合同
- 長春2024年吉林長春市市直事業(yè)單位招聘13人筆試歷年參考題庫附帶答案詳解
- 貴州2025年貴州省殘疾人聯(lián)合會直屬事業(yè)單位招聘13人筆試歷年參考題庫附帶答案詳解
- 西雙版納2025年云南西雙版納州婦幼保健院第一批非在編護理人員招聘筆試歷年參考題庫附帶答案詳解
- 舟山浙江舟山岱山縣司法局招聘編外工作人員(二)筆試歷年參考題庫附帶答案詳解
- 綏化2025年黑龍江肇東市急需緊缺高中教師招聘6人筆試歷年參考題庫附帶答案詳解
- 湖北2025年湖北醫(yī)藥學(xué)院專項招聘90人筆試歷年參考題庫附帶答案詳解
- 河南2025年河南財政金融學(xué)院招聘高層次人才筆試歷年參考題庫附帶答案詳解
- 春節(jié)習(xí)俗精選作文300字
- 檢驗科臨檢組風(fēng)險評估報告文書
- Q∕GDW 12127-2021 低壓開關(guān)柜技術(shù)規(guī)范
- 《朝天子詠喇叭》教學(xué)設(shè)計
- 五金行業(yè)質(zhì)量規(guī)范標(biāo)準(zhǔn)
- 幼小銜接拼音試卷-帶彩圖-幼小銜接拼音試卷圖片-幼小拼音試卷習(xí)題
- 數(shù)與代數(shù)結(jié)構(gòu)圖
- 曹晶《孫悟空大鬧蟠桃會》教學(xué)設(shè)計
- 國際貿(mào)易進出口流程圖
- 玄武巖纖維復(fù)合筋工程案例及反饋情況
- 財務(wù)收支記賬表
評論
0/150
提交評論