- 注册时间
- 2004-11-14
- 最后登录
- 1970-1-1
|
网上有不少人想知道修改内核的方法,其实对内核做简单的修改并不难(难的是像QIQI一样通过改中断提高效率),看看立天的那篇文章应该就懂了,但那篇文章经常不知沉到哪里(暴殄天物啊,见到好文都不顶一下-_-b).所以我还是写写吧,而且尽量写得更详细点,虽然大部份几乎可以说是抄立天的.
准备工具 : PM , GVBASIC+ , WQXHEX , XASMBAS (也可以不用,建议还是用啦) , 算CRC效验的工具 (立天已做好了,开源的人果然伟大啊^_^).
此外还要准备一个表,如下:
100--80FF 02
8100--100FF 03
10200--180FF 04
18100--200FF 05
20100--280FF 06
28100--300FF 07
30100--380FF 08
38100--400FF 09
40100--480FF 0A
48100--500FF 0B
50100--600FF 0C
58100--600FF 0D
60100--680FF 0E
68100--700FF 0F
70100--780FF 10
这个表是NOR页码和文件地址的对应.怎么用呢,后面再说.
将要改的升级文件改名为UPDATE.BAS(注意了,一定要是大写,且后缀名为".BAS".这是立天的意思,算CRC就是针对这个文件的),并用工具下到星星上(用FTP-LINK下载的话会改名为小写,注意一定要改过来).最好星星升的也是这个内核.
下面开始修改了,首先找到一些感兴趣的地方.比如改灰度开机,首先要找到那段程序,怎找呢?存开机画面文件名的地址是09DD(很容易找),那么相应的,运行开机画面的程序一定会含有DC 09这两个HEX,用PM找UPDATE.BAS或用WQXHEX找NOR.可以找到几个结果,选出可能性最大的用WQXHEX反它,并一步步往上找(就是找这一段程序真正开始的地方).
这里说一下上面那个表的用法.如找到06页的861A是一段空白的开始(在那里可以加入自己写的东东),那么用PM怎么找到那个地方呢?这样算:
20100+861A-4000=2471A 原理是06页的内容是从文件20100开始的,而在内存中NOR在4000-BFFF,所以861A-4000之后才是与20100的"距离",加上06页开始的20100,就是这段内容在文件中的位置了.
用PM跳到2471A,是一大段FF吧.同样可以根据PM找到的文件内的地址换算成对应的NOR的页码和地址.这个换算经常用到,并且一定不要算错!!!!!!!!
考虑好要改的地方(包括自己加入的代码写在哪里,改哪里的系统跳转以便执行自己写的代码等)后在纸上写下要改的内容,可以用XASMBAS转为机器码,也可以手工编译,一切准备好后,用PM将代码等写入UPDATE.BAS,当然,要找准位置哦(就是上面的那个计算).
最后,确定没问题了,运行CRC.BAS,它会算出两个字节的checksum,记下它,然后再用pacmgr打开那个"UPDATE.BAS",将checksum写在 100F0 的地方.
然后上传回电脑,改为BIN就可以用HOT-LINK升级了.
PS:
格盘:03 4B53
启动:03 403D(有一个中断指向它,启动运行更早的地方我没找到)
通讯:0D 9327(0D页有很多东东,星星不在,以前记下的资料也不见了,所以其它的地址写不出来)
好想改这些地方,但我的星星T_T......
附:立天的文章
nc3000升级文件diy
前段时间有一次突发奇想,将nc3000官方的3.2升级文件下到了文曲星,用pacmgr一打开,经过研究,发现就是nor的02到10页的内容,马上改了几个无关的字,传回电脑,然后用hotlink利用这个文件升级——我是想试试可不可以自己做升级文件!
然而失望的是,升级之后,重启时系统提示升级,即我失败了,只好用原来的升级文件重新升级了一遍。
细想之下,才发现我没有改checksum,但郁闷的是我不会算checksum-_-。
幸而后来在朋友的指点下,在系统里抄了那段算checksum的程序出来,改动了一下,自己写了一个算升级文件的checksum的程序。
改好checksum之后,再升了一次级,终于成功!哈哈,真别提当时有多兴奋!
现在,把升级(其实就是改内核)的方法跟大家分享一下:
首先,去ggv把那个3.2的升级文件下载下来,把它的文件名改为“UPDATE.BAS”(注意了,一定要是大写,且后缀名为“.BAS”,将.bin改成.BAS是为了防止文件下载的时候被“解密”,“解密”之后就面目全非了),然后用hotlink或ftplink把它下到“BASIC文件”目录,同时下载压缩包里的那个用于算checksum的程序“CRC.BAS”(是一个bas+mcode的文件)。
然后,你就可以用pacmgr去修改那个升级文件“UPDATE.BAS”了。打开文件后,前0-FF不用管(应该是那些说明机型之类的信息,具体不知道是什么,高手可以研究一下),由100开始,就是nor的02到10页的内容了,即100-80FF是02页,8100-100FF是03页,10100-180FF是04页……
然后就改,要改什么就是你的事啦,我就把ftplink和磁盘扫描放内核了,呵呵!
改好后,就是非常关键的一步:去运行“CRC.BAS”(GVBASIC+中),它会算出两个字节的checksum,记下它,然后再用pacmgr打开那个“UPDATE.BAS”,将checksum写在100f0的地方,然后退出pacmgr,把升级文件“UPDATE.BAS”上传回电脑,把它的后缀名改回.bin,你就可以通过hotlink的“flash版本升级”,用你自己改过的升级文件帮机器升级了。
以上要注意的是:
1.如果你是菜鸟,最好不要试,因为这些操作有一定危险性。
2.如果不小心改坏了机器,可以用原来的那个升级文件重新升级,一般不会出事。
3.如果你要改通讯部份的内核,请慎重慎重,如果改错了就有可能连用2的方法救机都不行了。
4.我所提供的CRC.BAS只适用于NC3000,其它机型勿用!
以上有不明白的地方可以发e-mail给我(zzklitian@163.com),我上网的时候会尽量回复你的。
另:nc3000还有一个新华词典的升级,我看不出什么东西来,大家帮忙研究一下那个文件,知道它的格式的话,有望修改sysdir里的文件。 |
|