当前位置: 首页 > news >正文

做第三方团购的平台网站wordpress360收录插件

做第三方团购的平台网站,wordpress360收录插件,网页制作基础及html,网站用户维护1. 内核启动地址ZTEXTADDR解压代码运行的开始地址。没有物理地址和虚拟地址之分#xff0c;因为此时MMU处于关闭状态。这个地址不一定时RAM的地址#xff0c;可以是支持读写寻址的flash等存储中介。Start address of decompressor. heres no point in talking about vi…1.       内核启动地址ZTEXTADDR解压代码运行的开始地址。没有物理地址和虚拟地址之分因为此时MMU处于关闭状态。这个地址不一定时RAM的地址可以是支持读写寻址的flash等存储中介。Start address of decompressor. heres no point in talking about virtual or physical addresses here, since the MMU will be off at the time when you call the decompressor code. You normally call   the kernel at this address to start it booting. This doesnt have to be located in RAM, it can be in flash or other read-only or      read-write addressable medium.在arch/arm/boot/compressed/Makefile中说的很明确## We now have a PIC decompressor implementation.  Decompressors running# from RAM should not define ZTEXTADDR.  Decompressors running directly# from ROM or Flash must define ZTEXTADDR (preferably via the config)# FIXME: Previous assignment to ztextaddr-y is lost here. See SHARKifeq ($(CONFIG_ZBOOT_ROM),y)ZTEXTADDR   : $(CONFIG_ZBOOT_ROM_TEXT)ZBSSADDR    : $(CONFIG_ZBOOT_ROM_BSS)elseZTEXTADDR   : 0ZBSSADDR    : ALIGN(8)endifZRELADDR内核启动在RAM中的地址。压缩的内核映像被解压到这个地址然后执行。This is the address where the decompressed kernel will be written, and eventually executed. The following constraint must be valid:__virt_to_phys(TEXTADDR) ZRELADDRThe initial part of the kernel is carefully coded to be position independent.一般定义在项目目录下比如arch/arm/mach-at91/Makefile.boot: zreladdr-y 0x70008000arch/arm/mach-at91/Makefile.boot: zreladdr-y 0x20008000arch/arm/mach-cns3xxx/Makefile.boot: zreladdr-y 0x00008000arch/arm/mach-davinci/Makefile.boot: zreladdr-y 0xc0008000arch/arm/mach-davinci/Makefile.boot: zreladdr-y 0x80008000arch/arm/mach-dove/Makefile.boot: zreladdr-y 0x00008000arch/arm/mach-ebsa110/Makefile.boot: zreladdr-y 0x00008000arch/arm/mach-exynos/Makefile.boot: zreladdr-y 0x40008000arch/arm/mach-footbridge/Makefile.boot: zreladdr-y 0x00008000arch/arm/mach-gemini/Makefile.boot: zreladdr-y 0x00008000arch/arm/mach-gemini/Makefile.boot: zreladdr-y 0x10008000arch/arm/mach-integrator/Makefile.boot: zreladdr-y 0x00008000arch/arm/mach-iop13xx/Makefile.boot: zreladdr-y 0x00008000在arch/arm/boot/Makefile中被赋值ZRELADDR : $(zreladdr-y)PARAMS_PHYS : $(params_phys-y)INITRD_PHYS : $(initrd_phys-y)... ...ifneq ($(LOADADDR),)UIMAGE_LOADADDR$(LOADADDR)elseifeq ($(CONFIG_ZBOOT_ROM),y)UIMAGE_LOADADDR$(CONFIG_ZBOOT_ROM_TEXT)elseUIMAGE_LOADADDR$(ZRELADDR)endifendifcheck_for_multiple_loadaddr \if [ $(words $(UIMAGE_LOADADDR)) -ne 1 ]; then \echo multiple (or no) load addresses: $(UIMAGE_LOADADDR); \echo This is incompatible with uImages; \echo Specify LOADADDR on the commandline to build an uImage; \false; \fi从最后一句红色说明可以看出如果没有在代码中指定zreladdr-y也可以在编译的命令行中指定LOADADDR来确定内核加载的实际物理地址。TEXTADDR内核启动的虚拟地址与ZRELADDR相对应。一般内核启动的虚拟地址为RAM的第一个bank地址加上0x8000。TEXTADDR PAGE_OFFSET TEXTOFFSTVirtual start address of kernel, normally PAGE_OFFSET 0x8000.This is where the kernel image ends up. With the latest kernels, it must be located at 32768 bytes into a 128MB region. Previous kernels placed a restriction of 256MB here.TEXTOFFSET内核偏移地址。在arch/arm/makefile中设定。PHYS_OFFSETRAM第一个bank的物理起始地址。Physical start address of the first bank of RAM.PAGE_OFFSETRAM第一个bank的虚拟起始地址。Virtual start address of the first bank of RAM. During the kernelboot phase, virtual address PAGE_OFFSET will be mapped to physicaladdress PHYS_OFFSET, along with any other mappings you supply.This should be the same value as TASK_SIZE.这个值由make menuconfig进行配置1.2.   内核启动地址确定内核启动引导地址由bootp.lds决定。 Bootp.lds : arch/arm/bootpOUTPUT_ARCH(arm)ENTRY(_start)SECTIONS{. 0;.text : {_stext .;*(.start)*(.text)initrd_size initrd_end - initrd_start;_etext .;}}由上 . 0可以确定解压代码运行的开始地址在0x0的位置。ZTEXTADDR的值决定了这个值得选取。Makefile : arch/arm/boot/compressed如果设定内核从ROM中启动的话可以在make menuconfig 的配置界面中设置解压代码的起始地址否则解压代码的起始地址为0x0。实际上默认从ROM启动时解压代码的起始地址也是0x0。ifeq ($(CONFIG_ZBOOT_ROM),y)ZTEXTADDR : $(CONFIG_ZBOOT_ROM_TEXT)ZBSSADDR    : $(CONFIG_ZBOOT_ROM_BSS)elseZTEXTADDR :0ZBSSADDR : ALIGN(4)endifSEDFLAGS    s/TEXT_START/$(ZTEXTADDR)/;s/BSS_START/$(ZBSSADDR)/……$(obj)/vmlinux.lds: $(obj)/vmlinux.lds.in arch/arm/mach-s3c2410/Makefile .configsed $(SEDFLAGS) $ $sed $(SEDFLAGS) $ $ 规则将TEXT_START设定为ZTEXTADDR。TEXT_START在arch/arm/boot/compressed/vmlinux.lds.in 中被用来设定解压代码的起始地址。OUTPUT_ARCH(arm)ENTRY(_start)SECTIONS{. TEXT_START;_text .;.text : {_start .;*(.start)*(.text)*(.text.*)……}}内核的编译依靠vmlinux.ldsvmlinux.lds由vmlinux.lds.s 生成。从下面代码可以看出内核启动的虚拟地址被设置为PAGE_OFFSET TEXT_OFFSET而内核启动的物理地址ZRELADDR在arch/arm/boot/Makefile中设定。OUTPUT_ARCH(arm)ENTRY(stext)SECTIONS{#ifdef CONFIG_XIP_KERNEL. XIP_VIRT_ADDR(CONFIG_XIP_PHYS_ADDR);#else. PAGE_OFFSET TEXT_OFFSET;#endif.init : {                  /* Init code and data             */_stext .;_sinittext .;*(.init.text)_einittext .;……}}# arch/arm/boot/Makefile# Note: the following conditions must always be true:#   ZRELADDR virt_to_phys(PAGE_OFFSET TEXT_OFFSET)#   PARAMS_PHYS must be within 4MB of ZRELADDR#   INITRD_PHYS must be in RAMZRELADDR    : $(zreladdr-y)#--- zrealaddr-y is specified with 0x30008000 in arch/arm/boot/makefile.bootPARAMS_PHYS : $(params_phys-y)INITRD_PHYS : $(initrd_phys-y)export ZRELADDR INITRD_PHYS PARAMS_PHYS通过下面的命令编译内核映像由参数-a, -e设置其入口地址为ZRELADDR此值在上面ZRELADDR    : $(zreladdr-y)指定。quiet_cmd_uimage UIMAGE $cmd_uimage $(CONFIG_SHELL) $(MKIMAGE) -A arm -O linux -T kernel \-C none -a $(ZRELADDR) -e $(ZRELADDR) \-n Linux-$(KERNELRELEASE) -d $ $1.3.   小结从上面分析可知道linux内核被bootloader拷贝到RAM后解压代码从ZTEXTADDR开始运行(这段代码是与位置无关的PIC(Position independent code))。内核被解压缩到ZREALADDR处也就是内核启动的物理地址处。相应地内核启动的虚拟地址被设定为TEXTADDR满足如下条件TEXTADDR PAGE_OFFSET TEXT_OFFSET内核启动的物理地址和虚拟地址满足入下条件ZRELADDR virt_to_phys(PAGE_OFFSET TEXT_OFFSET) virt_to_phys(TEXTADDR)假定开发板为smdk2410则有内核启动的虚拟地址TEXTADDR     0xC0008000内核启动的物理地址ZRELADDR     0x30008000如果直接从flash中启动还需要设置ZTEXTADDR地址。2.       内核启动过程分析内核启动过程经过大体可以分为两个阶段内核映像的自引导linux内核子模块的初始化。startDecompress_kernel()Call_kernelStext:Prepare_namespaceDo_basic_setupinitRest_initSetup_arch ……Start_kernel_enable_mmuExecve(“/sbin/init”))
http://www.yutouwan.com/news/325531/

相关文章:

  • 广州市车管所网站建设网站开发容易吗
  • 成都微信微网站建设微信公众平台登录入口内村完小
  • 如何做好一个企业网站wordpress 获取头像地址
  • 网站设计大概在什么价位哪个网站做贷款推广
  • 重庆市建设工程信息网官网人员公示公告windows优化大师免费
  • 长沙企业模板建站ppt设计师兼职
  • dw网站建设的常用技术关键词推广效果
  • 长春网站建设公司排名做竞价网站 要注意什么
  • 甘肃建设监理协会网站外贸网站建设公司流程
  • 如何搭建一个完整的网站典型的四大综合门户网站
  • c语言开发网站教程网站建设如何找客户
  • 网站建设模板代码下载dedecms 调用 两个网站
  • 建设部网站核对编号公众号版影视网站开发
  • 银行门户网站建设ppt广告网站建设价格
  • 毕设做网站什么主题比较好经典软文案例200字
  • win7建设网站教程农村建设集团有限公司网站首页
  • 门户网站 方案附近电脑培训班位置
  • 呼和浩特企业网站排名优化建设牌安全带官方网站
  • 黄山公司做网站山东省建设工程执业资格中心网站
  • 凡科建站是不是关闭企业网站网站跟网页有什么区别
  • 公司网站开发制作公司南昌商城网站设计
  • 织梦网站后台模板网站建设开发岗位职责
  • 海口网站seo做整体衣柜宣传海报的网站
  • 网站搭建的流程是什么网页设计首页尺寸
  • 东莞自适应网站建设软件开发工程师绩效考核指标
  • 温州门户网站建设html个人源码
  • 网站还能赚钱吗中企动力做网站行吗
  • 上传网站到二级域名设计师网站软件
  • 天津开发区网站上线一个app需要多少钱
  • 网站建设业务活动旅游网站后台管理系统