PMON(龙芯修改版)常用操作命令 pmon 是一个兼有BIOS和bootloader部分功能的开放源码软件,多用于嵌入式系统。与BIOS相比功能不足,与常见的bootloader 相比,功能要丰富的多。基于龙芯的系统采用 pmon 作为类 BIOS 兼 bootloader,并做了很多完善工作。其有如下主要特点: * 支持ext2 fat32 ram 文件系统 * 支持网络引导(tftp),磁
Linux 上下文切换分析笔记 (MIPS) 1. 内核栈切换 (MIPS)调度切换至一个进程时,根据 task_struct->thread_info 的值设置 *kernelsp(当前正在运行进程之内核栈栈底),其值为 thread_info + THREAD_SIZE - 32(MIPS 下,使用 set_saved_sp 宏)。2. 异常、中断寄存器的保存 (MIPS)使 用SAVE_SOME 保存上下文时,如发现从用户态切入核心态,
Linux 存储管理分析札记 1. MIPS 与 X86 的 TLB 差别其在于对 TLB 不命中时的处理上:MIPS 会触发TLB Refill 异常,内核的 tlb_refill_handler 会以 pgd_current 为当前进程的 PGD 基址,索引获得转换失败的虚址对应的 PTE,并将其填入 TLB,完了CPU 把刚刚转换失败的虚地址再走一下 TLB 就OK了。而 X86 在 TLB 不命中时,是由硬件 MMU
使用 graphviz 形象化有向图 将有向图数字化,可以用一个邻接矩阵表示。计算机对这个图进行一系列的处理后(比如求闭包),如果要看看处理后的图,可以借助于 graphviz 这个强大的开源工具。1. Graphviz 简介Graphviz 是 AT&T Labs-Research 开发的自动图形绘制工具, 可以很方便的可视化结构信息,把抽象的图和网络用几何的方式表现出来。支持多种格式输出,如 jpg, png, gif, svg,
16KB页,32bit 地址的划分有些问题 32 bit kernel, 16KB 页大小,龙芯2E平台tlb_refill_handler为:lui k1, %hi(pgd_current)mfc0 k0, C0_BADVADDRlw k1, %lo(pgd_current)(k1)srl k0, k0, PGDIR_SHIFTsll k0, k0, PGD_T_LOG2
linux下把共享库(SO)加载到指定的内存地址 作者:absurd 出处:http://blog.csdn.net/absurd一位朋友最近遇到一个棘手的问题,希望把共享库(SO)加载到指定的内存地址,目的可能是想通过prelink来加快应用程序的起动速度。他问我有没有什么方法。我知道Windows下是可以的,比如在VC6里设置/base的值就行了,所以相信在Linux下也是可行的。 VC有编译选项可以设置,猜想gcc也应该有吧
Linker script 链接器脚本 作者:firststp 出处:http://blog.csdn.net/firststp/每个链接都由链接脚本控制着,脚本由链接器命令语言组成。脚本的主要目的是描述如何把输入文件中的节(sections)映射到输出文件中,并控制输出文件的存储布局。大多数的链接脚本就是做这些事情的,但在有必要时,脚本也可以指导链接器执行一些其他的操作。链接器总是使用链接器脚本,如果你没有提供一个你
龙芯版 memcpy 的实现 当前版本: 0.1完成日期: 2007-6-15作者: Dajie Tan memcpy 是为最常用之函数,多媒体编解码过程中调用频繁,属调用密集型函数,对其性能优化很有意义。1. 概述memcpy 所做的操作是把内存中的一块数据复制到内存的另一个地方,也就是内存到内存的数据拷贝,这个过程需要CPU的参与,即:先从内存取数据到CPU的寄存器,然后再从寄存器写到内存中。可以用类似如下C 代码实现:c
oprofile for godson2e 移植手记 当前版本: 0.1完成日期: 2007-6-7作者: Dajie Tan 0. 概述oprofile 在Linux 上分两部分,一个是内核模块(oprofile.ko),一个为用户空间的守护进程(oprofiled)。前者负责访问性能计数器或者注册基于时间采样的函数(使用register_timer_hook注册之,使时钟中断处理程序最后执行profile_tick 时可以访问之),并采样置于内核
使用oprofile分析性能瓶颈 当前版本: 0.1完成日期: 2007-5-25作者: Dajie Tan 1. 概述oprofile 是 Linux 平台上,类似 INTEL VTune 的一个功能强大的性能分析工具。其支持两种采样(sampling)方式:基于事件的采样(event based)和基于时间的采样(time based)。基于事件的采样是oprofile只记录特定事件(比如L2 cache miss)的发生次数
MIPS Linux 下添加系统调用 添加一个系统调用有以下几个步骤: 1. 在 kernel 的系统调用表 sys_call_table 中添加你的系统调用入口 根据你用的内核位数(32/64bit) 选择需要修改的文件: arch/mips/kernel/scall32-o32.S ------> 32bit kernel arch/mips/kernel/scall64-64.S ------> 64bit
福珑迷你PC之主板结构 其中 Local I/O 总线为: intel 风格的并行总线,8bit 数据, 19bit 地址,因此支持的最大存储空间是2^19 * 8/8 = 512KB存储PMON的flash memory(Am29LV040B)就通过 Local I/O 总线连接到北桥。
绕过 libc 直接使用系统调用 当前版本: 0.1完成日期: 2007-6-15作者: Dajie Tan 系统调用是用户态进程切入内核态的唯一入口,是内核为用户态进程提供服务的接口。Linux Kernel 提供了大约300个左右的系统调用,作为用户空间进程访问内核的 API。C 语言环境下,经常使用的(如getpid)是系统基础库 libc 封装过的。在其后面究竟隐藏着什么样的秘密呢?1. 先看一个例子:#include i
IEEE754 笔记 IEEE754 标准是 IEEE 对浮点数表示的规范,目的在于统一浮点数的编码,提高浮点运算程序的可移植性。IEEE754有3种浮点数格式:单精度、双精度、扩展双精度。每种格式皆由3部分组成: 符号位(s)、指数(e)和尾数(m)。single-precision : | 31 | 30:23 | 22:0 | (Ns=1, Ne=8, Nm=23)double-precision: |
Breaking Free Troy(T):Were soaring, flyingTheres not a star in heavenThat we cant reachGabriella(G):If were tryingSo were breaking freeTroy: You know the world can see usIn a way thats different than who we a
Chaos on Graphics About 数学库之一 SSE/SSE2 Chaos Chiao 毫无疑问,数学库是图形程序的基石,是图形程序运行效率的关键之一。一个优秀的数学库可以让图形程序运行得更流畅,甚至要快上几十倍上百倍。有时候替换一条除法运算会带来成倍的效率增长,比如用乘以 1/op 替换 vector 里的 operator /。当然,更高级的优化是使用 SIMD 优化海量运算,这就是本文的中心——SSE/SSE2 优化。在描述 SSE
Debian etch 基本系统 initial ram disk 的分析 ilovestars 2007年5月3日于瀚海星云 Linux 版 自己最近花时间研究了一下 linux 的 initial ram disk,然后就写了这篇文章。 因为是要给别人看的,所以写的时候就比较小心,不能放过细节。这样就要搞清楚之前 不太在意的一些问题,对自己也是一个提高的过程。而且写的过程中发现,有些话不是 很好组织,估计是自己的写作能力下降了吧。所以,linu
RISC 下非对齐访问的问题 1. 问题RISC 下使用访存指令读取或写入数据单元时,目标地址必须是所访问之数据单元字节数的整数倍,这个叫做地址对齐。比 如在 MIPS 平台上,lh 读取一个半字时,存储器的地址必须是 2 的整数倍; lw 读取一个字时,存储器的地址必须是 4的整数倍; sd 写入一个双字时,存储器的地址必须是 8 的整数倍。倘若访存时,目标地址不对齐,则会引起异常,典型的是系统提示“总线错误”后,直接杀死进
怎样规划你的毕业后的人生 我今年39岁了, 25岁研究生毕业,工作14年,回头看看,应该说走了不少的弯路,有一些经验和教训。现在开一个小公司,赚的钱刚够养家糊口的。看看这些刚毕业的学生,对 前景也很迷茫,想抛砖引玉,谈谈自己的看法,局限于理工科的学生,我对文科的不懂,身边的朋友也没有这一类型的。 91年研究生毕业,那时出路就是1种:留在北京的国营单位,搞一个北京户口,这是最好的选择。到后来的2~3年内,户口