linux内存管理 (三) 12 linux arch 目录的作用

ok6410 对应的linux-3.0.1 的编译情况
arch 下面的这些目录 镜像 相关,其他目录与当前镜像 无关
boot  common  configs  include  kernel  lib  mach-s3c64xx  mm  plat-samsung
各目录分析
  • arch/boot
// 目录 内容
✗ ls boot -R
boot:
compressed

boot/compressed:
decompress.c  head.S  lib1funcs.S  misc.c  piggy.gzip.S

// 整体 作用
	1. 解压 压缩内容,并放置到 zreladdr
	2. 设置 r0 ,r1 ,r2
	3. 跳转到 非解压内核 的 stext
// 具体 文件 作用
head.S 
	// 压缩内核 第一条指令所在文件,主文件
misc.c 
	// 提供函数 decompress_kernel __div0 error icedcc_putc memcpy putstr
	// 提供变量 __machine_arch_type free_mem_end_ptr free_mem_ptr output_data
decompress.c
	// 提供函数 do_decompress
lib1funcs.S
	// 提供 函数 __udivsi3 __umodsi3 __divsi3 __modsi3 __aeabi_uidivmod __aeabi_idivmod
piggy.gzip.S
	// 用来 include 被压缩过的内核

  • arch/common
// 目录 内容
✗ ls common -R
common:
vic.c
// 整体 作用
	1. 提供 arm 的 IP 代码 // 例如 vic/gic
// 具体 文件 作用
vic.c
	// 提供 函数 vic_init vic_set_irq_sources vic_clear_interrupts	vic_ack_irq
	// 提供 变量 vic_chip vic_devices vic_id
  • arch/configs
// 目录 内容
✗ ls configs -R
configs:
FORLINX6410_CFG
// 整体 作用
	1.提供板子的配置
// 具体 文件 作用
FORLINX6410_CFG
	// 提供 OK6410 的配置
	// 问题: 最小配置是什么???
  • arch/include
// 目录 内容
✗ ls include -R 
include:
asm  generated

include/asm:
a.out-core.h   cputime.h            fiq.h         hw_breakpoint.h  kprobes.h      msgbuf.h         poll.h         shmparam.h        statfs.h         types.h
a.out.h        cputype.h            fixmap.h      hwcap.h          leds.h         mtd-xip.h        posix_types.h  sigcontext.h      stat.h           uaccess.h
asm-offsets.h  current.h            flat.h        hw_irq.h         limits.h       mutex.h          processor.h    siginfo.h         string.h         ucontext.h
assembler.h    delay.h              floppy.h      i8253.h          linkage.h      nwflash.h        proc-fns.h     signal.h          swab.h           unaligned.h
atomic.h       device.h             fncpy.h       ide.h            local64.h      outercache.h     procinfo.h     signal.h~         system.h         unified.h
auxvec.h       div64.h              fpstate.h     ioctl.h          local.h        page.h           prom.h         sizes.h           tcm.h            unistd.h
bitops.h       dma.h                ftrace.h      ioctls.h         localtimer.h   page-nommu.h     ptrace.h       smp.h             termbits.h       unwind.h
bitsperlong.h  dma-mapping.h        futex.h       io.h             locks.h        param.h          resource.h     smp_plat.h        termios.h        user.h
bug.h          domain.h             glue-cache.h  ipcbuf.h         mach           parport.h        scatterlist.h  smp_scu.h         therm.h          vfp.h
bugs.h         ecard.h              glue-df.h     irqflags.h       mach-types.h   pci.h            sched_clock.h  smp_twd.h         thread_info.h    vfpmacros.h
byteorder.h    elf.h                glue.h        irq.h            mc146818rtc.h  percpu.h         seccomp.h      socket.h          thread_notify.h  vga.h
cacheflush.h   emergency-restart.h  glue-pf.h     irq_regs.h       memblock.h     perf_event.h     sections.h     sockios.h         timex.h          xor.h
cache.h        entry-macro-multi.S  glue-proc.h   Kbuild           memory.h       pgalloc.h        segment.h      sparsemem.h       tlbflush.h
cachetype.h    entry-macro-vic2.S   gpio.h        kdebug.h         mman.h         pgtable.h        sembuf.h       spinlock.h        tlb.h
checksum.h     errno.h              hardirq.h     kexec.h          mmu_context.h  pgtable-hwdef.h  serial.h       spinlock_types.h  tls.h
clkdev.h       fb.h                 hardware      kgdb.h           mmu.h          pgtable-nommu.h  setup.h        stackprotector.h  topology.h
cpu.h          fcntl.h              highmem.h     kmap_types.h     module.h       pmu.h            shmbuf.h       stacktrace.h      traps.h

include/asm/hardware:
arm_timer.h      clps7111.h   debug-8250.S   entry-macro-gic.S   ep7212.h  ioc.h          iop3xx-gpio.h  it8152.h        memc.h    pl330.h   sp810.h     uengine.h
cache-l2x0.h     coresight.h  debug-pl01x.S  entry-macro-iomd.S  gic.h     iomd.h         iop3xx.h       linkup-l1110.h  pci_v3.h  sa1111.h  ssp.h       vic.h
cache-tauros2.h  cs89712.h    dec21285.h     ep7211.h            icst.h    iop3xx-adma.h  iop_adma.h     locomo.h        pl080.h   scoop.h   timer-sp.h

include/asm/mach:
arch.h  dma.h  flash.h  irda.h  irq.h  map.h  pci.h  serial_at91.h  serial_sa1100.h  sharpsl_param.h  time.h  udc_pxa2xx.h

include/generated:
asm

include/generated/asm:
// 整体 作用
	1. 提供 arm IP 的各种定义
// 具体 文件 作用
TODO

  • arch/kernel
// 目录 内容
✗ ls kernel -R
kernel:
armksyms.c  elf.c           head-common.S    init_task.c  kprobes.c         module.c      process.c          return_address.c  stacktrace.c       time.c
atags.c     entry-armv.S    head.S           io.c         kprobes-decode.c  perf_event.c  ptrace.c           setup.c           sys_arm.c          traps.c
debug.S     entry-common.S  hw_breakpoint.c  irq.c        machine_kexec.c   pmu.c         relocate_kernel.S  signal.c          sys_oabi-compat.c  unwind.c
// 整体 作用
	1. 提供 非压缩内核 启动流程
	2. 提供 异常向量表
// 具体 文件 作用
head.S head-common.S
	//提供 非压缩内核 启动流程
init_task.c 
	// 提供第一个task的栈
atags.c
	// 提供解析atags的方法
entry-armv.S entry-common.S
	// 提供异常量表及其进出的方法
irq.c
	// TODO

  • arch/lib
// 目录 内容
✗ ls lib -R
lib:
ashldi3.S    clear_user.S      csumpartialcopy.S      findbit.S          io-writesb.S        memchr.S   muldi3.S   strncpy_from_user.S  testsetbit.S
ashrdi3.S    copy_from_user.S  csumpartialcopyuser.S  getuser.S          io-writesl.S        memcpy.S   putuser.S  strnlen_user.S       ucmpdi2.S
backtrace.S  copy_page.S       csumpartial.S          io-readsb.S        io-writesw-armv4.S  memmove.S  setbit.S   strrchr.S
changebit.S  copy_to_user.S    delay.S                io-readsl.S        lib1funcs.S         memset.S   sha1.S     testchangebit.S
clearbit.S   csumipv6.S        div64.S                io-readsw-armv4.S  lshrdi3.S           memzero.S  strchr.S   testclearbit.S
// 整体 作用
	1. ARM 提供的库,共谁用(TODO)
// 具体 文件 作用
TODO
  • arch/mach-s3c64xx
// 目录 内容
✗ ls mach-s3c64xx -R
mach-s3c64xx:
clock.c  dev-audio.c  dev-ts.c    dma.c      irq.c       mach-smdk6410.c  setup-fb-24bpp.c  setup-i2c1.c  setup-keypad.c  setup-sdhci-gpio.c
cpu.c    dev-spi.c    dev-uart.c  gpiolib.c  irq-eint.c  s3c6410.c        setup-i2c0.c      setup-ide.c   setup-sdhci.c
// 整体 作用
	1. 提供板子的驱动,给哪个阶段的内核用?
// 具体 文件 作用
s3c6410.c
	// 提供 s3c6410_core_init,用于 core_initcall
mach-smdk6410.c
	// 提供 一个 结构体 struct machine_desc __mach_desc_SMDK6410
其他文件
	// 提供具体驱动
  • arch/mm
// 目录 内容
✗ ls mm -R
mm:
abort-ev6.S  cache-v6.S  copypage-v6.c  extable.c     fault.c  highmem.c  init.c   ioremap.c  mmu.c        pgd.c        proc-v6.S  vmregion.c
alignment.c  context.c   dma-mapping.c  fault-armv.c  flush.c  idmap.c    iomap.c  mmap.c     pabort-v6.S  proc-syms.c  tlb-v6.S
// 整体 作用
	1. 提供内存相关功能
// 具体 文件 作用
proc-v6.S
	// 提供开关mmu,开关cache,刷新cache 的功能
其他问题
	// TODO

  • arch/plat-samsung
// 目录 内容
✗ ls plat-samsung 
adc.c           dev-adc.c      dev-fimc1.c   dev-i2c1.c    dev-pwm.c   dev-usb-hsotg.c  gpio.c         irq-vic-timer.c  setup-fimc1.c
bootmem.c       dev-asocdma.c  dev-hsmmc1.c  dev-ide.c     dev-rtc.c   dev-video.c      gpio-config.c  platformdata.c   time.c
clock.c         dev-fb.c       dev-hsmmc.c   dev-keypad.c  dev-uart.c  dev-wdt.c        init.c         pwm-clock.c      wakeup-mask.c
clock-clksrc.c  dev-fimc0.c    dev-i2c0.c    dev-nand.c    dev-usb.c   dma.c            irq-uart.c     setup-fimc0.c
// 整体 作用
	// 该文件夹是三星平台共有的一些 IP相关函数
	1. 为 mach-s3c64xx 中的函数 提供 库 
	2. 直接为 内核 提供函数
// 具体 文件 作用
TODO

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值