更换内存芯片的过程,紧张而又漫长。
赵新用一把特制的镊子,夹着从香江带回来的,那批印着“HM”字样的高速静态内存颗粒,屏住呼吸,小心翼翼地对准电路板上空出来的焊盘。
烙铁的尖端,带着一缕青烟,精准地点在引脚上。
滋的一声轻响,焊锡融化,像一滴银色的水珠,瞬间将芯片的引脚和电路板连接在一起。
整个计算中心,格外安静。
所有人都围在测试台周围,看着赵新操作。
换上新的内存芯片,只是第一步。
刘涛那边,也立刻带着软件组的人,修改了引导程序的代码。
他们在几个关键的读写操作后面,硬生生插入了几个NOP空指令,用软件的方式,强行制造出几个时钟周期的等待,给硬件反应留出足够的时间。
“好了!”
当赵新焊完最后一颗芯片,刘涛也把新烧录好的插回了插槽。
两个小组的负责人对视了一眼,都从对方的眼睛里看到了紧张和期待。
“通电!”赵新哑着嗓子喊了一声。
开关按下。
电源风扇的声音,在寂静的房间里显得格外清晰。
所有人的视线,都死死地钉在那台黑白电视机改装的显示器上。
一秒。
两秒。
屏幕依旧是一片漆黑。
刚刚因为找到问题而燃起的一点希望,似乎又要被这无情的黑暗吞噬。
就在一个年轻技术员忍不住要叹气的时候,屏幕的中央,毫无征兆地闪了一下!
紧接着,一个稳定、清晰的光标,在屏幕的左上角出现,开始有节奏地闪烁。
“亮了!亮了!”
不知是谁先喊了一声,整个实验室瞬间爆发出巨大的欢呼声。
几个年轻的技术员,激动得直接抱在了一起,又蹦又跳。
赵新和刘涛两人激动万分。
成了!
陆总工的方法是对的!
然而,这股喜悦并没有持续太久。
光标闪烁了大概五六下之后,就像被一只无形的手扼住了喉咙,猛地一顿,然后就那么僵死在了屏幕上。
任凭他们怎么敲击键盘,怎么重启,结果都一样。
系统,在启动过程中的某一个环节,又一次崩溃了。
刚刚还沸腾的实验室,温度骤降。
巨大的落差,让所有人都有些发懵。
“怎么回事?又卡在哪了?”
“这次比上次进了一步,至少光标出来了,说明CPU和显存的通信是通的。”
“可它死在哪一步了?”
如果说之前的失败,是连门都找不到,那么现在,他们就是推开了一扇门,却发现后面是一条深不见底、漆黑一片的走廊。
“继续用老办法。”
陆先进的声音打破了沉默。
他不知道什么时候已经站在了人群后面。
“既然它往前走了一步,就说明我们的方向是对的。
现在,把这一步之后的所有指令,所有信号,再像之前一样,一个一个地过,一个一个地对。”
没有人再有异议。
虽然所有人都知道,这意味着新一轮更加繁重、更加熬人的苦战,但那短暂亮起的屏幕,已经给了他们坚持下去的理由。
接下来的两个星期,整个研发楼依旧日夜不歇。
计算中心的大白墙上,贴满了密密麻麻的图表。
左边是硬件组画的信号时序图,上面用红蓝铅笔标注着每一个纳秒内电平的变化。
右边是软件组写的汇编指令流程图,每一个分支,每一个跳转,都分析得清清楚楚。
“时钟发生器8284A输出正常!”
“总线控制器8288A指令周期匹配!”
“中断控制器8259A初始化响应正常!”
……
他们又找到了两个潜藏极深的BUG。
一个是地址译码逻辑上的微小瑕疵,导致内存的高位地址偶尔会和I/O端口的地址发生重叠,引起冲突。
另一个,是刘涛在编写中断服务程序时,对一个标志位的入栈保护做得不够周全,导致在中断返回后,有极小的概率会破坏原程序的执行环境。
每一个问题的发现和解决,都让整个团队兴奋不已。
电路板改了一版又一版,引导程序重写了七八个版本。
那台黑白电视机上的光标,从一开始的僵死,到后来能坚持闪烁十几秒,再到后来,屏幕上甚至能打出一行“Welcome to Qihang OS”的字符。
每一点进步,都像是在漆黑的隧道里往前多挖了一米,虽然依旧看不到光,但所有人都坚信,出口就在前方。
可偏偏,就是到不了出口。
最新的问题是,在显示出欢迎字符后,系统会尝试从软盘驱动器加载后续的操作系统内核。
也就在那一刻,整个系统必然崩溃。
这一次,问题变得比以往任何时候都诡异。
“没道理啊!”
赵新顶着两个黑眼圈,手里捏着一张软盘控制器芯片的电路图。
“FDC控制器的所有信号我都测了,完全符合手册规范!CPU给它发指令,它也能正确响应!”
“我这边也一样!”
刘涛的嗓子已经哑得说不出话,只能用笔在纸上写。
“驱动代码我查了不下二十遍,每一个寄存器的操作,每一个字节的读写,都是照着Intel的官方例程来的,一个字母都没错!”
两个最核心的负责人,再一次陷入了僵局。
他们把陆先进教的办法用到了极致,可这一次,笨办法似乎也失灵了。
因为当他们试图用逻辑分析仪去捕捉系统崩溃瞬间的信号时,发现每一次崩溃时,总线上的状态都不一样。
无端的出现了各种问题,CPU在尝试读取一个错误的内存地址。
DMA控制器发出了一次莫名其妙的传输请求。
整个总线都陷入了死锁,所有信号都变成了无意义的噪声。
问题,就像一个幽灵,在庞大而复杂的系统里四处游荡,根本抓不住它的尾巴。
整个团队的士气,跌到了谷底。
连续一个多月的鏖战,所有人都被榨干了。
这不是身体上的疲惫,而是一种面对未知和无序,从心底里生出的无力感。
……
这天深夜,韩栋推门走进了计算中心。
屋子里一股浓重的焦躁气息扑面而来。
看到韩栋进来,原本还在激烈争论的赵新和刘涛,都停了下来,像两个做错了事的孩子。
韩栋没有说话,他走到那面贴满图表的墙壁前,仔细地看着。
他看得非常认真,从硬件的时序图,到软件的流程图,一行一行,一个细节都不放过。
韩栋看了十几分钟,没有说话。
赵新和刘涛站在他身后,心里七上八下。
他们知道韩总看得懂这些图表,也知道韩总能看出问题所在。
可越是这样,他们越紧张。
“你们觉得,问题出在哪?”
韩栋转过身,声音很平静。
“我们怀疑是软盘控制器的时序问题。”
刘涛先开口,有些不确定的说道。
“每次系统试图从软盘读取数据的时候,就必然崩溃。但我们用逻辑分析仪测试,FDC的信号完全正常。”
“硬件上我也检查了无数遍。”赵新接着说。
“电路板的走线,芯片的焊接,电源的纹波,全都没问题。可就是到了那一步,系统就死给你看。”
韩栋点了点头,他走到测试台前,看着那台已经关机的设备。
“开机。”
赵新按下电源开关。
熟悉的启动过程重新开始。
光标闪烁,欢迎字符出现,然后系统开始尝试读取软盘。
几秒钟后,屏幕定格,系统再次崩溃。
韩栋没有看屏幕,他的注意力全在旁边那台逻辑分析仪上。
密密麻麻的信号波形在屏幕上跳动,每一条线都代表着一个引脚的电平变化。
“你们测试的时候,用的是哪个探针?”韩栋指着分析仪。
“这个。”赵新指了指夹在CPU地址总线上的一排探针。
“我们主要监控CPU和FDC之间的通信。”
“电源呢?”