Nios II uCLinux/Linux启动分析】的更多相关文章

1. 说明 本文采用的Linux源码版本来自Altera公司FTP.不考虑zImage生成的Compress过程.因为zImage是内核binary文件经过gzip 压缩,并在头部添加解压缩代码实现的.这部分可以在内核代码树的arch/nios2/boot/compress下分析链接脚本及makefile得出.另外,Linux源码中实现了编译MMU版本和无MMU版本的Linux,所以编译无MMU版本时,关于MMU的处理部分可以忽略.可以通过设置JTAG UART或者Altera UART的基址来…
原文地址:http://hi.baidu.com/goatdai/item/cc33671545d89243e75e06ad 常用到的存储器包括SDRMA.SRAM.FLASH.Onchip_memory,这些存储器的作用各不相同,但他们在NIOS II的启动过程中发挥了重要的作用.下面就以NIOS II 的启动过程来理解上面这些存储器. 首先看看在sopc builder中reset address和nios IDE中System Library中的program memory(.text).…
        1.可执行文件的格式 在 Linux 平台下主要有以下三种可执行文件格式: 1.a.out(assembler and link editor output 汇编器和链接编辑器的输出) 2.COFF(Common Object File Format 通用对象文件格式) 3.ELF(Executable and Linking Format 可执行和链接格式). 在本课程中,主要介绍的是ELF文件.ELF 文件又分为三种类型:共享目标文件(库文件,后缀为.so).可执行文件.可重…
内核源码目录 1. arch:录下x86重点关注 2. init:目录下main.c中的start_kernel是启动内核的起点 3. ipc:进程间通信的目录 实验 使用实验楼的虚拟机打开shell cd LinuxKernel/ qemu -kernel linux-3.18.6/arch/x86/boot/bzImage -initrd rootfs.img 使用gdb跟踪调试内核 qemu -kernel linux-3.18.6/arch/x86/boot/bzImage -initr…
一.内容分析 1.可执行文件的创建 (1)预处理阶段 预处理过程读入源代码,检查包含预处理指令的语句和宏定义,并对源代码进行相应的转换,预处理过程还会删除程序中的注释和多余的空白字符.其中预处理指令主要包括以下四个方面: 宏定义指令——预处理过程会把源代码中出现的宏标识符替换成宏定义时的值,常用的两种宏定义: //声明一个标识符,全部用大写字母来定义宏 #define MAX_NUM 10 //带参数的#define指令(宏函数) #define Cube(x) ((x)*(x)) ; i=Cu…
万子惠 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程 实验部分 menu程序: cd LinuxKernel/ qemu -kernel linux-3.18.6/arch/x86/boot/bzImage -initrd rootfs.img 其中: 1.qemu 是一个快速的动态译指的虚拟机 2.-kernel bzImage: 内核镜像 3.-initrd file使用file作为初始的ram磁盘. gdb (gdb)file linux-3.18.6/vmlinu…
一.实验过程 使用实验楼虚拟机打开shell cd LinuxKernel/ qemu -kernel linux-/arch/x86/boot/bzImage -initrd rootfs.img 内核启动进入 menu 程序.下面是用 gbd 来跟踪内核的启动过程: gdb (gdb)file linux-/vmlinux # 在gdb界面中targe remote之前加载符号表 (gdb)target remote: # 建立gdb和gdbserver之间的连接,按c 让qemu上的Lin…
环境搭建 环境的搭建参考课件,主要就是编译内核源码和生成镜像 start_kernel 从start_kernel开始,才真正进入了Linux内核的启动过程.我们可以把start_kernel看做平时用C编程时的main函数. 在平时应用程序编程中,main函数并不是一开始就启动的,而是先使用汇编和C准备一些变量,例如我们使用的argc和argv参数,以及一些全局变量的初始化.所以我们使用gdb调试程序时,使用bt打印栈痕迹,发现最下面的函数并不是main,而是__libc_start_main…
简单的来说,根文件系统包括虚拟根文件系统和真实根文件系统.在Kernel启动的初始阶段,首先去创建虚拟的根文件系统,接下来再去调用do_mount来加载真正的文件系统,并将根文件系统切换到真正的文件系统,也即真实的文件系统. 一.什么是根文件系统 在传统的Windows机器上目录结构中,可能会包括C:或者D:盘,而他们一般就称之为特定逻辑磁盘的根目录.从文件系统的层面来说,每一个分区都包含了一个根目录区,也即系统中存在多个根目录. 但是,在Linux系统中,目录结构与Windows上有较大的不同…
张超<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 我的代码可见https://www.shiyanlou.com/courses/reports/986221 在这里我们用的是linux-3.18.6版本,以下简写成linux. start_kernel在 /linux/init/main.c中定义: 这个函数是内核由引导程序引导以后,由自解压程序解压以后执行的第一个函数,可以认为是整个内核的入口函数,以后我…
贺邦 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程 http://mooc.study.163.com/course/USTC-1000029000 一. 实验过程 1.打开shell,输入启动指令,内核启动完成后进入menu程序,支持三个命令help.version和quit. 2.然后使用gdb跟踪调试内核,输入命令qemu -kernel linux-3.18.6/arch/x86/boot/bzImage -initrd rootfs.img -s -S 3.按住…
姓名:江军 ID:fuchen1994 实验日期:2016.3.13 实验指导 使用实验楼的虚拟机打开shell cd LinuxKernel/ qemu -kernel linux-3.18.6/arch/x86/boot/bzImage -initrd rootfs.img 内核启动完成后进入menu程序(<软件工程C编码实践篇>的课程项目),支持三个命令help.version和quit,您也可以添加更多的命令,对选修过<软件工程C编码实践篇>的童鞋应该是a piece of…
Linux内核分析第三周学习博客--跟踪分析Linux内核的启动过程 实验过程截图: 过程分析: 在Linux内核的启动过程中,一共经历了start_kernel,rest_init,kernel_thread等几个函数的执行.其中start_kernel相当于普通C程序的main函数.Trap_init负责初始化中断向量,mm_init负责内存管理模块初始化,sche_init负责调度模块初始化. 两把宝剑: 1.中断上下文切换 2.进程上下文切换 Qemu工具学习: 格式: qemu -ke…
Linux内核分析第七周学习笔记--Linux内核如何装载和启动一个可执行程序 zl + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 由源代码生成可执行文件 预处理 => 编译 => 汇编 => 链接 gcc -E hello.c -o hello.i gcc –S hello.i –o hello.s gcc –c hello.s –o hello.o gcc…
给NIOS II CPU添加一颗澎湃的心——系统时钟的使用 本实验介绍如何在Qsys中添加一个定时器作为NIOS II的心跳定时器,并在NIOS II中软件编程使用该定时器. 将上一个实验watchdog工程复制.粘贴并重命名为08_sysclk_timer.在Quartus II中打开该工程,然后点击Qsys快捷图标打开Qsys组件,如下图所示: 在Qsys中,打开工程目录(08_sysclk_timer)下的mysystem.qsys工程. 打开后,在左侧的IP列表中输入"timer&quo…
DE1-SOC开发板上搭建NIOS II处理器运行UCOS II   今天在DE1-SOC的开发板上搭建NIOS II软核运行了UCOS II,整个开发过程比较繁琐,稍微有一步做的不对,就会导致整个过程失败.因此特地记录下来,以防日后忘记.   第一步:建立Quartus II工程     建立Quartus II工程时需要注意以下几点 器件选择为EP5CSEMA5F31C6N: 工程路径中不得出现非法字符(空格和中文字符): 开发工具选择Quartus II 13.1及以上,这里我选择的版本为…
基于NIOS II的双端口CAN通信回环测试 小梅哥编写,未经授权,严禁用于任何商业用途 说明:本稿件为初稿,如果大家在使用的过程中有什么疑问或者补充,或者需要本文中所述工程源文件,欢迎以邮件形式发送相关内容到我的邮箱xiaomeige_fpga@foxmail.com.如果需要FPGA开发套件,可以上我们的淘宝网址选购:https://xiaomeige.taobao.com. CAN通信基本概念 略(我暂时也不会多少,会的人也不用我讲,所以第一稿略去本部分) 使用FPGA实现CAN通信 硬件…
SOPC开发流程之NIOS II 处理器运行 UC/OS II 这里以在芯航线FPGA学习套件的核心板上搭建 NIOS II 软核并运行 UCOS II操作系统为例介绍SOPC的开发流程. 第一步:建立 Quartus II 工程 建立 Quartus II 工程时需要注意以下几点 1. 器件选择为 EP4CE10F17C8N: 2. 工程路径中不得出现非法字符(空格和中文字符): 3. 开发工具选择 Quartus II 11.0及以上,这里我选择的版本为 Quartus II 15.1. 4…
嵌入式linux启动信息完全注释 from:http://www.embedlinux.cn/ShowPost.asp?ThreadID=377 摘要 我们在这里讨论的是对嵌入式linux系统的启动过程的输出信息的注释,通过我们的讨论,大家会对嵌入式linux启动过程中出现的.以前感觉熟悉的.但却又似是而非的东西有一个确切的了解,并且能了解到这些输出信息的来龙去脉. 嵌入式linux的启动信息是一个很值得我们去好好研究的东西,它能将一幅缩影图呈现在我们面前,来指导我们更加深入地理解linux内核…
在用Nios II做外设时序驱动的时候,经常会用延时函数.有时会常使用某个FPGA芯片和时钟,比如笔者一直使用的芯片是cyclone系列 EP2C35F484C8N,PLL输入SOPC时钟是50M.因此,提前测试硬件运行延时情况并编写今后常用的延时函数有一定的意义.软件:Quartus II 9.0, Nios II 9.0 硬件配置: 1.  在SOPC中调用Interval Timer核 图 1 调用Interval Timer核 2.配置Interval Time 图 2 Interval…
目录 1       概述....................................................................... 1 2       几种常见的boot方式......................................................... 1 2.1.................................................................................…
STEP1:创建一个工程,实现并编译该工程,编写TestBench文件. STEP2:设置启动Modelsim的路径 选择Nios II菜单Tools->Options..,在弹出的界面中,选择Modelsim的安装路径. STEP3:选择仿真软件 选择菜单Assignments->Settings..,在弹出的界面选择Tool name为ModelSim. STEP4:选择测试代码文件 如下图所示选择,单击Test Benches 单机New 填写Test bench name,找到File…
Linux内核设计期中总结 版权声明:本文为博主原创文章,未经博主允许不得转载. 前八周博客汇总及总结 Linux内核设计第一周——从汇编语言出发理解计算机工作原理 我们学习了汇编语言的基础知识,这一部分和内核代码没有直接的关系,但是,老师具体带我们了解了函数调用过程中的堆栈变化,以及函数在调用的过程中是如何传递参数的.这一部分是为了之后学习进程上下文切换.中断上下文切换打基础的. Linux内核设计第二周——操作系统工作原理 老师编写了一个简单小型的内核代码,并带领我们阅读了其中的关键代码.主…
[5216 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000] WEEK NINE (4.18--4.24)期中总结 SECTION 0 学习目录 第一周<计算机是如何工作的?>http://www.cnblogs.com/lwr-/p/5211491.html 第二周<操作系统是如何工作的?> http://www.cnblogs.com/lwr-/p/52356…
[刘蔚然 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000] WEEK EIGHT(4.11--4.17)进程的切换和系统的一般执行过程 SECTION 1 进程切换的关键代码switch_to的分析 1.进程调度与进程调度的时机分析 进程分类 分类1 I/O-bound:等待I/O CPU-bound:大量占用CPU进行计算 分类2 交互式进程(shell) 实时进程 批处理进程 进程调…
http://www.ibm.com/developerworks/cn/linux/kernel/startup/index.html Linux启动第1步:引导内核 Linux启动第2步:内核部分的初始化 [ start_kernel() ] Linux启动第3步:在内核中初始化外设(硬件+驱动)[ do_basic_setup().do_initcalls() ] Linux启动第4步:进程和inittab引导指令 Linux启动第5步:rc启动脚本 Linux启动第6步:getty和lo…
Linux内核分析课程总结 By 20135203齐岳 知识梳理 (思维导图地址http://mindmap.4ye.me/mkxM0cFh/1) 从start _ kernel构造一个新的Linux内核开始,0号进程rest _ init创建了1号进程kernel _ init从而启动Linux内核,这个过程的中心思想其实一直贯穿在Linux内核操作系统之中.1号进程通过复制PCB创建出更多的进程:当进程无法满足功能时就编写自定义的可执行程序,装载这些可执行程序的过程其实就是进程创建的一个变形…
平台背景: 操作系统:win7  64bit 开发板:DE2-115 Quartus ii:15.0及配套的NIOS ii开发平台 一.硬件系统的建立 1.在Quartus里新建工程,这是很基本的就不在介绍了 2.新建一个bdf文件并保存,设置为顶层文件 2.打开Qsys 3.添加NIOS ii process也就是我们的cpu,重命名为cpu,在这里选择f型的,这里不需要设置什么,Vector页要等我们添加好SDRAM.epcs或者是RAM后才可以设置现在是不会有这些选项的,其中Reset V…
---恢复内容开始--- 20135125陈智威 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 ” 实验要求: mykernel实验指导(操作系统是如何工作的) 运行并分析一个精简的操作系统内核,理解操作系统是如何工作的 使用实验楼的虚拟机打开shell cd LinuxKernel/linux-3.9.4 qemu -kernel arch/x86/boot/bzImage 然后cd…
张潇月 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 学习目录: (1)计算机是如何工作的   http://www.cnblogs.com/20135131zxy/p/5224486.html (2)操作系统是如何工作的  http://www.cnblogs.com/20135131zxy/p/5248343.html (3)Linux系统启动过程   http://www.cnblogs.com/2…