从12号拿一震开始,大家的心都揪在了四川汶川。今年是中国不寻常的一年,是我们08奥运之年,今年也是多灾的年。但是只要我们大家携手共进,就可以创造美好。人定胜天!!!
鲜血捐钱的,大家行动起来!!http://www.mcuol.com/Other/20080512/Index.htm

>> 阅读全文

ARM、C*Core(苏州国芯)、ZSP(Lsi Logic)等是近年来中国IP内核市场较活跃分子,但严格来讲,专做IP内核业务并收获颇丰者好像只有ARM一家。所以,如果说中国IP内核市场若干年来一直是由ARM在唱独角戏也并不过分。不过,随着2005年3月MIPS高调进入中国市场,ARM在中国一支独秀的局面很快就会被打破,因为MIPS至少在业务模式与技术能力上和ARM是个同一量级的竞争对手,中国IC设计公司也因为MIPS的进入而多了一个选择机会,从推动中国IC产业健康发展来看,ARM、MIPS都是不可或缺的。  IC Insight在其最近发布的市场研究报告中预测,中国在2005年将取代美国成为全球IC需求最大市场。暂且不论该预测能否成真,目前中国政府正在大力扶持本土IC设计能力,从而逐渐改变80%以上IC产品依赖进口的局面却是实实在在的,尤其是中国相关管理机构已把SoC设计方法视为中国迅速赶上国际领先IC设计水平的机会
。这就预示着,在中国未来若干年内的IC设计中,随着本土设计能力的提高,涉足基于高性能IP内核的微处理器开发将会越来越多。MIPS科技公司中国区总代表黎庆生表示:"MIPS科技公司将提供为中国本地芯片代工厂优化的微处理器IP产品,以进一步推动中国半导体产业的创新。"从公司...

>> 阅读全文

寄存器约定 对于在一个CPU上进行开发,掌握其工作的CPU的寄存器约定是非常重要的。 MIPS体系结构提供了32个GPR(GENERAL PURPOSE REGISTER)。这32个寄存器的用法大致如下: REGISTER NAME USAGE $0 $zero 常量0(constant value 0) $2-$3 $v0-$v1 函数调用返回值(values for results and expression evaluation) $4-$7 $a0-$a3 函数调用参数(arguments) $8-$15 $t0-$t7 暂时的(或随便用的) $16-$23 $s0-$s7 保存的(或如果用,需要SAVE/RESTORE的)(saved) $24-$25 $t8-$t9 暂时的(或随便用的) $28 $gp 全局指针(Global Pointer) $29 $sp 堆栈指针(Stack Pointer) $30 $fp 帧指针(Frame Pointer) (BNN:fp is stale acutally, and can be simply used as $t8) $31 $ra 返回地址(return address) 对一个CPU的寄存器约定的正确用法是非常重要的。当然对C语言开发者不需要关心,因为COMPILER会TAKE CARE。但对于KERNEL的开发或DRIVER开发的人就**必须**清楚。 一般来讲,你通过objdump -d可以清醒的看到寄存器的用法。 下面通过我刚才写的一个简单例子来讲解: ~/ vi Hello.c "Hello.c" [New file] /* Example to illustrate mips register convention * -Author: BNN *...

>> 阅读全文

摊上了移植bootloader和OS的事情,没办法,得把mips工作机制弄明白了才能干好啊。今天托我家狗狗了买了本 《see mips run》。就用它为主了。争取用一个月的时间走一遍。同时把学习笔记和心得记录到这里。本篇为第一章。从mips体系结构开始。 一.mips汇编语言 1.借助c预处理器,在汇编代码中避免使用寄存器编号。尽量使用寄存器名称。 2. 在一个单词后加 ":"表示这是个标号,标号可以包含各种字符,以及定义代码入口点和指定数据段的存储地址。 /* this is a comment */ # so is this entrypoint: #that is a label addu $1,$2,$3 #(regisers) $1 =$2+$3 3. 许多指令是3 个操作数,目的寄存器在左边(和intel的x86相反的)。 目前知道这些就行了。二 寄存器的特点 1. 有32个通用寄存器可供编程使用:$0 -$31.其中两个寄存器特殊: $0 无论存入什么,总是返回0. $31 被常规子程序调用指令(jal)用来保存返回地址。注意:尽管寄存器调用指令(jalr)可以用任何寄存器存放返回地址,但不建议使用$31以外的其他寄存器。 2. 其他方面,所有寄存器都是一样的,可以在任何指令中以相同的方式使用。 3. jal 指令返回地址是下例第三行指令,而不是气候的那条指令。 ............

>> 阅读全文

近来突然有了个卖开发工具的店的想法,说干就干,于是最近利用闲余在淘宝开了个专门卖一些嵌入式开发工具的店http://shop35077165.taobao.com希望群里的朋友帮我瞧瞧! 不是打广告,是我刚弄店实在很多不足需要提点。 我希望等一切准备妥当了,调整价格,正式开业!
可以提一些大家需要哪方面的工具理想价格甚么的。请问大家有没有好东东需要挂我哪店宣传甚么的可以跟我商量一下,免费帮你们挂上面。希望嵌入式在线的朋友精神支持啊!!
顺便问一下谁有做MIPS ARM PPC的仿真器的技术的啊,可以考虑合作!

>> 阅读全文


MIPS-LinuxKernel分析(3)
作者:陈怀临翻译来源:嵌入式技术网 好了,说了一通系统调用,无非是想让大家明白内核中寄存器的保存恢复过程,以及 为了少做些无用功所做的努力.下面看为什么要save_static_function:为了避免 s0寄存器的破坏. 如果我们使用 sys_rt_sigsuspend() { .. save_static; ... } 会有什么问题呢,请看, Nasty degree - 3 days of tracking. The symptom was pthread cannot be created. In the end the caller will get a BUS error. What exactly happened has to do with how registers are saved. Below attached is the beginning part of sys_sigsuspend() function. It is easy to see that s0 is saved into stack frame AFTER its modified. Next time when process returns to userland, the s0 reg will be wrong! So the bug is either 1) that we need to save s0 register in SAVE_SOME and not save it in save_static; or that 2) we fix compiler so that it does not use s0 register in that case (it does the same thing for sys_rt_sigsuspend) I am sure Ralf will have something to say about it. :-) ...

>> 阅读全文

上次说道SAVE_ALL里有些玄机,这里把include/asm-mips/stackframe.h对着注解一下,希望能说清楚一些.(因为时间关系,我写的文档将主要以这种文件注解为主,加上我认为有用的背景知识或者分析.)/* 一些背景知识 一.mips汇编有个约定(后来也有些变化,我们不管,o32,n32),32个通用寄存器不是一视同仁 的,而是分成下列部分: 寄存器号 符号名 用途 0 始终为0 看起来象浪费,其实很有用 1 at 保留给汇编器使用 2-3 v0,v1 函数返回值 4-7 a0-a3 前头几个函数参数 8-15 t0-t7 临时寄存器,子过程可以不保存就使用 24-25 t8,t9 同上 16-23 s0-s7 寄存器变量,子过程要使用它必须先保存 然后在退出前恢复以保留调用者需要的值 26,27 k0,k1 保留给异常处理函数使用 28 gp global pointer;用于方便存取全局或者静态变量 29 sp stack pointer 30 s8/fp 第9个寄存器变量;子过程可以用它做frame pointer 31 ra 返回地址 硬件上这些寄存器并没有区别(除了0号),区分的目的是为了不同的编译器产生的代码 可以通用 二. r4k MIPS CPU中和异常相关的控制寄存器(这些寄存器由协处理器cp0控制,有独立的存取方法)有: 1.status 状态寄存器 31 28 27 26 25 24 16 15 8 7 6 5 4 3 2 1 0 ---------------------...

>> 阅读全文

1.硬件知识 * CPU 手册: http://www.mips.com等. * 主板资料,找你的卖家. * 背景知识:如PCI协议,中断概念等.2.软件资源 * http://oss.sgi.com/linux,ftp://oss.sgi.com * http://www.mips.com * mailing lists: linux-mips@oss.sgi.com debian-mips@oss.sgi.com * kernel cvs sgi: cvs -d :pserver:cvs@oss.sgi.com:/cvs login (Only needed the first time you use anonymous CVS, the password is "cvs") cvs -d :pserver:cvs@oss.sgi.com:/cvs co linux 另外sourceforge.net也有另一个内核树,似乎不如sgi的版本有影响. * 经典书籍: * "Mips R4000 Microprocessor User''s Manual",by Joe Heinrich * "See Mips Run",by Dominic Sweetman * Jun Sun''s mips porting guide: http://linux.junsun.net/porting-howto/ * 交叉编译指南:http://www.ltc.com/~brad/mips/mips-cross-toolchain.html * Debian Mips port: http://www.debian.org/ports/mips * 系统杂志网站: http://www.xtrj.org3. mips kernel的一般介绍 (下面一些具体代码基于2.4.8的内核) 我们来跟随内核启动运行的过程看看mips内核有什么特别之处. 加电后,m...

>> 阅读全文