最近在做一个嵌入式开发项目,从设备选型,开发语言到软件开发,我一人全包了。
此设备型号是S324C01,平台是linux,uname -a信息如下
Linux Industech 2.6.21.5-cfs-v19 #177 Sat Nov 6 13:18:50 CST 2010 armv5tejl unknown
这款处理器就是armel也就是arm-eabi,debain官网上有关于此款处理器的qemu虚拟arm-linux镜像,直接可以用qemu模拟一个armel出来。
可以参看我的几篇文章
搭建qemu开发环境
ubuntu 10.10 下为 qemu-arm linux配置网络(双网卡)
供货商提供了完整的gcc开发包,按说我也得用gcc来开发的,可是本人对c/c++不熟,所以考虑用别的语言开发,不过换语言也是有几个条件的
1.操作系统不能是固化在rom里的,否则就没戏
2.底层库以.so的形式封装
3.存储器支持通过串口线/网络写数据,最好不要烧录,否则调试起来很麻烦
4.当然还少不了供货商的支持,这点尤其重要
只要满足前2个条件,就可以换语言了。
由于设备是我选的,在设备选型时就有过这方面的考虑,找来找去终于找到了非常合适的设备(商业机密,别问我是啥型号,自己打听去)
除了c/c++外,可以供选择的语言有好多
java
python
ruby
lua
等等
java比较合适,虚拟机可以适用phoneme advance,debain官网还提供了openjdk for armel,可以直接下载使用。个人感觉还是openjdk更合适一点,毕竟phoneme是专门针对手机设备开发的,我们选的嵌入式未必符合jsr标准。但是java必须用jni/jna调用厂家提供的.so文件,虽然jna能直接调用.so但是我写jni/jna都写伤了,这辈子都不想再用这玩意了,考虑到巨大的风险,还是放弃了。
python挺合适,自带的ctypes库调用.so非常简单,只是性能略慢,不过考虑到厂家底层sdk是用c开发的,python只是前端表现和业务逻辑,所以还可以接受。好像网上还有关于python和java的性能测评,貌似python更快一点。
ruby现阶段代码都是明文,ruby虚拟机直接执行明文代码,产品没有丝毫的安全性可言,如何保护企业核心机密。据说新版本的ruby支持编译字节码,但是选型时仍然在alpha阶段,很可惜,ruby远程调试做的和java一样棒。
lua不熟,也是解释执行的脚本语言,学习资料不如python,还是python更好一点。
综合以上考虑,最后选中了python作为嵌入式开发语言。
最棒的是debain 提供的armel-linux里有完整的python2,python3虚拟机,直接下载拷贝就能用,省去了麻烦的编译过程。
未完待续...
