标 题_ re_ 做嵌入式软件很郁闷啊
标 题: Re: 做嵌入式软件很郁闷啊
发信站: 水木社区 (Mon Dec 31 00:18:31 2007), 站内
恩,let’s 说说我到现在为止短暂的一年的嵌入式开发遇到的各种无比郁闷的问题.
1.他调试真tm痛苦.
一般只能printf就不说了.这不算啥.
有的平台可以接那个trace工具的,又叫ICE啥的,但是呢,人家厂商告诉你,
加断点只能停两秒,否则就报assert…断点只能停两秒有个鸟用.难道我要把
内存都dump出来.
2.他系统api给的貌似很像是那么回事,但是实现却很扯淡.
比如那么一套标准的文件操作.fopen,fread,fseek,fwrite.
一个文件不能同时只读的open两次这是很经常发生的,文档里不写也就罢了.
连续写文件,写到后面了,然后fseek回到前面接着写,他会把前面写乱掉….
一看就知道是驱动没整明白,只能按照一个个sector的写,前后来回搞就挂了,人
家系统那样你还改不了.
最扯的是我for循环fwrite一个buffer,fwrite之后我再buffer装新东西,然后
再循环.然后发现他fwrite是异步的,这很正常,没啥,有缓存嘛.然后没实现fflush,
这也没啥, 人家不乐意嘛.但是我这么写,由于他实际还没有写盘,我就把buffer的
内容换了,他写的东西就挂了—–原来他的缓存机制是裸用我外面的指针…结果
我还得搞个双buffer搞定.其实我到现在还没想通凭啥双buffer能搞定.
当一个程序员的任务是把每周或者每个月把同一个10w行的c代码移植到一个新平
台的话(不要笑,我干嵌入式12个月,确实摸了12个不同的平台,这很正常),他最关心
的事就是这个鸟平台的可调试性,一些系统api的确实能力.首先自然是要看文档,没
哪个文档能像MSDN或者linux的man page写的那么详细的,都是含含糊糊的说了一下
干啥.各种意外和失败情况是不可能知道的.一旦板子崩了,那就猜吧,板子崩了还好,
查到崩在哪总是容易的,就怕他不崩,那就查死人了.
面对那些各种奇怪的系统,如果你说,”我只要写一套ANSI C的代码,就不会这么困扰,
如果你移植这么痛苦,说明你不是一个好的程序员,你不懂ANSI C”,那我只能说,
你是神.
其实,我只是在阐述,如果是初哥,然后接触嵌入式这行,平时晚上在家修炼编码
内功的时候还是在winidows下或者linux下学习的好,买个板子在家搞是很浪费时间
的一件事.至于嵌入式本身有没有前途,他当然有钱途,要不我跑过来干啥.你写个
windows软件得写的多牛逼才能卖的出去.我好歹曾经算是有一定c++经验的windows
程序员.结果我现在觉得c++比起c来挺扯淡的(这个见仁见智),但是作为学习来说,
在一个高级点的平台练手,起码你不会为他底层操心,可以直奔主题学习你想学的
代码风格,算法, 设计,啥啥的,而不用在系统崩溃的时候,去猜,是tm你写崩溃的,
还是系统本身有问题.
如果新手还想学习系统底层的话.其实我觉得搞个虚拟机玩dos也比买个板子在
家烧强.
- 【 在 Dieken (风催草低 - 明月何尝不照人) 的大作中提到: 】
-
很烦文档写的不详细还要自己写测试例子测试,比如字符编码转换,
-
也不说明参数的含义是字节数还是字符数,返回值是字节数还是字符数,
-
父窗口退出了子窗口不自动关掉,文档没说明这个,试验出来的行为,
-
……………….