
Kernel
文章平均质量分 73
xichangbao
这个作者很懒,什么都没留下…
展开
-
Kernel启动流程源码解析 2 head.S
__cpu_setup。定义kernel\arch\arm64\mm\proc.S中。#define MAIR(attr, mt) ((attr) /* * __cpu_setup * * Initialise the processor for turning the MMU on. Return in x0 the * valu原创 2016-06-07 17:40:18 · 1487 阅读 · 0 评论 -
Ubuntu 18.04 使用QEMU搭建ARM Linux开发环境
一、安装工具: $ sudo apt-get install vim openssh-server net-tools nfs-kernel-server git qemu crash \build-essential libncurses-dev libssl-dev gcc-arm-linux-gnueabi gcc-aarch64-linux-gnu systemtap二、下载源码: ...原创 2018-03-19 01:04:33 · 4805 阅读 · 0 评论 -
Kernel启动流程源码解析 8 mm_init
一 mm_init1.0 mm_init定义在init/main.c中static void __init mm_init(void){ /* * page_cgroup requires contiguous pages, * bigger than MAX_ORDER unless SPARSEMEM. */原创 2016-11-22 19:18:09 · 1956 阅读 · 0 评论 -
Kernel启动流程源码解析 9 sched_init
一 sched_init这里只是简单过了一下sched_init,收集一些疑问,以后看书或阅读代码的时候再来寻找答案。1.0 sched_init定义在kernel/sched/core.c中void __init sched_init(void){ int i, j; unsigned long alloc_size = 0,原创 2016-11-22 19:19:09 · 1674 阅读 · 0 评论 -
Kernel启动流程源码解析 12 总结
kernel链接脚本vmlinux.lds在arm64芯片架构上是以arch/arm64/kernel/vmlinux.lds.S编译生成的。从中可以看到kernel的入口点是stext,这是一个汇编函数。从stext开始kernel将会完成一系列通过汇编语言实现芯片级的初始化工作,并以静态定义的方式创建kernel的第一个kernel进程init_task,即0号原创 2016-10-30 12:46:23 · 1193 阅读 · 1 评论 -
Kernel启动流程源码解析 10 init_IRQ
一 init_IRQ本文以arm,gic-v3兼容的中断控制器为例,介绍中断控制器的初始化过程。1.0 init_IRQ定义在arch/arm64/kernel/irq.c中void __init init_IRQ(void){ irqchip_init(); if (!handle_arch_irq) panic("N原创 2016-11-18 23:14:31 · 2112 阅读 · 0 评论 -
Kernel启动流程源码解析 7 rest_init()
一 rest_init1.0 rest_init定义在init/main.c中static noinline void __init_refok rest_init(void){ int pid; const struct sched_param param = { .sched_priority = 1 }; rcu_sc原创 2016-10-26 21:03:16 · 4322 阅读 · 0 评论 -
Kernel启动流程源码解析 6 setup_arch
一 setup_archsetup_arch顾名思义就是架构相关的初始化函数,这里选取arm64结构进行分析。1.0 setup_arch定义在arch/arm64/kernel/setup.c中void __init setup_arch(char **cmdline_p){ setup_processor(); // 检原创 2016-10-23 20:09:44 · 2657 阅读 · 0 评论 -
Kernel启动流程源码解析 5 start_kernel 下
一 start_kernelstart_kernel函数是kernel启动过程执行的第一个c语言函数,其通过调用一系列初始化函数完成的内核的初始化工作,下篇分析local_irq_enable之后的代码。1.0 start_kernel定义在init/main.c中asmlinkage void __init star原创 2016-10-22 23:14:47 · 2820 阅读 · 0 评论 -
Kernel启动流程源码解析 3 init_task
init_task是kernel的第一个进程,0号进程,当kernel初始化完成后,它便化身为idle进程出现在我们的面前。一 init_thread_unionunion thread_union init_thread_union __init_task_data = { INIT_THREAD_INFO(init_task) };#define原创 2016-10-19 15:00:56 · 2200 阅读 · 0 评论 -
Kernel启动流程源码解析 4 start_kernel 上
一 start_kernelstart_kernel函数是kernel启动过程执行的第一个c语言函数,其通过调用一系列初始化函数完成的内核的初始化工作,上篇分析local_irq_enable之前的代码。1.0 start_kernel定义在init/main.c中asmlinkage void __init start_kernel(void)原创 2016-10-21 23:47:40 · 4348 阅读 · 0 评论 -
Kernel启动流程源码解析 1 head.S
bootloader在跳转到kernel前,需要确保如下设置:MMU = off, D-cache = off, I-cache = on or offx0 = physical address to the FDT blobkernel的第一行代码在arch\arm64\kernel\head.S中。b stext // 跳转到ste原创 2016-06-02 17:31:58 · 2519 阅读 · 1 评论 -
QEMU模拟运行Zircon(原Magenta)
一 、下载源码: $ git clone https://github.com/fuchsia-mirror/zircon.gitor $ git clone https://fuchsia.googlesource.com/zircon二、安装编译工具链: 进入源码目录执行(需要科学上网) $ cd zircon $ ./scripts/download-toolchai...原创 2018-03-22 21:13:30 · 4357 阅读 · 0 评论