大浪淘沙 发表于 2006-5-3 09:37:31

SPGC菜鸟成长记

首先声明,我是一个菜鸟,玩小8也有3年多了,只是会打打补丁,至于补丁是怎么做成的一窍不通,我这段时间刚开始需学习做补丁,我开这个帖子的目的是把自己学习的历程记录下来,本贴将记录一个菜鸟到学会打第一个补丁的全部学习过程,这样可以帮助同样向学习补丁的菜鸟。我会每天把自己学习和理解记录下来,请大家看完贴后如果有什么技术上的见解请踊跃跟贴,尽量不要去现"沙发、板凳、顶”之类的灌水,不过你要实在想灌我也没办法;P.
好了闲话少说,要想做补丁就的现拜读MrJewes和狼大的
【专题文章】西门子Flash修改入门
【专题文章】西门子6688Flash修改入门的入门
【专题文章】西门子Flash修改进阶
我的学习资料是《西门子C166》,我将会把其中的重点摘抄记录下来。
   首先先介绍一下cpu根据书中介绍C166是一款16位单片机,他是一个系列的产品型号有166、167、165、164、163、161等等,根据每个系列的介绍推测小八的CPU估计是c165,165是这样介绍的:他是c167的逻辑发展,也有16m的寻址空间,同样的总线控制器,主要用于数据处理场合,例如实时处理大的数据量的通讯产品等,指令时间80ns(25Mhz),c165供电电压可在2.7V左右,降低能耗。但是不管是哪个型号他们的内核是一样的,编程方式也是一样的。
   存贮结构C166内存空间是冯。诺依曼结构,即数据和程序在同一个线性地址空间,如内部ROM/FLASH/OTP、内部RAM,内部SFRs和ESFRs都在同一寻址空间。C166地址空间为16M,它分为256个段,每段又划分为4页每页16K

大浪淘沙 发表于 2006-5-3 11:53:13

晕,《西门子C166》的作者太牛了,讲的是天花乱坠公式数字满天飞,特殊功能寄存器部分讲的实在看不懂,没法啦,使劲往后翻直接看汇编部分,首先是汇编指令表,总算能看懂了,是中文小8指令表啊,大家收好啊!
算数指令        功能描述
ADDADDB        两字或字节加法
ADDCADDCB        带进位的两字或字节加法
SUBSUBB        两字或字节减法
SUBCSUBCB         带进位的两字或字节减法
MULMULU        16位乘16位带符号或无符号乘法
DIV   DIVU        16位除16位带符号或无符号除法
DIVLDIVLU        32位除16位带符号或无符号除法
CPLCPLB        一个字或字节的1的补数
NEG   NEGB        一个字或字节的2的补数
逻辑指令       
ANDANDB        两字或字节位与
ORORB        两字或字节位或
XORXORB         两字或字节位与或
比较和循环指令       
CMPCMPB        两字或字节比较
CMPI1   CMPI2        带增长1或2的两字比较
CMPD1CMPD2        带增长1或2的两字比较
布尔位操作指令       
BFLDH   BFLDL        字的高位字节或低位字节的可屏蔽位的操作
BSET        对某位置1
BCLR         对某位清零
BMOV        移动某一位
BMOVN        反相移动某位
BAND         两位相与
BOR        两位相或
BXOR        两位相与或
BCMP        两位比较
移位和循环移位指令       
SHR        字右移
SHL        字左移
ROR        字循环右移
ROL        字循环左移
ASHR        带符号位右移
优化指令       
PRIOR        决定移位次数以正则化字数操作数(支持浮点数)
数据转移指令       
MOVMOVB        两字或字节的标准数据转移
MOVBSMOVBZ        字节转移为字用零或符号扩展
系统堆栈指令       
PUSH        将字压入堆栈
POP        将字弹出堆栈
SCXT        将字保存在堆栈,然后用新值数新旧值
跳转指令       
JMPAJMPI   JMPR        当前程序段有条件跳转到绝对、间接或相对目标地址
JMPS        在任何程序段无条件跳转到绝对目标地址
JB   JNB         根据选择位的状态,在当前程短有条件跳转到相对目标地址
JBC   JNBS        根据选择位的状态,用取反测试位,在当前程序段有条件跳转到相对目标地址
调用指令       
CALLA   CALLI        在当前程序段中有条件调用绝对或间接地址的子程序
CALLR        在当前程序段中无条件调用相对地址的子程序
CALLS        在当前程序中无条件调用绝对地址的子程序
PCALL        在当前程序段中将选择寄存器压入堆栈无条件调用绝对地址的子程序
TRAP        在程序段中无条件跳转到中断或陷阱矢量跳转表
返回指令       
RET        在当前程序段从子程序返回
RETS        在任何程序段从子程序返回
RETP        在当前程序段从子程序返回,外加从系统堆栈中弹出一个选择寄存器
RETI        从中断服务程序中返回
系统控制指令       
SRST        通过软件复位
IDLE        进入休闲状态
PWRDN        进入掉电状态
SRVWDT        服务看门狗定时器
DISWDT        关闭看门狗定时器
EINIT        表示初始化程序结束
其他       
NOP        空操作要求2个存储和最小执行时间
ATOMIC        定义一个不分离的指令序列
EXTR        切换“reg”、“bitoff”和“bitaddr”寻址模式到扩展SFR空间
EXTPEXTPR        不管DPP寻址调度,用特定数据页代替DPPs并有选择的切换到ESFR之间
EXTSEXTSR        不管DPP寻址调度,用特定段代替DPPs并有选择的切换到ESFR之间
      

wodr版的文件我上传到FTP空间上去了,需要的自己去找找

大浪淘沙 发表于 2006-5-3 12:02:04

C166指令集下载
把这个网址复制下来用讯雷下就可以了,直接点是下不来的,我申请的空间比较变态

[ 本帖最后由 大浪淘沙 于 2006-5-3 12:25 编辑 ]

西门之客 发表于 2006-5-3 16:03:05

楼主还能告诉我放在哪儿了?我找遍了FTP没找到。郁闷~~

要不发份《西门子C166》WORD版发给我,谢谢。tzhotdog@sina.com

大浪淘沙 发表于 2006-5-3 21:17:49

ftp地址:
/soft/SPGC/C166/Doc/c166指令.rar
《西门子C166》是一本书我没有电子版

hbshylove2 发表于 2006-5-3 22:48:52

很想学习,希望此贴能经常更新,多学点。

Xinshou 发表于 2006-5-9 09:27:00

支持………………

大浪淘沙 发表于 2006-5-9 17:01:22

这两天没什么长进,只是学会了看补丁结构,以前只是刷高手们做好的现成的补丁,至于那一堆字母是什么意思根部不懂,现在知道结构了,举个例子:

待机时可禁用主菜单补丁

;版本:6688v55
;作者:我爱绿茶
;时间:2005-01-24
;说明:待机时可禁止使用主菜单或相应设置的功能。
;这个补丁是参考了,dingol大侠的“更改常用联络方式”做的,纯属好玩:)
35EA78:DAA2A66D FABFA089
0x1F89A0:FFFFFFFFFFFFFFFFFFFFFFFF D7400E00F2F1423A9AF106C0;C0默认第13项,可自已修改
0x1F89AC:FFFFFFFF DAD63A49;主菜单函数,可替换。如替换了别的功能待机时就不能进入主菜单了,不过图型菜单可以进入。
0x1F89B0:FFFFFFFFFFFFFFFFFFFFFFFF FAD530EEDAA2A66dFAD57CEA


在这个补丁中我们可以看到有一堆字母和汉字,实际起作用的是那一串字母,所有的汉字都没用,汉字前面" ; "这是汇编中注释符,表示后面的部分是注释,用来解释程序的作用,是给读程序的人看得。
给计算机看的是:35EA78:DAA2A66D FABFA089
在这一句中v-klay是这样定义的,35EA78表示的是rom地址,就是这句程序要存储到rom的哪个位置,通常是偏移量;而DAA2A66D表示的是在35EA78地址中原来存储的数据内容,(主要作用是用来撤销补丁用的)这样如果你有一个补丁不想用了可以用原来的补丁把它撤消掉了;FABFA089表示我们要玩地址中写入的新内容。
至于为什么这些都是看不懂的字母,那是因为这是给计算机看的机器语言,FABFA089是16进制的数字,转换成二进制就是1111101010111110101000001001,这就是汇编后的机器语言。

robin 发表于 2006-5-20 22:11:56

支持这样的帖子~~~正好也想学习一下C166

JunFeng 发表于 2006-5-22 08:54:02

回复 #8 大浪淘沙 的帖子

呵呵。又一个来日之星!!
支持。。。

其实了解了一些基本知识后,补丁挺简单的,先看每行代码的含义,再看它在运行时的具体作用,就慢慢会对fullflash比较了解了
基本知识学的应该比较快,只是对于fullflash的理解会比较慢,记得狼大说过,6m的flash对于我们来说过于庞大,简单而枯燥,多看补丁多理解flash,这就是高手之道

pioneercpu 发表于 2006-10-16 09:09:49

支持这样滴帖子~~~~~~~~~~~

chire_8 发表于 2006-11-30 13:53:41

好像说LZ好久没有出来说进度了........

hbshylove2 发表于 2006-12-5 22:12:15

估计已经放弃了。
页: [1]
查看完整版本: SPGC菜鸟成长记