|The Good, the Bad and the Ugly|
| || |
|Apr 5, 2014|
|Inspired by the success stories of Dr Wang, nearly all Palmmicro early employees started their own businesses after leaving Centrality, SiRF or CSR.
Tang Rui was the latest one to join this unsuccessful road. After losing money for a whole year, he asked me one question last month: why Palm1 failed in the mp3 business?
I had already thought over the question a few years ago, so I can answer him immediately, it was because we wrote the software too bad.
My recent attempt to modify the Palm1/PA1688 software showed just how ugly the software structure was built by myself.
An user sent us several images of his eHOG and asked for upgrade software. I have never seen the device before.
Judging from the PCB I guess it is a mix of PA168P and PA168V.
I decided to add a new hardware type EHOG. It must have been a long time since the last time I made serious changes to PA1688 software, so I fully underestimated it.
I added VER_EHOG in inc\version.h and modified other related part in the same file and began to compile it with command line mk ehog sip cn.
Soon I found that I also need to add VER_EHOG related changes in inc\flags.h and ehog related changes in make_hex.bat.
After those changes, no compiler error was shown, but I still can not find the upgrade binary file ehog_sip_cn_169006.bin supposed to be generated after compilation.
After checking each steps, I found that I also need to add ehog to PALMTOOL\P_MERGE\p_merge.cpp and recompile bin\p_merge.exe.
The would be a huge task because p_merge.exe was compiled by VC6.
Considering the effort I made when I was converting AR1688 Windows tools from VC6 to VC2008, I decided to give up adding hardware type EHOG to PA1688 software.
As a typical bad software, p_merge.exe will fail to merge unknown hardware type binary file silently without any warning or error output. And it kept its hardware type text strings in .exe file instead of a configuration file.
Finally I managed to get an upgrade file pa168p_sip_cn_fxo_169006.bin by adding an OEM_FXO compile option and sent to the user.
To my dismay I was told that the new software did not work with his device.
In pursuit of profit there is no such thing as good and evil, generosity or deviousness; everything depends on chance, and not the best wins but the luckiest. -- Sergio Leone