接触嵌入式已经有两个多月了,这段时间一直在学习嵌入式开发的基础知识。知道了如何用手头的这款i.MX-6开发板,如何安装配置虚拟机,如何搭建交叉编译环境,如何把编译好的程序用adb装到开发板上……等等。
现在将开发中遇到的问题以及一些经验做一个小结:
1. 虚拟机下挂载共享文件夹:
mount -t vmhgfs .host:/ /mnt/hgfs
2. ADB使用技巧:
- 在使用adb之前,先要开启android设备上的调试功能)
- adb devices //查看连接的设备
- adb push * ** //*代表要上传的文件,**代表目标文件夹
- adb shell //进入设备调试
- 一开始进入的时候没有读写权限,用su进入root,再用“chmod 777 *”更改目标的权限。
3. Linux下的串口编程步骤:
- 打开串口fd = open(port, O_RDWR | O_NOCTTY | O_NDELAY);
- 串口初始化
- 读/写串口
- 关闭串口close(fd);
4. 在用Eclipse进行安卓开发时,switch中出现“case expressions must be constant expressions”的报错,其解决办法是:
检查项目的Properties->Android选项中的is Library是否选中,若已经选中,则取消勾选,然后应用修改。最后clean即可。
5. 在编译针对本开发板的程序时需要注意编译命令:
arm-none-linux-gnueabi-gcc-4.4.1 -o * *.c -static
- 一定要注意加上静态编译的命令,否则在开发板上运行时会出现“No such file or directory”的报错
6. uboot设置流程(本开发板):
- setenv bootsystem android //设置为安卓启动
- setenv lcdtype 9.7 //设置显示屏尺寸
- saveenv //保存环境
- reset //重启
7. 有一天出现了开发板与主机无法通信的状况,开发板充当的是客户端,主机充当的是服务端,测试程序是简单的socket聊天程序。
当时一直在想是不是程序出错,后来发现问题出在网络上。我主机是用的ubuntu虚拟机,其网络地址是虚拟的,开发板无法访问到,所以一直出现connection time out的情况。
当我把服务器程序移植到我原本的主机(win10)上时,再进行测试,通信成功。