易码技术论坛

 找回密码
 加入易码
搜索
查看: 182313|回复: 4

[分享][非原创]

[复制链接]
发表于 2005-9-1 15:32:00 | 显示全部楼层
你做的工作很棒。提高篇的!希望出多点东西,相信很多人会顶你贴子!这个区很冷!
 楼主| 发表于 2005-9-1 19:15:00 | 显示全部楼层
多谢支持.[em04][em04][em04][em04][em04]
发表于 2005-9-2 19:01:00 | 显示全部楼层
好文章+精华就ok。
这样不用顶,在精华区就可以看到。

空小子抽空可以整理下下。
发表于 2005-9-3 17:52:00 | 显示全部楼层
嗯,又学到东西了...谢谢哦..[em04][em01]
 楼主| 发表于 2005-9-1 13:51:54 | 显示全部楼层 |阅读模式


网上有不少人想知道修改内核的方法,其实对内核做简单的修改并不难(难的是像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里的文件。
您需要登录后才可以回帖 登录 | 加入易码

本版积分规则

Archiver|手机版|小黑屋|EMAX Studio

GMT+8, 2024-4-16 19:14 , Processed in 0.010380 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表