自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(72)
  • 资源 (3)
  • 收藏
  • 关注

原创 PMON(龙芯修改版)常用操作命令

pmon 是一个兼有BIOS和bootloader部分功能的开放源码软件,多用于嵌入式系统。与BIOS相比功能不足,与常见的bootloader 相比,功能要丰富的多。基于龙芯的系统采用 pmon 作为类 BIOS 兼 bootloader,并做了很多完善工作。其有如下主要特点:         * 支持ext2 fat32 ram 文件系统     * 支持网络引导(tftp),磁

2008-01-10 21:30:00 8279

原创 Linux 上下文切换分析笔记 (MIPS)

1. 内核栈切换 (MIPS)调度切换至一个进程时,根据 task_struct->thread_info 的值设置 *kernelsp(当前正在运行进程之内核栈栈底),其值为 thread_info + THREAD_SIZE - 32(MIPS 下,使用 set_saved_sp 宏)。2. 异常、中断寄存器的保存 (MIPS)使 用SAVE_SOME 保存上下文时,如发现从用户态切入核心态,

2008-01-10 21:26:00 3276

原创 Linux 存储管理分析札记

1. MIPS 与 X86 的 TLB 差别其在于对 TLB 不命中时的处理上:MIPS 会触发TLB Refill 异常,内核的 tlb_refill_handler 会以 pgd_current 为当前进程的 PGD 基址,索引获得转换失败的虚址对应的 PTE,并将其填入 TLB,完了CPU 把刚刚转换失败的虚地址再走一下 TLB 就OK了。而 X86 在 TLB 不命中时,是由硬件 MMU

2008-01-10 21:25:00 1377

原创 使用 graphviz 形象化有向图

将有向图数字化,可以用一个邻接矩阵表示。计算机对这个图进行一系列的处理后(比如求闭包),如果要看看处理后的图,可以借助于 graphviz 这个强大的开源工具。1. Graphviz 简介Graphviz 是 AT&T Labs-Research 开发的自动图形绘制工具, 可以很方便的可视化结构信息,把抽象的图和网络用几何的方式表现出来。支持多种格式输出,如 jpg, png, gif, svg,

2007-10-11 15:06:00 2915

原创 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

2007-10-11 13:59:00 1628

转载 linux下把共享库(SO)加载到指定的内存地址

作者:absurd   出处:http://blog.csdn.net/absurd一位朋友最近遇到一个棘手的问题,希望把共享库(SO)加载到指定的内存地址,目的可能是想通过prelink来加快应用程序的起动速度。他问我有没有什么方法。我知道Windows下是可以的,比如在VC6里设置/base的值就行了,所以相信在Linux下也是可行的。 VC有编译选项可以设置,猜想gcc也应该有吧

2007-09-12 10:32:00 3129 1

转载 Linker script 链接器脚本

作者:firststp    出处:http://blog.csdn.net/firststp/每个链接都由链接脚本控制着,脚本由链接器命令语言组成。脚本的主要目的是描述如何把输入文件中的节(sections)映射到输出文件中,并控制输出文件的存储布局。大多数的链接脚本就是做这些事情的,但在有必要时,脚本也可以指导链接器执行一些其他的操作。链接器总是使用链接器脚本,如果你没有提供一个你

2007-09-12 10:17:00 1479

原创 龙芯版 memcpy 的实现

当前版本: 0.1完成日期: 2007-6-15作者: Dajie Tan memcpy 是为最常用之函数,多媒体编解码过程中调用频繁,属调用密集型函数,对其性能优化很有意义。1. 概述memcpy 所做的操作是把内存中的一块数据复制到内存的另一个地方,也就是内存到内存的数据拷贝,这个过程需要CPU的参与,即:先从内存取数据到CPU的寄存器,然后再从寄存器写到内存中。可以用类似如下C 代码实现:c

2007-09-06 10:56:00 1903

原创 oprofile for godson2e 移植手记

当前版本: 0.1完成日期: 2007-6-7作者: Dajie Tan 0. 概述oprofile 在Linux 上分两部分,一个是内核模块(oprofile.ko),一个为用户空间的守护进程(oprofiled)。前者负责访问性能计数器或者注册基于时间采样的函数(使用register_timer_hook注册之,使时钟中断处理程序最后执行profile_tick 时可以访问之),并采样置于内核

2007-09-06 10:38:00 1151

原创 使用oprofile分析性能瓶颈

当前版本: 0.1完成日期: 2007-5-25作者: Dajie Tan 1. 概述oprofile 是 Linux 平台上,类似 INTEL VTune 的一个功能强大的性能分析工具。其支持两种采样(sampling)方式:基于事件的采样(event based)和基于时间的采样(time based)。基于事件的采样是oprofile只记录特定事件(比如L2 cache miss)的发生次数

2007-09-06 10:31:00 1615

原创 MIPS Linux 下添加系统调用

 添加一个系统调用有以下几个步骤: 1.  在 kernel 的系统调用表 sys_call_table 中添加你的系统调用入口 根据你用的内核位数(32/64bit) 选择需要修改的文件: arch/mips/kernel/scall32-o32.S  ------> 32bit kernel arch/mips/kernel/scall64-64.S    ------> 64bit

2007-09-06 09:57:00 2784

原创 福珑迷你PC之主板结构

其中 Local I/O 总线为: intel 风格的并行总线,8bit 数据, 19bit 地址,因此支持的最大存储空间是2^19 * 8/8 = 512KB存储PMON的flash memory(Am29LV040B)就通过 Local I/O 总线连接到北桥。

2007-09-04 16:18:00 1357 1

原创 绕过 libc 直接使用系统调用

当前版本: 0.1完成日期: 2007-6-15作者: Dajie Tan 系统调用是用户态进程切入内核态的唯一入口,是内核为用户态进程提供服务的接口。Linux Kernel 提供了大约300个左右的系统调用,作为用户空间进程访问内核的 API。C 语言环境下,经常使用的(如getpid)是系统基础库 libc 封装过的。在其后面究竟隐藏着什么样的秘密呢?1. 先看一个例子:#include i

2007-08-28 13:18:00 1958

原创 IEEE754 笔记

IEEE754 标准是 IEEE 对浮点数表示的规范,目的在于统一浮点数的编码,提高浮点运算程序的可移植性。IEEE754有3种浮点数格式:单精度、双精度、扩展双精度。每种格式皆由3部分组成: 符号位(s)、指数(e)和尾数(m)。single-precision :  | 31 | 30:23 | 22:0 |   (Ns=1, Ne=8, Nm=23)double-precision:  |

2007-08-24 16:34:00 1040

原创 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

2007-08-23 11:36:00 718

转载 Chaos on Graphics About 数学库之一 SSE/SSE2

Chaos Chiao  毫无疑问,数学库是图形程序的基石,是图形程序运行效率的关键之一。一个优秀的数学库可以让图形程序运行得更流畅,甚至要快上几十倍上百倍。有时候替换一条除法运算会带来成倍的效率增长,比如用乘以 1/op 替换 vector 里的 operator /。当然,更高级的优化是使用 SIMD 优化海量运算,这就是本文的中心——SSE/SSE2 优化。在描述 SSE

2007-08-22 09:11:00 1397

转载 Debian etch 基本系统 initial ram disk 的分析

         ilovestars 2007年5月3日于瀚海星云 Linux 版    自己最近花时间研究了一下 linux 的 initial ram disk,然后就写了这篇文章。 因为是要给别人看的,所以写的时候就比较小心,不能放过细节。这样就要搞清楚之前 不太在意的一些问题,对自己也是一个提高的过程。而且写的过程中发现,有些话不是 很好组织,估计是自己的写作能力下降了吧。所以,linu

2007-08-17 11:59:00 1893

原创 RISC 下非对齐访问的问题

1. 问题RISC 下使用访存指令读取或写入数据单元时,目标地址必须是所访问之数据单元字节数的整数倍,这个叫做地址对齐。比 如在 MIPS 平台上,lh 读取一个半字时,存储器的地址必须是 2 的整数倍; lw 读取一个字时,存储器的地址必须是 4的整数倍; sd 写入一个双字时,存储器的地址必须是 8 的整数倍。倘若访存时,目标地址不对齐,则会引起异常,典型的是系统提示“总线错误”后,直接杀死进

2007-07-31 14:37:00 4740 1

转载 怎样规划你的毕业后的人生

   我今年39岁了, 25岁研究生毕业,工作14年,回头看看,应该说走了不少的弯路,有一些经验和教训。现在开一个小公司,赚的钱刚够养家糊口的。看看这些刚毕业的学生,对 前景也很迷茫,想抛砖引玉,谈谈自己的看法,局限于理工科的学生,我对文科的不懂,身边的朋友也没有这一类型的。  91年研究生毕业,那时出路就是1种:留在北京的国营单位,搞一个北京户口,这是最好的选择。到后来的2~3年内,户口

2007-07-31 14:19:00 1373 1

原创 IA32 SSE3

1. 简介SSE3 系 Intel Streaming SIMD Extensions 的第3次扩展,相较于 SSE2,Intel 新加入了 13 条指令。其最早于 2004 年在 Pentium 4 Prescott 中引入,后续 IA32 的 CPU 都支持之。2. 支持 SSE3 的 CPU    * AMD:          o Athlon 64 (since Venice Stepp

2007-06-19 16:31:00 1350

原创 龙芯汇编语言编程(1)

当前版本: 0.1完成日期: 2007-3-22作者: Dajie Tan 1. Hello World从经典的Hello World开始:   .text                          #表示将后面的代码编译后置于目标文件的.text段   .globl    main                #声明main为全局变量。该变量名会

2007-06-06 17:44:00 3740 2

原创 关闭龙芯2E 之 cache

PMON 加载kernel 时,是加载到 kseg0 的(通过在 arch/mips/Makefile 中: load-$(CONFIG_GODSONEV2E) += 0x80100000 指定),该地址空间是 unmaped cached 的,当 PMON 将控制权交给内核后,内核启动过程中cache 是打开的,但在跟踪内核的启动过程中,极易受 cache 的影响,每把断点设在有 cache 操

2007-06-06 17:04:00 1199

原创 mplayer 中收集视频播放数据

Mplayer 中有 -benchmark 参数可以收集视频播放的数据1. 常用命令mplayer -benchmark foreman.avi 如果不需要视频输出,可以这样:mplayer -benchmark -vo null foreman.avi一般情况下,我们测试某个视频解码器的效果,也不需要音频的数据,则:mplayer -nosound -vo null -benchmark for

2007-06-06 17:02:00 1164

原创 龙芯2E平台程序性能分析

当前版本: 0.1完成日期: 2007-3-27作者: Dajie Tan 1. 分析一段代码的性能,最常用的方法是测量这段代码的运行时间。假如我要分析下面这两段代码的性能差异,可以在代码前后插入2个变量,分别记录运行前后的时间,相减即可:代码一: int matrix[2047][7];int main(){    int i, j, sum = 0;    unsigned int beg

2007-06-06 16:59:00 1238

原创 32位模式下使用64位寄存器注意事项

1. 汇编环境龙芯2E平台32位OS模式下,要使用64位寄存器可以在汇编代码里直接 用,运算时使用d开头的指令(double-word, 64bit),作用于寄存器即可。如:dadd, dsub, dmult, dmultu, ddiv, dsll, dsrl, dsra 等等。访问存储器可以直接使用ld/sd, ldc1/sdc1使用这些指令前,先用伪操作 .set mips3 告诉汇编器下面的

2007-06-06 16:49:00 4062 1

原创 MIPS 平台下 I/O 端口的读写--以龙芯为例

MIPS 下,I/O 端口是直接映射到地址空间的,不像x86下有专用的 I/O 空间,使用专用的 in/out 指令访问之。故而 MIPS 上访问 I/O 端口直接使用访存指令访问对应的地址即可。但是各种控制器的寄存器映射到地址空间的何处,具体的平台就不一样了。下面以龙芯2E为例说明之。龙芯2E 下使用 C语言读写 8259A 的 0x20 端口char *p_port;char data;p_p

2007-06-06 16:41:00 4031

原创 酷睿微体系结构笔记

酷睿微体系结构,基于Pentium M的微体系结构,是片内多个核(cmp)的实现。设计的原则是平衡能耗的基础上尽可能的提高性能,即提高每瓦特性能(能效比)。相比前代的主要改进:宽位动态执行(Wide Dynamic Execution)宽位动态执行实际上就是提高IPC,从而提高性能。(Perf = Freq x IPC)增加了一组解码器。拥有4组解码器,比上代Pentium Pro (P6) /

2007-06-01 10:59:00 1028

转载 英国南海股票泡沫

3.1 传染到英吉利海峡对岸的泡沫当法国的股票市场在约翰·劳的鼓动下疯狂上扬,并且在1720年1月登峰造极的时候,海峡另一边的英国人再也按捺不住冲动,马上开始效仿。尽管英国和法国 在争夺欧洲霸主时明争暗斗,互不相让,但是在巨额国债方面两国政府是五十步笑一百步,相差无几。既然约翰·劳能够通过发行股票来弥补巨额国债,那么,英国 也有充分的理由如法炮制。 英国南海股票泡沫的兴起与发展过程和法国密西西比泡

2007-05-30 16:16:00 2550

原创 《数学的美与理》笔记

上帝数学化地设计了世界毕达哥拉斯(Pythagoras 约公元前580~500)企图通过揭示数的奥秘来探索宇宙的永恒真理。如果你想认识周围的世界,就必须找出事物中的数。一旦数的结构被抓住,你就能控制世界。数是人类思想的向导和主人,没有它的力量,万物就会处于昏暗与混乱之中。我们并不生活在一个真理的世界中,而是生活在蒙昧与错觉中。勾股定理已有二千年的历史,它有一点点的陈旧感吗?演绎推理异乎寻常的作

2007-05-30 15:37:00 1899

原创 《唐伯虎点秋香》中的超级对联

  一乡二里共三父子不识四书五经六义竟敢教七八九子十分大胆  十室九贫凑得八两七钱六分五毫四里尚且三心二意一等下流    注:上面的对的并不工整,网上有人给了个绝对工整的:      一乡二里共三父子不识四书五经六义 竟敢教七八九子十分大胆  十寺九庙凑八和尚深知七情六欲五戒 仍要娶四三二女一等下流    莺莺燕燕翠翠红红处处融融恰恰  雨雨风风花花叶叶年年暮暮朝朝    图画里龙不吟虎不哮,小小

2007-05-28 10:28:00 2017

原创 MIPS 汇编语言编程的艺术(龙芯适用)

分析系统调用的实现时看到这么一段代码,令人不禁拍案叫绝。 系统调用的参数传递,前4个参数通过a0~a3传,后面的参数要通过栈来传,目前内核 系统调用最长的参数个数为8。 用栈传递参数时,涉及到要将位于用户空间的参数先复制到内核空间(内核栈)。 因为系统调用的参数个数不定,因此就需要判断参数个数为5、6、7、8 不同情况时, 相应的复制操作个数。5个参数时需要复制个数为1,6个时为2,以此类推。

2007-05-09 13:13:00 3059

原创 FFMPEG 笔记

1. encode yuv fileffmpeg -s cif -vcodec mpeg4 -i paris.yuv paris.avi-s 指定帧大小 cif 为 352x288,qcif 为 176x144,4cif 为 704x576-vcodec 指定采用的编码器-i 指定输入文件2. output raw YUV420P fileffmpeg -i paris.avi paris0.yu

2007-04-23 17:34:00 3198 1

转载 活的知识-论大众文化研究

主持人:追求进步、学术倾听,世纪大讲堂问候您。在20世纪初年的时候,一些先进的中国人就发现,中国文化越 来越散发出腐朽的味道,换句话说就是它越来越脱离大众,越来越失去了活性,那今天这个问题得没得到解决,现在我给大家请来了北大中文系有名的教授戴锦华, 好,有请戴教授上场。好,请坐。我刚才跟戴教授握手的一刹那,发现她的个子不矮,我的个子是1米83,她仅比我矮一点,所以我估计您的个子也在1米74以 上。

2007-04-19 17:02:00 1353

转载 "己所欲,勿施于人"

作者:周国平   选自:周国平自选集   出版社:海南出版社 中外圣哲都教导我们:"己所不欲,勿施于人。"这是要我们将心比心,不把自 己视为恶、痛苦、灾祸的东西强加于人。己所不欲却施于人,损人利己,把自己的快乐建立 在别人的痛苦之上,这种行径当然是对别人的严重侵犯。然而,这只是事情的一个方面。  另一方面,自己视为善、快乐、幸福的东西,难道就可以强加于人了吗?要是别人并不和你 一样认为它们是善、快

2007-04-17 13:53:00 1096

原创 Using Automake and Autoconf to manage large project

  <!-- @page { size: 21cm 29.7cm; margin: 2cm } P { margin-bottom: 0.21cm } --> I. Hello world! a. 建立源码树 proj |---- NEWS |---- README

2007-04-11 10:50:00 1340

原创 MIPS GCC 嵌入式汇编(龙芯适用)

当前版本: 0.1完成日期: 2007-4-9作者: Dajie Tan 1. GCC 内嵌汇编的基本格式asm("assembly code");如: asm("syscall"); //触发一个系统调用如果有多条指令,则需在指令尾部添加/t和/n,如: asm("li v0, 4011/t/n" "syscall");括号里的字符串 GCC 前端不作分析,直接传给汇编器 as ,故而

2007-04-09 18:15:00 4897

原创 x86 下 strcpy 高效实现

0. 先看个通常的实现:为了分析方便不考虑 to/from 指针为NULL情况。char *strcpy(char *to, const char *from){     char *rev = to;     while(*to++ = *from++);     return rev;}gcc -S test.c -o test.s 编译产生汇编码为:strcpy:      

2007-04-09 18:09:00 1642

原创 解析LINUX下输入法环境变量XMODIFIERS/GTK_IM_MODULE

我们配置输入法时,都是习惯性的在输入法启动前导出环境变量:export XMODIFIERS=@im=SCIMexport GTK_IM_MODULE=SCIM他们有何用意呢??我们常用的输入法有以下几种:1. XIM (X输入法, 所有 X 图形程序都是可用的)2. GTK immodule(GTK输入模块, 专给 GTK+2/Gnome 程序用的,GTK+ 1 不适用)3. QT immodu

2007-04-06 15:18:00 10010

原创 GNU/Linux下库机制笔记

1. 创建静态库:      gcc -c hello.c -o hello.o      ar rcs libhello.a hello.o2. 使用静态库:      gcc -o test test.c -static -L. -lhello3. 共享库版本: version.minor.release4. 构建动态共享库:   gcc/g++下加 -fPIC -shared 参数即

2007-04-04 13:09:00 860

原创 USB 设备相关驱动模块(2.6内核)

A. 核心模块   usbcore                                 ------>对应内核配置参数 CONFIG_USBB. USB 主控制器驱动模块   ehci_hcd (EHCI)     USB 2.0 支持            ------> CONFIG_USB_EHCI_HCD     uhci_hcd (UHCI)     PC 系统的

2007-04-04 13:01:00 1137

Linux System Programming

OReilly Linux System Programming

2008-02-28

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除