mips
淡泊的猪
对的事情,坚持做
展开
-
mips寄存器介绍
一 概要mips拥有32个通用寄存器,一个pc寄存器,一个HI和LO寄存器,另外协处理器也有自己的寄存器,如CP0有32个单独的寄存器,浮点协处理单元也有自己独立的寄存器。二 32个通用寄存器s0–s8: By convention, subroutines must guarantee that thevalues ofthese registers on e原创 2017-05-26 11:18:23 · 8083 阅读 · 0 评论 -
nandflash驱动详解
架构图+-----------+ system bus +-------------------+ CLE, io[8:0] +-------------------+ | cpu |←------------→ | nand controler | ←--------------→ | nand flash |+-...原创 2018-05-23 18:38:45 · 11572 阅读 · 0 评论 -
linux 内存管理---bootmem(三)
为什么要使用bootmem分配器,内存管理不是有buddy系统和slab分配器吗?由于在系统初始化的时候需要执行一些内存管理,内存分配的任务,这个时候buddy系统,slab分配器等并没有被初始化好,此时就引入了一种内存管理器bootmem分配器在系统初始化的时候进行内存管理与分配,当buddy系统和slab分配器初始化好后,在mem_init()中对bootmem分配器进行释放,内存管理与分配由...原创 2018-04-28 15:16:29 · 1112 阅读 · 0 评论 -
linux 内存管理---物理内存探测(二)
linux内核启动时如何知道系统有多少可用内存呢?我们可以猜猜大概有这么几种方式:1.内核写死;2.通过启动参数传递给内核;3.内核代码自动探测可用内存大小;具体是怎样的呢,下面结合代码具体分析一下。start_kernel()启动后调用setup_arch()对平台相关的代码进行初始化。[arch/mips/kernel/setup.c]void __init setup_arch(char *...原创 2018-04-27 17:55:58 · 1041 阅读 · 0 评论 -
mips 指令简介
Machine language vs. assembly language• Real machine language level programming means to handle the bit encodings of machine instructions Example (MIPS CPU: addition $t0 ← $t0 + $t1): 1000010010100000...原创 2018-04-26 18:32:09 · 5951 阅读 · 0 评论 -
linux 内存管理---页框回收(十)
为什么需要页回收?linux的设计哲学之一:尽可能多的使用内存,比如尽可能的多使用memory cache,disk cache,因为这在系统负载比较小时,能够提升系统性能,但是随着cache越来越多,这迟早会消耗完所有可用的内存,所以只有在系统内存不足时才会触发页回收。触发页回收的时机内存紧缺grow_buffers(),alloc_page_buffers(),_ _alloc_pages()...原创 2018-04-19 15:49:44 · 1251 阅读 · 0 评论 -
linux SMP启动代码分析
If one replicates an entire CPU to execute a second thread, then the technique is known as multi-processing.If one replicates only a portion of a CPU to execute a second thread, then the technique is ...原创 2018-03-13 10:19:40 · 1957 阅读 · 0 评论 -
linux 中断与异常---源码分析(三)
概述冷启动、热重启、非屏蔽中断异常入口始终为0xBFC00000,任何其他寄存器都改变不了一些比较频繁发生的异常为了效率的考虑有专用的异常入口,如TLB refill除此之外所有的其他异常共用一个异常入口,称为通用异常入口,专用异常入口和通用异常入口可通过寄存器改变通用异常发生后, CPU 硬件设置 CAUSE寄存器的 ExcCode位, 就跳转到通用异常入口处, ExcCode 位段用来描述通用...原创 2018-04-26 17:43:27 · 1659 阅读 · 0 评论 -
linux 内存管理---伙伴系统(六)
start_kernel()调用mm_init()进行伙伴系统的初始化。static void __init mm_init(void){ /* * page_cgroup requires countinous pages as memmap * and it's bigger than MAX_ORDER unless SPARSEMEM. */ page_...原创 2018-05-04 14:20:02 · 881 阅读 · 0 评论 -
linux 内存管理---分页系统之物理页管理(五)
Linux把物理内存划分为三个层次来管理层次描述节点(Node)为了支持NUMA模型而引入的概念,node的划分主要根据访问速度,一个node中所有内存对于某个cpu来说访问速度相同,对于SMP来说,每个cpu都有本地内存,本地cpu访问速度较快,但是其他cpu却访问较慢,每个node用pg_data_t结构体来描述管理区(Zone)每个节点node根据用途不同被划分为多个zone, 用于表示不同...原创 2018-05-03 18:23:43 · 600 阅读 · 0 评论 -
linux 内存管理---分页系统之页表初始化(四)
arch_mem_init()在调用bootmem_init()函数完成bootmem的初始化之后调用paging_init()进行分页系统的初始化。分页系统就是将物理内存按页为单位进行描述,管理和映射。注意这里是mips cpu,不同的arch cpu初始化顺序可能不同, linux-3.3.8[arch/mips/mm/init.c]void __init paging_init(void){...原创 2018-05-03 18:15:20 · 820 阅读 · 0 评论 -
linux kernel启动代码分析
本文分析基于mips架构,linux-3.3.8一.kernel入口首先通过链接脚本找到kernel的入口1.内核是压缩过的/arch/mips/boot/compressed/Makefile ,将$(obj)/head.o $(obj)/decompress.o $(obj)/dbg.o $(obj)/piggy.o 链接为vmlinuz,链接脚本为ld.scriptvmlinuz: $(...原创 2018-05-02 14:40:56 · 2210 阅读 · 0 评论 -
boot可加载到任意地址执行的方法
当链接地址跟加载地址不一致时,将代码拷贝至链接地址处,并跳转到目标链接地址去执行,这样实现的一个好处是可以将boot加载到任意地址去执行,由boot自行搬移到链接地址,实现代码如下,boot入口函数,cpu为mips:LEAF(_start)#if 1 // relocationbal set_ra// nop1:move t0, rala t1, _startla t2, 1bs...原创 2017-06-28 16:53:29 · 273 阅读 · 0 评论 -
linux cache管理---mips基础(一)
一 Bmips cache 概述magnum/basemodules/mma/bmma.hThere are potentially three CPU caches you should be aware of: 1) L1 cache - this is a write-back cache 2) L2 cache - this is a write-back c...原创 2018-03-13 10:14:56 · 1785 阅读 · 0 评论 -
linux 中断与异常---mips基础(一)
MIPS体系结构采用的是精确异常处理模式这是什么意思呢?下面来看从“See MIPS Run”一书中的摘录:“In a precise-exception CPU, on anyexception we get pointed at one instruction(the exception victim). All instructions preceding theexception vict...原创 2018-03-13 09:58:57 · 6920 阅读 · 0 评论 -
linux 内存管理---mips基础(一)
本文分析的是4K mips的内存管理,其他mips型号可能会有所区别The MMU in a 4K processor core will translate any virtual address to a physical address before a request is sent to thecache controllers for tag comparison or to the ...原创 2018-03-13 10:07:59 · 3326 阅读 · 0 评论 -
mips EJTAG简介
EJTAG: MIPS extension of JTAG. It exploits the infrastructure provided by the IEEE 1149.1 JTAG Test Access Port (TAP) standard to provide an external interface, and extends the MIPS instruction set a...原创 2018-04-03 17:13:02 · 3908 阅读 · 0 评论 -
mips简介
wiki:https://en.wikipedia.org/wiki/MIPS_architecture官方网站:https://www.mips.com/https://www.mips.com/?do-download=arm-to-mips-architecture-migration-guide《4KcProgMan.pdf》原创 2018-05-25 14:36:07 · 1742 阅读 · 0 评论