2009年4月27日星期一

还是minicom好用

这几天在重新熟悉Ubuntu下用2410的开发板进行编程。

用下来的感受是windows下可以做的事情Ubuntu下完全可以做到,加上我们是在用嵌入式linux进行开发,所以完全应该在Ubuntu下进行,忘掉Windows吧~

回到主题,说说minicom。前面写过一篇文章,里面说minicom用不惯,用了它的一个前端——cutecom。这几天使用下来,发现cutecom的一个重要缺点——显示时乱码。这个问题其实不是它所独有的,在Windows下的DNW和一般的串口调试助手都会出现这个问题。在Windows下的解决方法是使用自带的超级终端,它不仅不会显示乱码,还可以彩色显示,带tab自动补全,甚至可以利用zmodem协议来传输小文件!

那么Ubuntu下有没有这样的好东西呢?当然有了,那就是minicom!minicom的使用其实很简单,先用"minicom -s"启动设置界面,将串口名,波特率,握手协议等设定好,保存为默认的df1,以后只要用"minicom -m -c on"打开就可以了,不用再进行串口设置。直接使用minicom和超级终端一样自带tab补全,也可以利用zmodem协议传输文件,只要在输入rc后按Alt+S,就会出现选择要传输文件的提示窗口,在其中用空格选择要传输的文件,最后按回车就可以开始传输了。传输过程中有进度提示,完毕后会自动回到minicom的命令行。唯一让我不爽的是对中文支持不好,不过暂时用的都是英文,按理说minicom应该也能支持中文的,好像是-8选项,但我还没倒腾出来,就先不说了,以后再来研究~

2009年4月24日星期五

在嵌入式开发中使用Qt

1. 编译PC上的Qt。这里的configure参数不是很重要,用默认的参数即可。这里为了调试方便加入-qvfb参数。
gunzip qt-x11-opensource-src-4.3.2.tar.gz
tar xvf qt-x11-opensource-src-4.3.2.tar
./configure -qvfb
make
make install

2. 交叉编译嵌入式Qtopia-core。这里的configure参数对于最终库文件的大小和支持的功能至关重要,一定要确保加入了足够的功能,同时不需要的功能一个也不要!
gunzip qtopia-core-opensource-src-4.3.2.tar.gz
tar xvf qtopia-core-opensource-src-4.3.2.tar

cd /tmp/qtopia-core-opensource-src-4.3.2
在qtopia-core-opensource-src-4.2.2/src/gui/embedded/qmouselinuxtp_qws.h加入
#define QT_QWS_IPAQ
#define QT_QWS_IPAQ_RAW
以上两个定义是为了支持触摸屏
在下面的configure参数中,-prefix指定了最后install的目录,
./configure -prefix /home/ace/Qtopiacore-4.3.2 -no-largefile -xplatform qws/linux-arm-g++ -no-libtiff -no-gif -no-libmng -no-openssl -no-cups -no-qdbus -embedded arm -little-endian -no-freetype -qt-gfx-linuxfb -no-qt3support -depths 8,16
make
make install

将编译好Qtopiacore-4.3.2下lib库放到根文件系统的Qtopiacore下 (注意根文件系统中的目录要和-prefix /home/ace/Qtopiacore-4.3.2一样否则下到arm板上运行程序的时候会报错说找不到字体)。
如果报错说找不到libstc++.so.6文件,可以将usr/local/arm/3.4.1/arm-linux/lib/libstc++.so.6复制到/home/ace/Qtopiacore-4.3.2/lib下(或者软链接)。
为了实现触摸屏的校准将/home/ace/Qtopiacore-4.3.2/examples/qtopiacore/mousecalibration/mousecalibration拷贝到根文件系统中,在文件系统的.bashrc文件中加入环境变量,并且export QWS_MOUSE_PROTO="LinuxTP:/dev/h3600_tsraw"。


3. 制作根文件系统及进行触摸屏校准。
将根文件系统下到arm板子上去,启动板子运行./mousecalibration -qws 进行触摸屏的校准。
校准完后 cat /etc/pointercal,将显示的数据记录下来, 然后新建一个空白文档将其命名为pointercal ,然后将记录的数据放到pointercal文档中。
rm -f /etc/pointercal
sudo cp -f 新建的pointercal /etc
sudo chown 500:244 /etc/pointercal
制作根文件系统,烧到arm板子。

4. Done!

2009年4月15日星期三

基于svm的驾驶决策建模

前文的基础上,将该方法进一步推广到整个驾驶过程的决策建模,除了解决了驾驶决策的问题,还能避免其他方法参数校准的难题。

对于整个驾驶过程决策建模,要考虑在不同的驾驶阶段,驾驶者关注的决策变量是不同的。如果对各种不同的驾驶阶段分别进行基于svm的建模,当然可以,但需要另外对不同阶段间的转换进行判断,而各个阶段之间的过渡往往是模糊的,不同阶段转换的会很复杂,工作量甚至可能超过svm建模!为避免这个问题,我们用一个包含所有阶段的决策变量的状态空间来进行建模。以基本的跟驰阶段为例,用四个决策变量就可以进行驾驶决策了,但这时要给出所有决策变量在该时刻的值,如果没有的话就设为某一固定值(一般取为0即可),这样驾驶者在不同驾驶阶段的转换逻辑也包含在了状态空间模型中,不用另外做判断的工作,只需在每一时刻给出所有决策变量的值,大大简化了驾驶决策的建模。

本方法的优点很明显,但是缺点和前文类似,都需要包含各种类型决策变量的数据来进行训练,数据质量的好坏直接影响了模型的有效性和完备性。虚拟驾驶数据采集系统是解决这一问题的最佳方案!

知道如何在blogger里发帖子了

最近在笔记本上的xp系统里往blogger发帖子老是连接不上,这就直接导致这个月都没在这里写什么东西!当然在本地还是写了一些的,CintaNote确实蛮方便的~

现在是在Ubuntu下,刚才偶尔打开一个blogger上自己以前写的帖子,发现速度还可以,就尝试着进入控制台发个帖子,发现速度还不错!以后就在Ubuntu下发blogger的帖子了~但是在本地写的东西放在CintaNote里,在xp系统下,拷贝到Ubuntu下不是很方便,要想个办法~