这段时间段伏枥在折腾.NET Micro Framework的时候,终于体会到什么叫举步维艰了。因为这玩意没有操作系统做支撑,直接是操作硬件,有时候出问题了,根本就不知道是如何引起的。
比如说,在移植的过程中,数据存储和代码运行在内存的区域是移植者自己设定并且在编译完成后是固定的。这看起来是没有什么问题,可实际上在移植过程中,经常发现存储空间的地址将代码空间给覆盖了。这种情况在基于操作系统的开发中即使遇到,也不会让程序员摸不着头,因为系统会直接报错;可对于移植来说,只要是地址正确,就能修改成功,根本就没有任何防护。这么一来就会有一个很严重的问题,数据存储更改了代码空间的数值,而CPU却依然将其作为代码运行。这种结果不多说也知道严重性,幸运的话直接是hard fault,不幸的话则是执行莫名其妙的代码让自己摸不着头脑。
以前在学习操作系统原理的时候,对于内存空间分布这些概念是懵懵懂懂,即使是后来能够游刃有余地进行WinCE的开发,段伏枥也是一知半解。可这有什么办法呢?操作系统已经将很多事情给包揽了,程序员根本就不用考虑那么多,所以根本就不知道其技术的存在。举个最简单的例子,程序是放在硬盘的,点击运行的时候它会在哪里呢?CPU是在硬盘获取执行代码,还是在内存中?这个简单的问题,很可能很多写了多年的程序的老鸟也未必能答对,因为在实际中根本就不用考虑这问题啊!可这简单的事情,在和硬件直接打交道的移植中就没那么简单了:程序现在是在NAND FLASH中,如何将它放到内存中去执行呢?如果是放到内存中,那应该是放到哪里呢?而在放之前,又要做什么准备工作呢?诸如种种繁杂之事,都是要由程序员自己去实现,自己去担心。
直到这时候,段伏枥才感觉到自己是在做嵌入式开发。回想以前,无论写了多少WinCE的应用程序,严格意义上来说这都不算嵌入式开发:除了挂着WinCE这个旗号以外,它又有多少和桌面Windows截然不同的地方?即使是后来做BSP的底层驱动,虽然有了和硬件直接打交道的地方,但实际大部分还是基于微软的系统框架,只需要依葫芦画瓢即可,也不能算是真正的嵌入式开发,最多就是个伪嵌入式。
可做.NET Micro Framework的移植就不同了,没有任何操作系统的因素在做支撑,所有的一切都程序程序员来操心。这自然是非常繁琐,但带给段伏枥的收获是巨大的。很多以前半知半解的概念,此时却是豁然开朗,再无半分的不解。可以这么说,这段时间的移植工作所获得的知识价值,比这两年的总和还要多。
工作上有收获,生活上亦是有改变。刘思敏自从向公司提出离职申请以来已经过了一个月,前几天的时候已经确定正式离职。不过刘思敏倒没有急着赶赴北海和伍定轩见面,而是利用这难得的时间,好好休息一把,将深圳没玩过的地方走个便。因为按照刘思敏的说法,这辈子会不会来深圳,她自己都不知道,那何不现在痛痛快快轻松一下呢?
在QQ上,段伏枥不怀好意地问伍定轩:“刘思敏去北海的话,你打算让她住哪里啊?”
伍定轩回道:“现在打算是先让她在外面租房,因为现在住家里不合适。”
难得的机会,段伏枥自然要调侃:“这倒也是,在家确实不方便,那个的时候也不敢叫太大声。”
“……滚!”
“刘思敏现在已经打算跑到北海了,话说你什么时候打算给她一个交待?”
伍定轩倒也不掩饰:“明年吧!要结婚总要有房子吧?我买的房子明年才能交房,等交了房才结婚。”
不能不说,房子一直一来都是国人的一个心结。不论有钱的,还是没钱的,都想给自己的家庭弄一套房。这种心态没错,毕竟谁不想有一个自己的窝啊?要怪就怪那该死的开发商,这房价涨得跟卫星上天似的,国人撒开腿丫子跑也赶不上。胳膊拧不过大腿,这房子再贵也得买啊!没钱那该怎么办?砸锅卖铁咯!可怜天下父母心,好不容易付了高额的学费让自己的孩子念完了大学,本以为这下子有了盼头,可没想到后面还有买房子这一出。
不知道别人是怎么想的,反正段伏枥觉得买房子如同剥了父母一层皮一般。可没办法啊,自己工作才那么几年,哪有那么多钱付首付?如果非要自己攒,等自己攒够了买现在首付的钱,却已经付不起那时候的首付。既然如此,那不如现在咬咬牙吧!
幸运的是,段伏枥还不必太用力咬牙,因为之前在北海买的房子顺利脱手,总共卖了四十多万。这笔钱在深圳全款买个套间是不可能的,但勉强还能付个首付。有这笔巨款在手,段伏枥便开始在深圳看起房来。
段伏枥和徐雅思不是那种好高骛远的人,看房子根本就没去搭理新房。因为新房的价格普遍很高,即使勉强付完首付,后续的月供也会让两人压得透不过气来。于是,二手房便成了两人的目标。不过这房子毕竟是件大事,虽然这四十万在很多人眼里算不得什么,但段伏枥知道这差不多是父母所有的家当,不能不慎重,所以这段时间看了不少房,但还是没有下定买的决心。
两周之后,刘思敏终于要踏上北海的旅途了。不用说,段伏枥和徐雅思肯定是要到银湖汽车站送行。不过这次送别并没有太多离别的味道,更像是朋友要出门旅行的短暂告别而已。或许在大家的心里,刘思敏去了北海,并不意味着这辈子无法再见,因为只要段伏枥和伍定轩的根还在,那么大家总有见面的一天。
刘思敏走了,同事小蓝也要走了。本来武总打算在小蓝走之前,狠狠压榨他一把,让他到微永芯去盯着对方干活。小蓝倒也干脆,去就去呗,不过到点了就准时下班。为此武总很恼火:“唉,你那工作态度不行啊,怎么别人没下班,你就走了呢?我这车机要是完不成该怎么办?”
小蓝一副死猪不怕开水烫的模样:“机器完成和不完成和我有什么关系吗?难道做好了你还会给我奖金?”
这么一句直白的话,让武总顿时觉得语塞。一旁的段伏枥听了,心里暗暗叫好。
武总见再也无法像以前一样使唤小蓝,只好把目标转移到小黑的身上。可怜的小黑,又再次过起了和当时刘工他们合作的类似日子:每天跑到微永芯去盯着。所幸的是,微永芯的工程师没有像当时的刘工那么拼命,即使加班也是七点半左右就走了,所以小黑倒也不至于弄到深更半夜。
只不过这么一来,武总又不满了:“他们事情又没做完,你怎么能让他们回家呢?”
小黑也不甘示弱:“我只是一个小兵,他们要回家,我怎么能拦得住?又不是我给他们发工资!”
就这么一句话,把武总给顶了回去。武总想了想,觉得小黑说的似乎也有道理,便直接给微永芯的老板打了个电话,想让他给自己的员工施压。可参与武总这案子的工程师也不是省油的灯,立马反驳,说自己之所以那么早下班,完全是因为自己的事情已经做完了,武总所说的那些是他后来加的需求;如果不信的话,可以让武总将需求罗列出来,看看哪些没有做到的。
这么一来,就完全击中了武总的软肋。需求列表?武总自己都不知道自己要做的产品是咋样,让他怎么罗列?武总所知道的,就是等人家将东西做出来了,然后指出哪些不好哪里不对,让人家再根据自己的要求改来改去。
武总在微永芯碰了钉子,满腔的怒火只好往小黑发泄:“反正我不管,这是你的事情!不管你用什么方法,你要逼着他们将这事情搞完!如果搞不完,那就扣你工资!”
武总这完全就是毫无道理的迁怒了。试想一下,你作为领导都无法使唤对方公司的工程师,你让自己公司一个小小的员工,如何去要求对方?小黑自然觉得万分委屈,可他也只能忍着。因为小黑知道,他的技术还处于非常菜鸟的阶段,根本做不到像小蓝那样想跳就跳。
其实作为老大,段伏枥也是深知小黑的弱点,所以平时也会提醒小黑,让他多看看BSP的代码,多学一点东西,对以后有好处。可是小黑在程序方面,相比小蓝来说还是有所欠缺,虽然有段伏枥的鞭笞,但依然还是进展缓慢。
虽然在程序方面弱了点,但小黑在探究消息的嗅觉上还是挺灵敏的。在和微永芯的工程师聊天中得知,这次微永芯不仅帮武总从无到有设计方案,并且相关的物料钱也是他们出的。按武总的性格,这倒并不是一件很意外的事。但让段伏枥觉得有点蹊跷的是,在平时早上和武总的聊天中得知,其实这款车机是给乐航设计的,并且为此乐航还付给了武总一笔不菲的费用做开发费。这开发费既然没有用到物料上,那也绝对不会白白给了微永芯,那这钱哪去了呢?更为让段伏枥觉得奇怪的是,这款车机所有的一切都是由微永芯包办的,而安勒斯在此没有任何参与的余地,那为何微永芯还要帮武总进行开发,而不是索性自己单干呢?
PS:在这里先给大家道个歉了,因为下周要出差,要到一个鸟不拉屎,兔不生蛋的地方,网络自然更是不可能,并且到时候估计连坐下来静静敲文字的时间都没有,所以下周只能先暂时停止一周,实在抱歉!等回来后,一定第一时间通知大家,在此norains先向大家谢罪了~
- 前言
- 《那些年啊,那些事——一个程序员的奋斗史》——01
- 《那些年啊,那些事——一个程序员的奋斗史》——02
- 《那些年啊,那些事——一个程序员的奋斗史》——03
- 《那些年啊,那些事——一个程序员的奋斗史》——04
- 《那些年啊,那些事——一个程序员的奋斗史》——05
- 《那些年啊,那些事——一个程序员的奋斗史》——06
- 《那些年啊,那些事——一个程序员的奋斗史》——07
- 《那些年啊,那些事——一个程序员的奋斗史》——08
- 《那些年啊,那些事——一个程序员的奋斗史》——09
- 《那些年啊,那些事——一个程序员的奋斗史》——10
- 《那些年啊,那些事——一个程序员的奋斗史》——11
- 《那些年啊,那些事——一个程序员的奋斗史》——12
- 《那些年啊,那些事——一个程序员的奋斗史》——13
- 《那些年啊,那些事——一个程序员的奋斗史》——14
- 《那些年啊,那些事——一个程序员的奋斗史》——15
- 《那些年啊,那些事——一个程序员的奋斗史》——16
- 《那些年啊,那些事——一个程序员的奋斗史》——17
- 《那些年啊,那些事——一个程序员的奋斗史》——18
- 《那些年啊,那些事——一个程序员的奋斗史》——19
- 《那些年啊,那些事——一个程序员的奋斗史》——20
- 《那些年啊,那些事——一个程序员的奋斗史》——21
- 《那些年啊,那些事——一个程序员的奋斗史》——22
- 《那些年啊,那些事——一个程序员的奋斗史》——23
- 《那些年啊,那些事——一个程序员的奋斗史》——24
- 《那些年啊,那些事——一个程序员的奋斗史》——25
- 《那些年啊,那些事——一个程序员的奋斗史》——26
- 《那些年啊,那些事——一个程序员的奋斗史》——27
- 《那些年啊,那些事——一个程序员的奋斗史》——28
- 《那些年啊,那些事——一个程序员的奋斗史》——29
- 《那些年啊,那些事——一个程序员的奋斗史》——30
- 《那些年啊,那些事——一个程序员的奋斗史》——31
- 《那些年啊,那些事——一个程序员的奋斗史》——32
- 《那些年啊,那些事——一个程序员的奋斗史》——33
- 《那些年啊,那些事——一个程序员的奋斗史》——34
- 《那些年啊,那些事——一个程序员的奋斗史》——35
- 《那些年啊,那些事——一个程序员的奋斗史》——36
- 《那些年啊,那些事——一个程序员的奋斗史》——37
- 《那些年啊,那些事——一个程序员的奋斗史》——38
- 《那些年啊,那些事——一个程序员的奋斗史》——39
- 《那些年啊,那些事——一个程序员的奋斗史》——40
- 《那些年啊,那些事——一个程序员的奋斗史》——41
- 《那些年啊,那些事——一个程序员的奋斗史》——42
- 《那些年啊,那些事——一个程序员的奋斗史》——43
- 《那些年啊,那些事——一个程序员的奋斗史》——44
- 《那些年啊,那些事——一个程序员的奋斗史》——45
- 《那些年啊,那些事——一个程序员的奋斗史》——46
- 《那些年啊,那些事——一个程序员的奋斗史》——47
- 《那些年啊,那些事——一个程序员的奋斗史》——48
- 《那些年啊,那些事——一个程序员的奋斗史》——49
- 《那些年啊,那些事——一个程序员的奋斗史》——50
- 《那些年啊,那些事——一个程序员的奋斗史》——51
- 《那些年啊,那些事——一个程序员的奋斗史》——52
- 《那些年啊,那些事——一个程序员的奋斗史》——53
- 《那些年啊,那些事——一个程序员的奋斗史》——54
- 《那些年啊,那些事——一个程序员的奋斗史》——55
- 《那些年啊,那些事——一个程序员的奋斗史》——56
- 《那些年啊,那些事——一个程序员的奋斗史》——57
- 《那些年啊,那些事——一个程序员的奋斗史》——58
- 《那些年啊,那些事——一个程序员的奋斗史》——59
- 《那些年啊,那些事——一个程序员的奋斗史》——60
- 《那些年啊,那些事——一个程序员的奋斗史》——61
- 《那些年啊,那些事——一个程序员的奋斗史》——62
- 《那些年啊,那些事——一个程序员的奋斗史》——63
- 《那些年啊,那些事——一个程序员的奋斗史》——64
- 《那些年啊,那些事——一个程序员的奋斗史》——65
- 《那些年啊,那些事——一个程序员的奋斗史》——66
- 《那些年啊,那些事——一个程序员的奋斗史》——67
- 《那些年啊,那些事——一个程序员的奋斗史》——68
- 《那些年啊,那些事——一个程序员的奋斗史》——69
- 《那些年啊,那些事——一个程序员的奋斗史》——70
- 《那些年啊,那些事——一个程序员的奋斗史》——71
- 《那些年啊,那些事——一个程序员的奋斗史》——72
- 《那些年啊,那些事——一个程序员的奋斗史》——73
- 《那些年啊,那些事——一个程序员的奋斗史》——74
- 《那些年啊,那些事——一个程序员的奋斗史》——75
- 《那些年啊,那些事——一个程序员的奋斗史》——76
- 《那些年啊,那些事——一个程序员的奋斗史》——77
- 《那些年啊,那些事——一个程序员的奋斗史》——78
- 《那些年啊,那些事——一个程序员的奋斗史》——79
- 《那些年啊,那些事——一个程序员的奋斗史》——80
- 《那些年啊,那些事——一个程序员的奋斗史》——81
- 《那些年啊,那些事——一个程序员的奋斗史》——82
- 《那些年啊,那些事——一个程序员的奋斗史》——83
- 《那些年啊,那些事——一个程序员的奋斗史》——84
- 《那些年啊,那些事——一个程序员的奋斗史》——85
- 《那些年啊,那些事——一个程序员的奋斗史》——86
- 《那些年啊,那些事——一个程序员的奋斗史》——87
- 《那些年啊,那些事——一个程序员的奋斗史》——88
- 《那些年啊,那些事——一个程序员的奋斗史》——89
- 《那些年啊,那些事——一个程序员的奋斗史》——90
- 《那些年啊,那些事——一个程序员的奋斗史》——91
- 《那些年啊,那些事——一个程序员的奋斗史》——92
- 《那些年啊,那些事——一个程序员的奋斗史》——93
- 《那些年啊,那些事——一个程序员的奋斗史》——94
- 《那些年啊,那些事——一个程序员的奋斗史》——95
- 《那些年啊,那些事——一个程序员的奋斗史》——96
- 《那些年啊,那些事——一个程序员的奋斗史》——97
- 《那些年啊,那些事——一个程序员的奋斗史》——98
- 《那些年啊,那些事——一个程序员的奋斗史》——99
- 《那些年啊,那些事——一个程序员的奋斗史》——100
- 《那些年啊,那些事——一个程序员的奋斗史》——101
- 《那些年啊,那些事——一个程序员的奋斗史》——102
- 《那些年啊,那些事——一个程序员的奋斗史》——103
- 《那些年啊,那些事——一个程序员的奋斗史》——104
- 《那些年啊,那些事——一个程序员的奋斗史》——105
- 《那些年啊,那些事——一个程序员的奋斗史》——106
- 《那些年啊,那些事——一个程序员的奋斗史》——107
- 《那些年啊,那些事——一个程序员的奋斗史》——108
- 《那些年啊,那些事——一个程序员的奋斗史》——109
- 《那些年啊,那些事——一个程序员的奋斗史》——110
- 《那些年啊,那些事——一个程序员的奋斗史》——111
- 《那些年啊,那些事——一个程序员的奋斗史》——112
- 《那些年啊,那些事——一个程序员的奋斗史》——113
- 《那些年啊,那些事——一个程序员的奋斗史》——114
- 《那些年啊,那些事——一个程序员的奋斗史》——115
- 《那些年啊,那些事——一个程序员的奋斗史》——116
- 《那些年啊,那些事——一个程序员的奋斗史》——117
- 《那些年啊,那些事——一个程序员的奋斗史》——118
- 《那些年啊,那些事——一个程序员的奋斗史》——119
- 《那些年啊,那些事——一个程序员的奋斗史》——120
- 《那些年啊,那些事——一个程序员的奋斗史》——121
- 《那些年啊,那些事——一个程序员的奋斗史》——122
- 《那些年啊,那些事——一个程序员的奋斗史》——123
- 《那些年啊,那些事——一个程序员的奋斗史》——124
- 《那些年啊,那些事——一个程序员的奋斗史》——125
- 《那些年啊,那些事——一个程序员的奋斗史》——126
- 《那些年啊,那些事——一个程序员的奋斗史》——127
- 《那些年啊,那些事——一个程序员的奋斗史》——128 (终章)